一点点arm bootloader的理解

来源:互联网 发布:杭州点告网络 编辑:程序博客网 时间:2024/05/07 07:34

最简单的bootloader需完成两个主要任务

1.memory的重新映射

2.下载kernel到sdram

系统上电之后首先执行的是物理地址0x0的代码,所以一般情况bootloader的代码要烧录在0x0的地址处,一般为flash存储器,

例如:

有2段存储器flash和sdram,分别在0x0-0x4000000 64M, 0x4000000-0x80000000 64Msdram,板子上电后只有flash可用,先不考虑片内内存,所以要做一下几个工作

1.初始化sdram,根据system manager寄存器,把sdram map到 0x4000000-0x80000000,使得flash和sdram在物理上连续,现在程序时在flash里面运行的。

2.把flash里面的bootloader拷贝到sdram的最低端。

4.通过system manager寄存器设置,重新map这两段内存,把flash映射到0x4000000-0x80000000 ,把sdram映射到0x0-0x4000000 ,此时程序时在sdram里面运行的。

5. LDR  pc, =load_kernel,转到c语言处,load  nernel进sdram的设定位置。

如要支持网络下载,需要添加tcp/ip协议栈

原创粉丝点击