去年7月份左右,已经成功完成了CH32V203C8T6通过串口连接4G模块下载更新固件。
但相同的代码,在更新后的MounRiver工具上,怎么新建代码测试也无法启动。
确认过:
1、IAP和USER(link.ld地址为0,直接烧录)程序都可以单独运行。
2、下面红色字的两行打印都是能成功输出的,但user app里面的main打印就没有,如果user app启动狗,则不停重启(不停打印下面两行红色字内容)
请问是什么问题?
芯片分区设计
0x08000000 - 0x08007800 : IAP - 30K
0x08007800 - 0x0800F800 : APP - 32K - 储存用户ROM内容
0x0800F800 - 0x08010000 : DAT - 2K - 用户数据
IAP的程序内设置:
【main.c】文件
写入起始位置:0x08007800
在下载完成后:执行以下函数,跳入用户APP的入口
void ROM_Jump2APP()
{
printf("jump to APP\r\n");
NVIC_EnableIRQ(Software_IRQn);
NVIC_SetPendingIRQ(Software_IRQn);
while(1);
}
【ch32v20x_it.c】文件
void SW_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SW_Handler(void)
{
printf("start user APP\r\n");
__asm("li a6, 0x7800");
__asm("jr a6");
while(1);
}
USER APP的程序内设置:
【link.ld】文件
FLASH (rx) : ORIGIN = 0x00007800, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
------------------------------------------
user app是默认新建的模板内容,仅修改link.ld文件地址。