公司有要求,所有MCU必須支持升級(jí),,CH32V203c8t6我APP中用的USB庫(kù),使用U盤讀取文件給另一個(gè)MCU升級(jí),,所以APP已經(jīng)占用了53K的rom,,現(xiàn)在要使用bootloader用USB讀取U盤給ch32v203c8t6自己升級(jí),,但是因?yàn)橐肬SB庫(kù),,也會(huì)占用20K的rom,,ch32v203c8t6只有64K的rom,,使用正常的bootloader+app的雙區(qū)方式20K+53K大于64K不行,,,rom不夠用,因?yàn)榧虞d了兩次USB庫(kù),現(xiàn)在的想法只能使用一次USB庫(kù),,用跳轉(zhuǎn)到地址執(zhí)行,請(qǐng)問有沒有這方面的例程???中斷向量表重定向
您好,根據(jù)你的應(yīng)用情況,可將MCU的FLASH分為三塊區(qū)域:FLASH1、FLASH2、FLASH3,其中IAP程序放在FLASH1區(qū)域,APP程序放在FLASH2區(qū)域,IAP和APP共用的USB庫(kù)放在FLASH3區(qū)域,其中IAP和APP程序在使用時(shí)都會(huì)用到FLASH3區(qū)域的USB庫(kù)文件,整體就是這么一個(gè)思路。附件為參考該模式寫的IAP和APP例程,可以簡(jiǎn)單參考一下,主要需要注意一下ld文件中關(guān)于FLASH的分配。后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通
這個(gè)方法如何保證USB庫(kù)在IAP編譯的時(shí)候跟APP編譯的時(shí)候,函數(shù)的入口地址是一樣的?按理說鏈接的時(shí)候只保留用到的函數(shù)。IAP跟APP可能使用的不一樣。
搞不定啊,,你給我的代碼直接編譯都通不過,,
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 12K
FLASH1 (rx) : ORIGIN = 0x0000D800, LENGTH = 10K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
HOST_IAP.elf section `.text' will not fit in region `FLASH',,,,,,,,,
HOST_IAP.elf section `.text' will not fit in region `FLASH1',,,,,,,,
region `FLASH' overflowed by 460 bytes,,,,,,,,,
region `FLASH1' overflowed by 8892 bytes
沒有類似于IAR的那種分散鏈接嗎?兩個(gè)向量表,,可以把bootloader與app,,做成一個(gè)工程,,你這個(gè)方法,,感覺不靠譜啊,,,,,
編譯通過了,,,我再研究研究,,您也幫忙看看,,,那種兩個(gè)向量表,,可以把bootloader與app,,做成一個(gè)工程的方法
好了,不需要折騰了,,我優(yōu)化了一下編譯文件,沒用的文件不編譯了,,,flash空間騰出了20KB,,謝謝了
您好,關(guān)于提供的例程,后面測(cè)試了一下,確實(shí)存在一些問題,針對(duì)這類應(yīng)用,這邊會(huì)再看看是否有好的解決方法