系统移植
开发板启动流程
- 开发板上电后
首先运行SOC内部iROM中固化的代码(BL0)
,这段代码先对基本的软硬件环境(时钟等…)进行初始化,然后再检测拨码开关位置获取启动方式
,然后再将对应存储器中的uboot搬移到内存
,然后跳转到uboot运行
- uboot开始运行后
首先对开发板上的软硬件环境做进一步初始化
,然后将linux内核、设备树(dtb)、根文件系统(rootfs)从外部存储器(或网络)搬移到内存
,然后跳转到linux运行
- linux开始运行后
先对系统环境做初始化
,当系统启动完成后,Linux再从内存中(或网络)挂载根文件系统
系统移植步骤
- uboot移植
- linux内核移植(包含设备树)
- 根文件系统移植
网络环境配置
C:\Users\asus\Desktop\新建文件夹\资料\嵌入式\笔记\study\lv9-系统移植\环境搭建
tftp
- 即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,
端口号为69
;
nfs
- 即网络文件系统,其基于UDP/IP使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。
BootLoader
-
在操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统)
-
Bootloader基本功能
- 初始化软硬件环境
- 引导加载linux内核
- 给linux内核传参
- 执行用户命令
-
bootloader是启动引导程序的统称,嵌入式linux常用的bootloader是uboot
常见的Bootloader
Bootloader | Monitor | 描述 | X86 | ARM | PowerPC |
---|---|---|---|---|---|
LILO | 否 | Linux磁盘引导程序 | 是 | 否 | 否 |
GRUB | 否 | GNU的LILO替代程序 | 是 | 否 | 否 |
Loading | 否 | 从DOS引导linux | 是 | 否 | 否 |
ROLO | 否 | 从ROM引导linux而不需要BOIS | 是 | 否 | 否 |
Etherboot | 否 | 通过以太网卡启动linux系统的固件 | 是 | 否 | 否 |
LinuxBOIS | 否 | 完全替代BUIS的linux引导程序 | 是 | 否 | 否 |
BLOB | 是 | LART等硬件平台的引导程序 | 否 | 是 | 否 |
U-boot | 是 | 通用引导程序 | 是 | 是 | 是 |
RedBoot | 是 | 基于eCos的引导程序 | 是 | 是 | 是 |
Vivi | 是 | Mizi公司针对于三星的arm cpu设计的引导程序 |
SD卡启动盘制作
[C:\Users\asus\Desktop\新建文件夹\资料\嵌入式\笔记\study\lv9-系统移植\环境搭建](实验4 SD卡启动盘制作.pdf)
SD卡存储结构
- SD卡的存储以扇区为单位,
每个扇区的大小为512Byte
, 其中零扇区存储分区表(即分区信息),后续的扇区可自行分区和格式化; - 若选择SD卡启动,
处理器上电后从第一个扇区开始将其中的内容搬移到内存,所以我们把uboot放到从第一个扇区开始之后的空间
, 之后的空间根据个人需求可进行分区和格式化