Mini2440之BootLoader简单实现
目录
一、BootLoader
1.1 什么是BootLoader
在系统上电后,需要一段程序来初始化:
- 初始化异常向量表,进入SVC模式,关中断;
- 关闭MMU和cache;
- 关闭开门狗;
- 初始换系统时钟;
- 初始化内存;
- 重定位,BootLoader可能大于4K,将代码从Nand Flash复制到内存中;
- 跳转到main;
没有一个BootLoader完全支持所有的CPU,所有我们想要使用BootLoader一般情况下需要自己更改,我们可以增强BootLoader的功能,让他具有网络功能,可以通过NFS远程下载linux内核和根文件系统到Nand Flash。
-
启动加载模式: 这种模式也称为“自主“模式。也就是BootLoader从目标机上的某个固态存储器设备将操作系统加载到RAM中运行,整个过程中并没有用户介入,这种模式是在嵌入式产品发布里的通用模式。
-
下载模式:在这种模式里,目标机的BootLoader将通过串口连接或者网络连接等通信手段从主机下载文件,例如:下载内核映像和根文件系统映像等。从主机上下载的文件通常首先被BootLoader保存在目标机的RAM中,然后再被BootLoader写到目标机的 Flash类的固态存储设备中,BootLoader的这种模式是在开发时使用的,工作于这种模式的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。
在嵌入式Linux系统中从软件的角度通常可以分为4个层次:
-
引导加载程序:包括固化在固化中的boot程序(可选),和BootLoader两大部分。有些CPU在运行BootLoader之前运行一段固化的程序。比如x86结构的CPU就是先运行BIOS中的固件,然后才运行硬盘的第一个分区的BootLoader。在大多数的嵌入式系统中并没有固件,BootLoader是上电后第一个执行的程序。
-
Linux内核:嵌入式定制的内核以及启动参数,启动参数可以是BootLoader传递给内核的,也可以是内核默认的。
-
文件系统:包含根文件系统和建立于Flash内存设备上的文件系统。里面包含了Linux系统能够运行所必要的应用程序和库文件等。比如可以给用户提供操作于Linux的控制的shell程序。
-
用户应用程序:特定于用户的应用程序,他们也存储在文件系统中,有时在用户应用程序和内核层之间还可以包括一个嵌入式图形用户界面。
亲爱的读者和支持者们,自动博客加入了打赏功能,陆陆续续收到了各位老铁的打赏。在此,我想由衷地感谢每一位对我们博客的支持和打赏。你们的慷慨与支持,是我们前行的动力与源泉。
日期 | 姓名 | 金额 |
---|---|---|
2023-09-06 | *源 | 19 |
2023-09-11 | *朝科 | 88 |
2023-09-21 | *号 | 5 |
2023-09-16 | *真 | 60 |
2023-10-26 | *通 | 9.9 |
2023-11-04 | *慎 | 0.66 |
2023-11-24 | *恩 | 0.01 |
2023-12-30 | I*B | 1 |
2024-01-28 | *兴 | 20 |
2024-02-01 | QYing | 20 |
2024-02-11 | *督 | 6 |
2024-02-18 | 一*x | 1 |
2024-02-20 | c*l | 18.88 |
2024-01-01 | *I | 5 |
2024-04-08 | *程 | 150 |
2024-04-18 | *超 | 20 |
2024-04-26 | .*V | 30 |
2024-05-08 | D*W | 5 |
2024-05-29 | *辉 | 20 |
2024-05-30 | *雄 | 10 |
2024-06-08 | *: | 10 |
2024-06-23 | 小狮子 | 666 |
2024-06-28 | *s | 6.66 |
2024-06-29 | *炼 | 1 |
2024-06-30 | *! | 1 |
2024-07-08 | *方 | 20 |
2024-07-18 | A*1 | 6.66 |
2024-07-31 | *北 | 12 |
2024-08-13 | *基 | 1 |
2024-08-23 | n*s | 2 |
2024-09-02 | *源 | 50 |
2024-09-04 | *J | 2 |
2024-09-06 | *强 | 8.8 |
2024-09-09 | *波 | 1 |
2024-09-10 | *口 | 1 |
2024-09-10 | *波 | 1 |
2024-09-12 | *波 | 10 |
2024-09-18 | *明 | 1.68 |
2024-09-26 | B*h | 10 |
2024-09-30 | 岁 | 10 |
2024-10-02 | M*i | 1 |
2024-10-14 | *朋 | 10 |
2024-10-22 | *海 | 10 |
2024-10-23 | *南 | 10 |
2024-10-26 | *节 | 6.66 |
2024-10-27 | *o | 5 |
2024-10-28 | W*F | 6.66 |
2024-10-29 | R*n | 6.66 |
2024-11-02 | *球 | 6 |
2024-11-021 | *鑫 | 6.66 |
2024-11-25 | *沙 | 5 |
2024-11-29 | C*n | 2.88 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了