|
关于28035通过CAN总线实现程序在线升级功能的问题
[复制链接]
各位大神好,我最近在研究通过CAN总线实现程序升级的功能。我打算把芯片的FLASH分为两部分,一部分存放应用程序代码,一部分存放自己编写BOOT程序代码。芯片上电后首先允许执行BOOT程序,检测CAN总线上是否程序升级命令,如果有则通过调用FLASH_API对存放应用程序代码的空间进行擦除、编程。升级完成后再通过ASM(“ LB 0xXXXXXX”)指令跳到应用程序中;如果再运行应用程序时,检测到升级命令,则再通过ASM(“ LB 0xXXXXXX”)进入BOOT程序中。请问我的这种思路是否行得通呢?
一个程序的起始地址是CMD文件中的codestart》BEGIN (0x3F7FF6)吗?
code_start和_c_int00有什么区别呢,对于应的地址又是多少?
两个程序之间的跳转是调到对方的main函数起始地址还是BEGIN (0x3F7FF6)对应的地址呢?之前我有试过跳转到另一个程序BEGIN 对应的地址,但是芯片却还是允许到自身的main函数,没有调到另一个程序的main函数中。如果直接调到另一个函数的main函数对应地址,就能成功运行另一个程序。
|
|