微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM·存储器配置

ARM·存储器配置

时间:11-24 来源:互联网 点击:

0 ; 0x14

3000015c: e5933000 ldr r3, [r3]

30000160: e3c33020 bic r3, r3, #32 ; 0x20

30000164: e5823000 str r3, [r2]

30000168: e3a00064 mov r0, #100 ; 0x64

3000016c: ebffffcf bl 300000b0

30000170: eafffff5 b 3000014c

Disassembly of section .comment:

00000000 <.comment>:

0: 43434700 movtmi r4, #14080 ; 0x3700

4: 5328203a teqpl r8, #58 ; 0x3a

8: 6372756f cmnvs r2, #465567744 ; 0x1bc00000

c: 20797265 rsbscs r7, r9, r5, ror #4

10: 202b2b47 eorcs r2, fp, r7, asr #22

14: 6574694c ldrbvs r6, [r4, #-2380]!

18: 30303220 eorscc r3, r0, r0, lsr #4

1c: 2d337138 ldfcss f7, [r3, #-224]!

20: 20293237 eorcs r3, r9, r7, lsr r2

24: 2e332e34 mrccs 14, 1, r2, cr3, cr4, {1}

28: Address 0x00000028 is out of bounds.

Disassembly of section .ARM.attributes:

00000000 <.ARM.attributes>:

0: 00002541 andeq r2, r0, r1, asr #10

4: 61656100 cmnvs r5, r0, lsl #2

8: 01006962 tsteq r0, r2, ror #18

c: 0000001b andeq r0, r0, fp, lsl r0

10: 00543405 subseq r3, r4, r5, lsl #8

14: 01080206 tsteq r8, r6, lsl #4

18: 01140412 tsteq r4, r2, lsl r4

1c: 03170115 tsteq r7, #1073741829 ; 0x40000005

20: 01190118 tsteq r9, r8, lsl r1

24: Address 0x00000024 is out of bounds.

1)首先我们明确这段程序所处的位置,它位于NAND FLASH 的首地址处,也就是0x0000 0000处。当我们从NAND FLASH启动时,会自动把前面4K的代码复制到SRAM中运行。

这里,我就遇到了一个让我困惑了很久的问题:这条代码的运行地址是0x3000 0000,那么它怎么能在0x0000 0000处运行呢?

答:这就是我们上面补充知识说的位置无关码,

bl disable_watch_dog @ 关闭WATCHDOG,否则CPU会不断重启

bl memsetup @ 设置存储控制器

bl copy_steppingstone_to_sdram @ 复制代码到SDRAM中

这3条指令仍然可以执行,且完成对SDRAM的初始化

2)既然完成了对SDRAM的初始化,也就是说SDRAM现在已经可以帮助内存处理信息了,这时我们的指令是

ldr pc, =on_sdram @ 跳到SDRAM中继续执行

这就是我们的位置相关码,也就是从SRAM中跳到了SDRAM中继续执行,完成了操作;

友善视频中用的是oflash,但是我们现在有更强大的minitool工具,所以我这里就用minitool进行下载,但是几次调试都失败了,原因如下(图是借用的2451的,不用在意这些细节,自动替换成2440)


至于错误原因,我暂时不知道


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top