最简单的bootloader的编写步骤

电子说

1.3w人已加入

描述

内核从板载启动的 bootargs--内核启动参数, bootargs 是 bootloader 传递给内核的启动字符串。

看门狗

BootLoader的目标是启动内核, 大多数 boot loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式 。 

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。常见的BootLoader程序如下:

看门狗

最简单的bootloader的编写步骤:

1). 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH

1.关看门狗:2440的开发板一上电看门狗是打开的,不关闭的话每三秒就会复位一次开发板。看门狗的地址为:0x53000000

看门狗

2.设置时钟:CLKDVIN寄存器的地址为0x4c000014,必须设置为异步模式,这是datasheet所规定的。 

看门狗

注:

判断从nand启动还是nor启动就往内存中写数据即可,之后看是否能从内存相应地址读出对应的值。

Nand_Flash的时序(s3c2440中)nand-flash存在先天缺陷:会位反转为此引入OOB out of bank。

看门狗

Nand_Flash芯片手册中

看门狗

相关时间参数的获取:

看门狗

2). 如果bootloader比较大,要把它重定位到SDRAM

3). 把内核从NAND FLASH读到SDRAM

4). 设置"要传给内核的参数"

在u-boot中查看分区,使用命令 mtd

5). 跳转执行内核

在简单的BootLoader编写的过程中出现过以下错误,错误之处是.lds链接脚本文件出错,要注意相关格式。

修改完最后的这个错误,最终一个最简BootLoader及完成了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分