CH32V307怎么将程序加载到外部SRAM运行,求例程

你好,沁恒的工程师!

我遇到以下问题:

1,MCU是CH32V307VC ,通过FSMC外挂IS62WV51216的1MB SRAM;

注:外部SRAM、SD卡等硬件已经调试完成,并测试验证过没有问题。

2,我先烧录一个固件到片内FLASH:从SD卡完成二级程序读取到外部SRAM地址0x60000000,这样把整个二级固件加载到外部SRAM了;然后设置软件复位,在void SW_Handler(void);中调用:

__asm("li a6, 0x60000000");

__asm("jr a6");

程序直接进入void HardFault_Handler(void);异常了;

3,但是二级固件的.ld链接文件,.s启动文件、中断及中断向量表等有什么需要注意的,能给一个这种应用的例程吗?


邮箱:个人信息保护,已隐藏

不胜感激!

您好,按照我的理解,“我先烧录一个固件到片内FLASH”,该固件是不是可以认为是一个IAP程序;“从SD卡完成二级程序读取到外部SRAM地址0x60000000,这样把整个二级固件加载到外部SRAM了”,该段描述中所说的二级程序是不是可以认为是一个APP固件,相当于一开始你将APP固件放在SD卡,然后通过IAP固件搬运到外部SRAM,然后通过IAP跳转去执行。建议你可以按照下方法试一下:

1、将APP固件(二级固件)的ld文件中的FLASH的起始地址设置为0x60000000,具体长度大小根据你的实际大小改为1M,如下图1;

2、在启动文件中添加一下以下跳转,如下图2;

目前没有相关例程,下帖是关于ld文件的介绍说明,可以看一下。后续问题可通过邮箱(lzs@wch.cn)和我沟通。

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

image.png

图1

image.png

图2



第一个程序相当于IAP程序,二级程序相当于APP程序(是输出的bin文件放到SD卡的)。

是的,我的流程与你理解的是一样的:

您好,按照我的理解,“我先烧录一个固件到片内FLASH”,该固件是不是可以认为是一个IAP程序;“从SD卡完成二级程序读取到外部SRAM地址0x60000000,这样把整个二级固件加载到外部SRAM了”,该段描述中所说的二级程序是不是可以认为是一个APP固件,相当于一开始你将APP固件放在SD卡,然后通过IAP固件搬运到外部SRAM,然后通过IAP跳转去执行。


我按你的思路试一下,谢谢!


只有登录才能回复,可以选择微信账号登录