我也是用RL78/14的芯片做的CAN升级,开发环境IAR for RL78,我flash划分:boot area :0x0000-0x2000,APP area 0x2000 -- 0xFFFF,用的xmodem协议传输,在线跟踪APP.bin已经正确下载到了0x2000开始的区域,执行跳转指令后,APP程序不能执行,跳转指令如下
typedef void (*FunctionPointer)(void);
DI();FunctionPointer entryPoint = (FunctionPointer) 0x2000; // 跳转地址entryPoint();
执行跳转指令后,能看到程序能执行到flash后面的区域。
APP文件用默认的从0x0000开始的设置是能够正常运行的,这个已经经过验证。采用升级模式时,将APP的程序地址偏移到了0X2000的位置(链接文件是在lnkr5f10pgj.icf基础上进行修改的),修改后的icf文件的配置如下
现在的问题是不知道是跳转的部分有问题还是APP经过地址偏移后产生了问题,希望您给一些指导。
另外,app经过地址偏移后, 不能进行在线调试了,这个可以通过怎么样的设置能够进行在线调试呢?
你在boot里面调试app, 需要把app的image 加在在boot工程,
或者如果你在app里面调试, 你需要把boot的image 加在到app的工程, 这样就可以调试了
谢谢回答,app程序的icf配置文件的设置有什么问题吗?
第三个的编译器问题(IAR), 可去IAR官网咨询.
IAR暂时不能提供支持,我转换到CS+ CC-RL编译器环境下进行设计,该如何设置偏移地址和跳转的中断向量表。
另,在RL78/G13的boot例程中,APP子工程和boot工程共用了驱动部分,貌似和两个独立的工程不太一样。这个我用现在的CS+无法进行编译。
RL78 For For CCRL bootloader via UART sample code
OTA_Test_0319.zip