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