免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1256 | 回复: 0
打印 上一主题 下一主题

blob里面关于内存有效性测试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-16 00:18 |只看该作者 |倒序浏览

normal_boot:
/* check the first 1MB of BLOB_START in increments of 4k */
测试步长设置为4k
mov r7, #0x1000
mov r6, r7, lsl #8 /* 4k
BLOB_START内存装载bootloader的起始地址

mem_test_loop:
mov r0, r5
bl testram
.text
.globl testram
@ r0 = address to test
@ returns r0 = 0 - ram present, r0 = 1 - no ram
@ clobbers r1 - r4
testram:
        ldmia   r0, {r1, r2} @ store current value in r1 and r2
        mov r3, #0x55 @ write 0x55 to first word
        mov     r4, #0xaa @ 0xaa to second
        stmia   r0, {r3, r4}
        ldmia   r0, {r3, r4} @ read it back
        teq     r3, #0x55 @ do the values match
        teqeq   r4, #0xaa
        bne     bad  @ oops, no
        mov     r3, #0xaa @ write 0xaa to first word
        mov     r4, #0x55 @ 0x55 to second
        stmia   r0, {r3, r4}
        ldmia   r0, {r3, r4} @ read it back
        teq     r3, #0xaa @ do the values match
        teqeq   r4, #0x55
bad:    stmia   r0, {r1, r2} @ in any case, restore old data
        moveq   r0, #0  @ ok - all values matched
        movne   r0, #1  @ no ram at this location
        mov     pc, lr
程序思想:
先保存memory page地址开始的两个字
想这两字写入数字
立即读回这两个字,显然这两个字的内容就是刚写的,若内容不相等,说明RAM出错
然后再写入两字,读回比较
最后恢复开始两个字的内容
返回一个值到(r1)中,0表示RAM是好的,1表示RAM出错
teq r0, #1
beq badram
add r5, r5, r7
subs r6, r6, r7
bne mem_test_loop
relocate:
下面这段代码要实现的是内存数据的自我拷贝~~
adr r0, _start
/* relocate the second stage loader */
add r2, r0, #(64 * 1024) /* blob maximum size is 64kB */
_start 为bootloader启动的第一条指令的地址
add r0, r0, #0x400  /* skip first 1024 bytes */
跳过前面的1KB,有待理解,然道是由于前面的1Kb是存放了stage1,不许载入,这样解释到是很合理~
ldr r1, BLOB_START
/* r0 = source address
  * r1 = target address
  * r2 = source end address
  */
copy_loop:
ldmia r0!, {r3-r10}
将R0指向的单元中的数据读出到R3-r10,r0地址将自动实现加1
stmia r1!, {r3-r10}
将R3~R10的值读出到R1指向的连续空间,r0地址将自动实现加1
cmp r0, r2
ble copy_loop



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/110004/showart_2150561.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP