求教: CH32V203 IAP , 修改APP地址

CH32V203 自带例程中IAP的例子, 

APP是从0x08005000开始  (#define FLASH_Base   0x08005000)

现在由于FLASH空间不够, 想把APP改到从0x08004000, 

我修改: 1: #define FLASH_Base   0x08004000

     2: void SW_Handler(void) {
                                    __asm("li  a6, 0x4000");
                                    __asm("jr  a6");

                                    while(1);
                                    }


                3: APP的LD里,  改成:0x08004000

修改之后, APP没有运行.

求教: 1:能不能改成0x08004000 ?

   2:还要改哪里 ?

您好,若要修改IAP以及APP所占FLASH空间的大小,需要注意一下IAP和APP编译之后程序代码的大小,若使用的是CH32V03 EVT中的IAP例程,注意IAP编译之后的程序代码大小已经超过16K了,因此你分配0x08004000的大小是不够的。目前我们的IAP例程包含了USB和串口两种升级方式,你可以根据自己的需求,去掉一种,精简一下代码,然后再根据代码大小分配一下IAP的大小。此外需要注意一下工程文件的配置,根据芯片具体型号修改ld文件FLASH、RAM大小、启动文件以及相关宏定义。后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通


你好

1.例程的IAP大小17K多,所以要改成4000,需要减少IAP的代码大小,可以把printf去掉,会降到12K,或选择使用wch-printf编译后13K

image.png

2.APP的LD中,FLASH起始地址改为0x00004000,生成Bin用IAP工具下载

3.如果要降低IAP的flash占用除了优化代码外,还可以参考这个https://www.cnblogs.com/wchmcu/p/17337337.html


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