CH32V307怎么將程序加載到外部SRAM運(yùn)行,求例程

你好,沁恒的工程師!

我遇到以下問題:

1,MCU是CH32V307VC ,通過FSMC外掛IS62WV51216的1MB SRAM;

注:外部SRAM、SD卡等硬件已經(jīng)調(diào)試完成,并測試驗(yàn)證過沒有問題。

2,我先燒錄一個(gè)固件到片內(nèi)FLASH:從SD卡完成二級程序讀取到外部SRAM地址0x60000000,這樣把整個(gè)二級固件加載到外部SRAM了;然后設(shè)置軟件復(fù)位,在void SW_Handler(void);中調(diào)用:

__asm("li a6, 0x60000000");

__asm("jr a6");

程序直接進(jìn)入void HardFault_Handler(void);異常了;

3,但是二級固件的.ld鏈接文件,.s啟動(dòng)文件、中斷及中斷向量表等有什么需要注意的,能給一個(gè)這種應(yīng)用的例程嗎?


郵箱:個(gè)人信息保護(hù),已隱藏

不勝感激!

您好,按照我的理解,“我先燒錄一個(gè)固件到片內(nèi)FLASH”,該固件是不是可以認(rèn)為是一個(gè)IAP程序;“從SD卡完成二級程序讀取到外部SRAM地址0x60000000,這樣把整個(gè)二級固件加載到外部SRAM了”,該段描述中所說的二級程序是不是可以認(rèn)為是一個(gè)APP固件,相當(dāng)于一開始你將APP固件放在SD卡,然后通過IAP固件搬運(yùn)到外部SRAM,然后通過IAP跳轉(zhuǎn)去執(zhí)行。建議你可以按照下方法試一下:

1、將APP固件(二級固件)的ld文件中的FLASH的起始地址設(shè)置為0x60000000,具體長度大小根據(jù)你的實(shí)際大小改為1M,如下圖1;

2、在啟動(dòng)文件中添加一下以下跳轉(zhuǎn),如下圖2;

目前沒有相關(guān)例程,下帖是關(guān)于ld文件的介紹說明,可以看一下。后續(xù)問題可通過郵箱(lzs@wch.cn)和我溝通。

https://www.cnblogs.com/wahahahehehe/p/15149960.html

image.png

圖1

image.png

圖2



第一個(gè)程序相當(dāng)于IAP程序,二級程序相當(dāng)于APP程序(是輸出的bin文件放到SD卡的)。

是的,我的流程與你理解的是一樣的:

您好,按照我的理解,“我先燒錄一個(gè)固件到片內(nèi)FLASH”,該固件是不是可以認(rèn)為是一個(gè)IAP程序;“從SD卡完成二級程序讀取到外部SRAM地址0x60000000,這樣把整個(gè)二級固件加載到外部SRAM了”,該段描述中所說的二級程序是不是可以認(rèn)為是一個(gè)APP固件,相當(dāng)于一開始你將APP固件放在SD卡,然后通過IAP固件搬運(yùn)到外部SRAM,然后通過IAP跳轉(zhuǎn)去執(zhí)行。


我按你的思路試一下,謝謝!


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频