实现 SDRAM 调试下,MDK 按下复位按钮后,能自动完成从 nor flash 跳转到 SDRAM 运行代码的功能。
韦东山 JZ2440 开发板:
SDRAM 起始地址 0x30000000
关键点:
修改 Ext_RAM.ini:
LOAD .\Objects_sdram\s3c2440.axf INCREMENTAL
FUNC void SetupForStart (void) {
// <o> Program Entry Point
PC = 0x30000000;
}
修改 S3C2440.s 代码:
IF :DEF:BOOT_SDRAM
Reset_Addr DCD 0x30000000 + Reset_Handler
ELSE
Reset_Addr DCD Reset_Handler
ENDIF
注意当使用 Reset_Addr DCD 0x30000000 时会偶然出现无法访问nor flash 的情况(访问后得到数据是错误的),导致无法正常跳转到 SDRAM 中,原因不明,但 Reset_Addr DCD 0x30000000 + Reset_Handler 可以正常。
添加宏定义 BOOT_SDRAM
为了方便,使用多目标:
首先使用 下载 :
boot_sdram 目标代码
之后使用 sdram 目标
简单示例可参考本博客主页资源中进行下载调试:
MDK V5.25