最简单的bootloader的编写步骤

内核从板载启动的 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存在先天缺陷:会位反转为此引入ooboutofbank。
nand_flash芯片手册中
相关时间参数的获取:
2). 如果bootloader比较大,要把它重定位到sdram
3). 把内核从nand flash读到sdram
4). 设置要传给内核的参数
在u-boot中查看分区,使用命令mtd
5). 跳转执行内核
在简单的bootloader编写的过程中出现过以下错误,错误之处是.lds链接脚本文件出错,要注意相关格式。
修改完最后的这个错误,最终一个最简bootloader及完成了。

首发即量产的25kg大负载协作机器人有何能耐?
SA7527实现LED照明驱动电路
影创即墨光学产线在通济新经济区正式落成
Linux运维工程师是做什么的 发展前景又怎么样
你身边5G已经来了吗
最简单的bootloader的编写步骤
中国智能制造进入高速成长期
浅谈电子负载仪的保护机制
HoloLens2国行售价高达27388元 到底凭值不值这么多钱
ubuntu下如何下载nuttx源码
工业机器人最大的发展市场在哪些领域里
iPhone8什么时候上市?iPhone8最新消息:三明治配色曝光,白+玫瑰金看了就想要
洲明集团2020渠道共进会在各地陆续召开
详细分析大家一直以来关心的控制办法及其优点
联轴器的孔径怎样才能与轴更好地去配合呢
荣耀9怎么样?荣耀9评测:延续荣耀8的设计,华为荣耀9性价比、人气双高!
SMT贴片加工过程中的几点注意事项
工业互联网的关键技术概述
浅谈电解电容检测及选用
与电解电容相比,固态电容有哪些优势