当前位置: 代码迷 >> 驱动开发 >> u-boot启动到清除bss段时停止,纠结了好久,求教大家,该怎么解决
  详细解决方案

u-boot启动到清除bss段时停止,纠结了好久,求教大家,该怎么解决

热度:105   发布时间:2016-04-28 11:01:25.0
u-boot启动到清除bss段时停止,纠结了好久,求教大家
以下是dis文件相关内容

................

c3e0005c <_bss_start>:
c3e0005c: c3e80000 .word 0xc3e80000

c3e00060 <_bss_end>:
c3e00060: c3ec4e94 .word 0xc3ec4e94

................


c3e001f4 <clear_bss>:
c3e001f4: e51f01a0 ldr r0, [pc, #-416] ; c3e0005c <_bss_start>
c3e001f8: e51f11a0 ldr r1, [pc, #-416] ; c3e00060 <_bss_end>
c3e001fc: e3a02000 mov r2, #0

c3e00200 <clbss_l>:
c3e00200: e5802000 str r2, [r0]
c3e00204: e2800004 add r0, r0, #4
c3e00208: e1500001 cmp r0, r1
c3e0020c: dafffffb ble c3e00200 <clbss_l>
c3e00210: e51ff004 ldr pc, [pc, #-4] ; c3e00214 <_start_armboot>

c3e00214 <_start_armboot>:
c3e00214: c3e02840 .word 0xc3e02840


不知道我算得对不对。在

c3e001f4 <clear_bss>:
c3e001f4: e51f01a0 ldr r0, [pc, #-416] ; c3e0005c <_bss_start>
c3e001f8: e51f11a0 ldr r1, [pc, #-416] ; c3e00060 <_bss_end>
c3e001fc: e3a02000 mov r2, #0

取bss_start的地址这句话:
c3e001f4: e51f01a0 ldr r0, [pc, #-416] ; c3e0005c <_bss_start>

是不是有问题。

我是将物理内存 0x30000000->0x3FFFFFFF 映射到 0xc0000000->0xcFFFFFFF
按理说,这个区间的内存都是可写的吧。
我特意写了一段测试代码在clear_bass之前,尝试自己在这个地址区间读写下。发现0xcFFFFFFF->0xC3e00000都不能写入。
明明MMU配置的时候,设定的读写皆可。

哪位兄弟知道的来指点下咯。

------解决方案--------------------
(1)映射前的物理内存 0x30000000->0x3FFFFFFF,全部可读可写吗?
(2)会不会有别的设备,挂在0xc0000000->0xcFFFFFFF地址段?

------解决方案--------------------
我特意写了一段测试代码在clear_bass之前,尝试自己在这个地址区间读写下。发现0xcFFFFFFF->0xC3e00000都不能写入。
明明MMU配置的时候,设定的读写皆可。

------------

被其他设备地址占用?
  相关解决方案