ch573 boot跳转app失败
#define    jumpApp  ((  void  (*)  ( void ))  ((int*)0x4000))
int main()
{
  SetSysClock( CLK_SOURCE_PLL_60MHz );jumpApp();
  jumpApp();
  while( 1 )
  {
  }
 }

BOOT的代码如上。

BOOT程序是直接用MRS新建的工程,没有做任何链接文件的更改。

APP程序是新建工程后,更改了Link.ld文件

MEMORY
{
	FLASH (rx) : ORIGIN = 0x4000, LENGTH = 208K
	RAM (xrw) : ORIGIN = 0x20003800, LENGTH = 18K
}

现在的情况是:boot跳转不到app程序,并且会不断重启。

跳转要满足下面两种情况之一即可:

1,在机器模式跳转,

在ch57x ch58x例程的startup_xxxxx.s文件中,有下面两行
li t0, 0x88
csrs mstatus, t0
修改成
li t0, 0x1888
csrs mstatus, t0

2,在中断里面跳转.

可以参考附件(解压到官网SDK 的evt>exam> 下, 每个工程内提供有说明文件, 烧录方式使用sdk evt>安卓OTA工具>合并工具>AssemblingFileTool.exe 合并两个hex文件后烧录):

ch573_user_boot_and_app.zip



二楼的咋链接失效了呢


请问问题解决了吗

已经修改更新到二楼中.


经过尝试,终于完成了这个升级功能,以下是注意点:

  1. 在读写flash的时候,最好要关闭总中断,否则数据可能被搞乱(我就是这样遇到了)

  2. BootLoader的Link.ld的内容除了,falsh起始和大小不一样外,其它内容APP和BootLoader必须一样,否则跳转后无法成功启动

MEMORY
{
FLASH (rx) : ORIGIN = 0x00004000, LENGTH = 432K //根据实际修改
RAM (xrw) : ORIGIN = 0x20003800, LENGTH = 18K
}



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