U-boot简介以及初次编译

介绍

u-boot简介

Bootloader:启动加载程序,从开机上电到操作系统启动的一个引导过程。

可以利用Bootloader初始化硬件设备、建立内存空间映射表。

不同的处理器架构都有不同的Bootloader,对于两块不同的嵌入式板,即使使用的是同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上。一般都需要修改Bootloader的源程序。

u-boot同时支持PowerPC、ARM、MIPS、X86等体系结构,支持上百种板子。

u-boot源码结构

可分为三类目录:

1、与处理器体系结构或开发板硬件直接相关

2、通用函数以及驱动程序

3、u-boot的应用程序、工具和文档
目录特性说明
board平台依赖存放电路板相关的目录文件。如smdk2401(arm920t)、sc520_cdp(X86)等目录
cpu平台依赖存放cpu相关的目录文件
lib_xxx平台依赖与体系机构相关的库文件,例如arm相关的库就在lib_arm目录中
include通用u-boot使用的头文件,还有支持各种硬件平台的汇编文件、系统的配置文件和支持文件系统的文件。其中子目录configs目录中有与开发板相关的配置头文件
common通用实现u-boot命令行下支持的命令,每一条命令都对应一个文件(cmd_xxxx.c)
lib_gengeric通用通用库函数的实现
net通用与网路协议相关的代码。BOOTP、TFTP、RARP和NFS文件系统的实现
fs通用支持的文件系统(cramfs、fat、jffs2、registerfs)
drivers通用u-boot支持的设备驱动程序(网卡、串口、USB)
disk通用对磁盘的支持
doc文档
tools通用生成u-boot的工具(mkimage、crc等)
examples例程一些能够独立运行的应用程序的例子(helloworld)

u-boot的配置编译

u-boot源码通过GNU Makefile 组织编译,顶层目录下的Makefile完成对开发板的整体配置,然后递归调用各级子目录下的Makefile,最后把所有编译过的程序链接成u-boot映像。

基本配置编译

初步编译:

在Ubuntu下找到存放u-boot的目录 创建alientek_uboot文件夹

解压安装包(截图为解压后)

tar -vxjf 压缩包名

# make <board_name>_config

IMX6ULL为例:

1、清除原有配置信息 2、添加配置信息 3、执行makefile V=1作用:显示过程

!!! 除初次编译以外 不执行第一句编译指令

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPLIE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

编译完成后目录内生成u-boot.bin. 此时需要向 u-boot.bin 添加头部信息

(它帮的)

u-boot启动log简析

带有调试性质的开发,uboot都是烧写到SD卡中的因为方便烧写

开发板复位后 3秒倒计时内按回车 显示log

从上到下的顺序:

cpu频率:800兆(显示为792MHZ) 实际运行为396MHZ

cpu温度:正常温度为 -40 与105之间 当前温度为42

复位模式:POR

开发板名称:IMX6U ALPHA|MINI

I2C :就绪

DRAM大小 :512M

MMC(EMMC 和 SD卡统称): 设备 :0 设备:1

** 警告-- 默认环境变量

输入、输出、报错方式:串口

切换到0分区

当前设备为 mmc0

网络:FEC1

错误网络FEC1 为设置地址

u-boot命令的使用

help(或者 help ?)

显示u-boot当前支持的所用命令

? 命令名字  ---该命令的功能介绍

bdinfo 开发板信息查询

printenv 查看当前板子的环境变量

setenv 设置环境变量(也可自定义环境变量,也可删除)

删除方法(设为空值)  setenv 环境变量名

saveenv 保存环境变量

saveenv 环境变量名 值(是字符串的话 用‘’包裹)

内存命令

md命令:用于显示内存值大小

md[.b,.w,.l] address[# of object]

命令中的[.b,.w,.l]对应byte、word、long,也就是分别以1个字节、2个字节、4个字节

来显示内存值。 address就是要查看的内存起始地址,[# of objects]表示要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。

nm命令:修改指定地址的内存值

nm[.b,.w,.l] address

修改后按q 退出

mm命令:修改指定地址的内存值后自增到下一地址

mw命令:使用一个指定数据填充自定义个内存块的内存值

mw[.b,.w,.l] address value[count]

cp:拷贝数据到另一地址

cp [.b,.w,.l] (源地址) (目的地址)(数量)

网络命令

网络相关的环境变量配置:

==ping命令==:网络连接测试

(3.2讲 25分钟)

**dhcp命令:从路由器上获取IP地址 **

获取的IP地址为 192.168.1.173

通过DHCP命令获取到的IP地址仅本次有效,不会修改环境变量中的ipaddr的值,重启以后使用的IP地址仍是ipaddr的值

nfs命令:网络文件系统

EMMC和SD卡操作命令

mmc info:打印当前所选中设备的信息

选定设备为8G的sd卡

mmc rescan:重新扫描

mmc list:列出当前所有可以使用的设备

mmc part:显示分区

mmc dev:切换设备

mmc dev 0 //切换到SD卡

mmc read:读取mmc设备上的某段数据之后保存到某一位置(从mmc中往内存DRAM读数据)

mmc read addr dlk cnt//addr为起始地址 dlk指第几块 读取cnt个块

FAT格式文件系统操作命令、

对于I.MX6U SD/EMMC 分为三个分区

第一个存放uboot(bootloader)

第二个存放Linux 内核 和设备树 FAT格式

第三个分区 系统的根文件系统EXT4

fatinfo :查询指定MMC设置指定分区的文件系统信息

fatinfo mmc(接口) 1:1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值