2.1.1、为什么要有uboot
2.1.1.1、计算机系统的主要部件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410100602383.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
CPU:中央处理器,计算机的运算核心和控制核心,是信息处理、程序运行的最终执行单元。
外部存储器(外存):用来存储东西的ROM。如硬盘,Flash(NorFlash:总线式访问,一般用于启动)
内部存储器(内存):用来运行程序的RAM。如DDR,SRAM。
2.1.1.2、PC机的启动过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410100728961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.1.3、典型嵌入式linux系统启动过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021041010190124.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.1.4、android系统启动过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410102033804.png)
2.1.1.5、总结:uboot到底是干嘛的
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021041010210419.png)
2.1.2.1、uboot的可移植性的正确理解
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410102436381.png)
2.1.3、uboot必须解决哪些问题
2.1.3.1、自身可开机直接启动
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410103841413.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.3.2、能够引导操作系统内核启动并给内核传参
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410104007340.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.2.3、能提供系统部署功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410104049400.png)
2.1.2.4、能进行soc级和板级硬件管理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410104139133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.2.5、uboot的“生命周期”
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410104235789.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.3.6、总结:一切都是为了启动内核
2.1.4、uboot的工作方式
2.1.4.1、从裸机程序镜像uboot.bin说起
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410114431640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.4.2、uboot的命令式shell界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410114601151.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.4.3、掌握uboot使用的2个关键点:命令和环境变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410114651716.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.4.4、思考:结合ARM裸机部分进行理解和印证
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210410114743163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.5、uboot的常用命令1
2.1.5.1、类似linux终端的行缓冲命令行
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021041112390550.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.5.2、有些命令有简化的别名
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411123936979.png)
2.1.5.3、有些命令会带参数(注意格式是固定的)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021041112401794.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.5.4、命令中的特殊符号(譬如单引号)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411124049531.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.5.5、有些命令是一个命令族(譬如movi)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411124125376.png)
2.1.5.5、第一个命令:printenv/print
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411124201320.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.6、uboot的常用命令2
2.1.6.1、设置(添加/更改)环境变量:setenv/set
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411145321637.png)
2.1.6.2、保存环境变量的更改:saveenv/save
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411145404668.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.6.3、网络测试指令:ping
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210411145550251.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.7、开发板和主机的ping通
2.1.7.1、开发板运行linux下和主机Windows的ping通
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415164617470.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.7.2、开发板运行linux下和虚拟机ubuntu的ping通
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415164705467.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.7.3、开发板运行uboot下和主机Windows的ping通
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415164807633.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.7.4、开发板运行uboot下和虚拟机ubuntu的ping通
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415164846107.png)
2.1.8.uboot常用命令3
2.1.8.1、tftp下载指令:tftp
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415165705722.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.8.2、nfs启动内核命令:nfs
2.1.9.uboot的常用命令4
2.1.9.1、SD卡/iNand操作指令movi
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415170816773.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.9.2、内存操作指令:mm、mw、md
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415171236628.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.9.3、启动内核指令:bootm、go
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415171322572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.10.uboot的常用环境变量1
2.1.10.1、如何理解环境变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415171833359.png)
2.1.10.2、环境变量如何参与程序运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415171924567.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.10.3、自动运行倒数时间:bootdelay
2.1.10.4、网络设置:ipaddr serverip
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415172015485.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.11.uboot的常用环境变量2
2.1.11.1、自动运行命令设置:bootcmd
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415172757521.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.11.2、uboot给kernel传参:bootargs
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415172841344.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.11.3、新建、更改、删除一个环境变量的方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415172856555.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.11.4、注意:环境变量更改后的保存
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415172914444.png)
2.1.12.uboot中对Flash和DDR的管理
2.1.12.1、uboot阶段Flash的分区
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415173528842.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.12.2、uboot阶段Flash的分区总结
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415173550408.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)
2.1.12.2、uboot阶段DDR的分区
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415173618196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZnVqdW5pbmc=,size_16,color_FFFFFF,t_70)