OpenEdv-开源电子网
标题: 跑马灯实验例程中,想在SDRAM中跑代码,就修改了原来的分散加载文件。能编译通过,能够正常跑到MANIN函数,但是进入硬中断错误。 [打印本页]
作者: KaiChen 时间: 2018-11-19 09:33
标题: 跑马灯实验例程中,想在SDRAM中跑代码,就修改了原来的分散加载文件。能编译通过,能够正常跑到MANIN函数,但是进入硬中断错误。
请问大家,我在正点原子点跑马灯实验例程中,想在SDRAM中跑代码,就修改了原来的分散加载文件和初始化文件。我修改的加载文件如下图,能编译通过,能够正常跑到MANIN函数,但是进入硬中断错误。
通过单步调试,对比修改分散加载文件的编译后的代码,发现,造成错误的汇编代码,跟原子官方例程编译出来的不一样了。如下第一个图是修改过的分文件编译出来的,汇编码有问题,越界了。造成了错误,但是却不知道为什么会造成这种编译错误,请大牛帮忙!!
作者: KaiChen 时间: 2018-11-19 09:33
问题找到了。还是SDRAM初始化问题。导致内存中的代码有错,所以程序跑飞。
作者: KaiChen 时间: 2018-11-19 09:48
本帖最后由 KaiChen 于 2018-11-19 09:53 编辑
原子编译出来的代码如下:
54: CLOCK_SetXtalFreq(24000000); //芯片主晶振24MHz
0x00001F7C 484B LDR r0,[pc,#300] ; @0x000020AC
1112: g_xtalFreq = freq;
0x00001F7E 494C LDR r1,[pc,#304] ; @0x000020B0 //差别从这一句开始
0x00001F80 6008 STR r0,[r1,#0x00] //原子原版的汇编出来是给R1寄存器赋值的,没有越界。我修改分散加载的文件这一句,明显不对,
作者: xuzhou192 时间: 2025-11-11 10:10
兄弟你这用的是哪一款单片机,我想做个H750北极星的代码,把程序放到外部SDRAM里面去,正想找资料的,你这个问题解决了吗
| 欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) |
Powered by Discuz! X3.4 |