QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2760|回复: 5

bootloader的一点问题

[复制链接]
发表于 2006-9-4 09:03:48 | 显示全部楼层 |阅读模式
在step 3中有简化的bootloader,其中
RomBaseAddr        EQU                0
RomEndAddr        EQU                &20
RamBaseAddr        EQU                &100
RamEndAddr        EQU                &200       

……
实在搞不懂这里的&20,&100,&200是什么地址,看下面的好像是省略了16个0吗?这些地址安排上是自己分配的吗?
          adr        r0, ResetEntry
        mov        r3, #(RamBaseAddr<<16)
        ldr        r1, BaseOfROM       
        ldr        r2, TopOfROM       
        add        r1, r1, r3
        add        r2, r2, r3
0       
        ldmia        r0!, {r4-r11}
        stmia        r1!, {r4-r11}
        cmp        r1, r2
        bcc        %B0
       
        sub        r1, r1, r2
        sub        r0, r0, r1       
        ldr        r1, BaseOfBSS
        ldr        r2, BaseOfZero
        add        r1, r1, r3       
        add        r2, r2, r3       
1       
        cmp        r1,        r2       
        ldrcc        r4, [r0], #4
        strcc        r4, [r1], #4       
        bcc        %B1
       
        mov        r0,        #0
        ldr        r2,        EndOfBSS
        add        r2, r2, r3
3       
        cmp        r1,        r2
        strcc        r0, [r1], #4
        bcc        %B3                                               
我看了很多bootloader介绍,copy rom to ram只需要把第二阶段的copy过去,我看这里是从resetentry开始的,有没有关系呢?
       
        adr        r0, ResetEntry
        ldr        r1, =RemapMemory       
        ldr        r2, BaseOfROM
        sub        r2, r1, r2
        add        r0, r0, r2
        add        r1, r2, r3
        mov        r2,        #32
0       
        ldr        r3, [r0], #4
        str        r3, [r1], #4
        subs        r2, r2,        #1
        bne        %B0

这里为什么在remapmemory地址处copy 32个字节的内容到rambaseaddr+remapmemory处?作什么用?地址映射不是在boot中进行吗?rambaseaddr+remapmemory在哪个region(RO?RW?ZI?) ?我没4510的板子,所以请大家帮忙看看,谢谢!
发表于 2006-9-4 23:19:27 | 显示全部楼层
RomBaseAddr EQU 0
RomEndAddr EQU &20
RamBaseAddr EQU &100
RamEndAddr EQU &200
左移16位分别是Flash和Ram的起始和结束地址

copy 那32个字节我理解是copy异常向量表,因为启动后Ram被映射到0x0
回复

使用道具 举报

 楼主| 发表于 2006-9-5 08:16:35 | 显示全部楼层
那位能讲讲这个remap是怎么做的?我没搞懂。我看rambaseaddr被定义为&100,那么它怎么会映射到0处?还是说这个&100是被映射前的地址?
回复

使用道具 举报

 楼主| 发表于 2006-9-5 10:08:16 | 显示全部楼层
这里的BaseOfRom和 ResetEntry地址是什么关系啊?程序在哪个地方开始转到ram里去执行呢?
回复

使用道具 举报

发表于 2006-9-5 23:45:31 | 显示全部楼层
&100是映射前的起始地址
具体怎么映射可以参考4510的数据手册
回复

使用道具 举报

 楼主| 发表于 2006-9-6 09:06:28 | 显示全部楼层
谢谢support!由于没有太多精力放在4510B的bios上,所以没有看它的数据手册,我的板子是44B0,希望能得到你的指点。44B0不支持remap,bios要比45b0简单点,所以问题不是太大。再次表示感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-29 21:16 , Processed in 0.638476 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表