一、课堂笔记
1. Windows 电脑和嵌入式设备启动流程对比
|-- Windows 上电启动流程
| |-- 上电 -> BIOS(引导操作系统) -> Windows -> 识别 C、D 盘 -> 运行应用程序
|-- 嵌入式设备
|-- 上电 -> BootLoader(引导内核) -> Linux Kernel -> 挂载根文件系统 -> 运行应用程序
2. BootLoader 最终目的是启动内核
|-- 启动内核
|-- 从 Flash 读取 kernel
| |-- u-boot 要能够读取 Flash
|-- 将读取到的 kernel 放进 SDRAM 中
| |-- 关闭看门狗
| |-- 初始化系统时钟
| |-- 初始化 SDRAM
|-- 实现一些额外的协助开发过程的功能
| |-- 为方便下载,u-boot 还要能够写 Flash
| |-- 串口、网卡、USB 等扩展功能
| |-- 可以实现命令烧写、网络烧写、USB 烧写 kernel 到 Flash 上
|-- 在 SDRAM 中启动 kernel
3. u-boot 配置编译流程
|-- 解压 u-boot
| |-- user@vmware:~/workspace/s3c2440/package$ ls
| | u-boot-1.1.6.tar.bz2 u-boot-1.1.6_jz2440.patch
| |-- user@vmware:~/workspace/s3c2440/package$ tar -jxf u-boot-1.1.6.tar.bz2 -C ../
|-- 给 u-boot 打补丁
| |-- user@vmware:~/workspace/s3c2440/package$ cd ../u-boot-1.1.6/
| |-- user@vmware:~/workspace/s3c2440/u-boot-1.1.6$ patch -p1 < ../package/u-boot-1.1.6_jz2440.patch
|-- 配置
| |-- 配置顶层 Makefile 中交叉编译器
| |-- user@vmware:~/workspace/s3c2440/u-boot-1.1.6$ make 100ask24x0_config
| |-- Configuring for 100ask24x0 board...
|-- 编译
|-- user@vmware:~/workspace/s3c2440/u-boot-1.1.6$ make
4. u-boot 使用
|-- ? 或者 help
| |-- 可以查看 u-boot 有哪些命令
| |-- ? md 或者 help md 可以查看 md 命令详细介绍
|-- print
| |-- 输出的是 u-boot 环境变量
|-- set
| |-- set bootdelay 10
|-- save
| |-- 保存 set 命令设置的环境变量值
|-- reset
|-- 重启命令
二、课外补充
1. 一个嵌入式的存储设备通过通常包括四个分区:
第一个分区:u-boot
第二个分区:u-boot 要传给系统内核的参数
第三个分区:系统内核 kernel
第四个分区:根文件系统
2. u-boot 源代码的目录结构
1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现。
2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件。
3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录。
4、Doc是文档目录,有u-boot非常完善的文档。
5、Drivers中是u-boot支持的各种设备的驱动程序。
6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统。
7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件。
8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现。
9、Tooles是生成U-boot的工具。