ARM·存储器配置
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>:
Disassembly of section .ARM.attributes:
00000000 <.ARM.attributes>:
1)首先我们明确这段程序所处的位置,它位于NAND FLASH 的首地址处,也就是0x0000 0000处。当我们从NAND FLASH启动时,会自动把前面4K的代码复制到SRAM中运行。
这里,我就遇到了一个让我困惑了很久的问题:这条代码的运行地址是0x3000 0000,那么它怎么能在0x0000 0000处运行呢?
答:这就是我们上面补充知识说的位置无关码,
bl
这3条指令仍然可以执行,且完成对SDRAM的初始化
2)既然完成了对SDRAM的初始化,也就是说SDRAM现在已经可以帮助内存处理信息了,这时我们的指令是
ldr pc, =on_sdram
这就是我们的位置相关码,也就是从SRAM中跳到了SDRAM中继续执行,完成了操作;
友善视频中用的是oflash,但是我们现在有更强大的minitool工具,所以我这里就用minitool进行下载,但是几次调试都失败了,原因如下(图是借用的2451的,不用在意这些细节,自动替换成2440)
至于错误原因,我暂时不知道
ARM存储器配 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)