导图社区 U-boot移植
这是一篇关于U-boot移植的思维导图,主要内容有U-Boot初步、U-Boot命令、U-boot移植。
这是一篇关于linux与C的思维导图,包括:C语言开发环境、C语言增强之数组、C语言增强之指针、结构体和共用体四部分内容。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
U-boot移植
U-Boot初步
1.BootLoader简介
典型的计算机系统
PC机
嵌入式设备
单片机
核心部件
CPU
外部存储器
内部存储器
PC机的启动过程
PC上电后先执行BIOS程序
从硬盘上将OS镜像读取到DDR中
在DDR中执行镜像启动系统
嵌入式linux系统启动过程
上电后执行UBoot
将OS从Flash中读到DDR
在DDR中执行OS启动系统
BootLoader简介
1.引导加载程序
2,linux内核
3、文件系统
2.U-boot简介
简介
U-boot是SourceForge上的开发项目
U-boot全称Universal Boot Loader
支持各种高级功能
U-Boott经过多年发展,已经成为事实上的业内bootloader标准。现在大部分的嵌入式设备都会默认使用uboot来做为bootloader
主要功能
系统引导:BootLoader的主要任务是初始化硬件(如:串口,内存),然后将内核映象从Flash中读到RAM中,然后跳转到内核的入口点去运行,也就是启动操作系统。
BootLoader的作用
开机启动:支持多种启动方式
SD卡启动、Nand启动,EMMC启动等引导操作系统内核启动并给内核传参
进行soc级和板级硬件管理
3.U-boot编译过程
编译过程
安装库
解压文件
配置U-boot
编译U-boot
子主题
源码结构
arch:存放着和架构有关的文件
cpu:CPU相关的代码
board:开发板相关的代码( freescale)
configs: uboot配置文件
common:与体系无关的代码,用来实现各种命令的C程序
disk: disk驱动的分区相关代码
drivers:通用设备驱动程序
fs:支持文件系统的文件
ne:网络相关的代码t
4.U-boot启动分析
BootLoader的启动过程
BootLoader的启动过程可分为两种
>单阶段(Single-Stage)
>多阶段(Multi-Stage) :具有更复杂的功能,更好的可移植性。
从固态存储设备上启动的BootLoader大多采用两阶段
stage 1
stage2
.初始化本阶段要使用到的硬件设备
将内核映像和根文件系统映像从flash上读到RAM中
调用内核
BootLoader的工作模式
BootLoader两种操作模式
启动模式:正常工作模式,通常正常启动情况下使用。
BootLoader从目标机上的某个固态存储设备上将操作系统自动加载到RAM中运行,整个过程并没有用户的介入。
下载模式:调试模式,开发人员使用。
BootLoader将通过串口或网络等通信手段从主机(Host)下载文件,然后控制启动流程。
uboot启动信息解析
U-Boot命令
1.信息查询命令
bdinfo命令:
查看板子信息
printenv命令:
用于输出环境变量信息
version命令:
查看uboot的版本号
2.环境变量操作命令
setenv命令:
修改环境变量/新建环境变量/删除环境变量
saveenv命令:
保存修改后的环境变量(环境变量保存到外部flash 中)
3.内存操作命令
md命令:显示内存值。格式md[.b,.w, .l] address [# of objects]
nm 命令:修改指定地址内存值。
4.网络操作命令
uboot 支持网络功能,但要保证和主机在一个网络中,网络连接ENET2如图
5.EMMC和SD卡操作命令
mmc info 输出MMC设备信息
mmc read读取MMC中的数据。
mmc wirte向MMC 设备写入数据。
mmc part列出MMC设备的分区。
mmc dev 切换 MMC设备(默认为EMMC) 。
mmc list列出当前有效的所有MMC设备。
mmc hwpartition设置MMC设备的分区。
6.FAT格式文件系统操作命令
fatinfo命令:
查询指定MMC设置指定分区的文件系统信息
fatls命令:
查询FAT格式设备的目录和文件信息
fstype命令:
查看MMC设备某个分区的文件系统格式
fatload命令:
将指定的文件读取到DRAM中
移植的基本流程
每种不同的CPU体系结构都有不同的BootLoader
除了依赖于CPU的体系结构外,BootLoader还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。
对于两块不同的开发板而言,即使它们是基于同一种CPU而构建的,但如果他们的硬件资源或配置不一致的话,要想在一块开发板上运行的BootLoader程序也能在另一块板子上运行,还是需要作修改。
BootLoader的配置
BootLoader依赖于具体的嵌入式板级设备的配置
单板的配置文件位于include/configs/<board_name>.h
<board_name>用相应的BOARD定义代替(例: smdk2410.h)
根据开发板硬件特性修改配置文件是其中最重要的_项工作
Uboot的移植方法
分析
处理器相同
处理器体系结构相同
以太网接口等外围接口相同
配置
编译
验证
Uboot的环境变量
bootcmd:启动Linux内核,uboot倒计时结束以后就会执行bootcmd中的命令。读取EMMC或者NAND Flash 中的 Linux内核镜像文件和设备树文件到 DRAM中,然后启动Linux内核。
bootargs:保存着uboot传递给Linux内核的参数
官方开发板移植
配置uboot
编译UBoot
烧写测试
秦东开发板,串口监测信息
U-Boot图形化配置
图形化配置设置文件:
.config :同前,保存uboot的配置项
Kconfig:图形界面的描述文件。子目录下也有相应的Kconfig文件。
1安装支持库ncurses
2对uboot进行一次默认配置
3运行界面命令
U-Boot启动Linux内核
nfs服务安装并启动
zlmage内核文件存在.
dtb 设备树文件存在