嵌入式系统:
bootloader -->linux内核 --> 挂载根文件系统 --> 应用
一、uboot体验
1、烧写u-boot
uboot体验的时候,我们怎么知道是怎么配置编译的呢,可以查看README文件。
(1)解压缩
(2)打补丁
patch -p1 <../补丁文件
(3)配置
u-boot_1.1.6:make 100ask4x0_config
(4)编译
make
u-boot_1.1.6编译出现warning: target CPU does not support interworking 解决办法:
https://blog.youkuaiyun.com/qq_40674996/article/details/105036704
u-boot_1.1.6编译出现如下错误:
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivsi3.o): In function `__aeabi_uidiv':
(.text+0x0): multiple definition of `__udivsi3'
lib_arm/libarm.a(_udivsi3.o):/work/u-boot-1.1.6/lib_arm/_udivsi3.S:17: first defined here
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivdi3.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivdi3.o)
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivsi3.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivsi3.o)
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_dvmd_lnx.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_dvmd_lnx.o)
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_clz.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_clz.o)
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_dvmd_lnx.o): In function `__aeabi_ldiv0':
(.text+0x8): undefined reference to `raise'
Makefile:263: recipe for target 'u-boot' failed
make: *** [u-boot] Error 1
解决方法:将gcc version 4.3.2 换成3.4.5即可
把arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2解压到/work/tools目录下
然后修改环境变量vim /etc/environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"
改成
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin“
然后重启,不重启的话就手动更改:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin
2、uboot命令
uboot有哪些命令?
输入help
对某个命令的具体解释,如:? md
print
环境变量
二、uboot概述
BIOS怎么启动内核?
从硬盘上读入内核
那么UBOOT怎么启动LINUX内核?
从Flash读出内核,放到SDRAM上,启动内核。
那么uboot需要实现的内容?(基本)
1、读Flash
2、初始化SDRAM
3、启动内核
那么uboot需要实现的内容?(延申)
写Flash ===> 通过网络或者usb把内核写到Flash
1、读Flash
初始化时钟 ===> 因为默认上电是12M晶振
初始化串口 ===> 为了查看信息
2、初始化SDRAM
3、启动内核
总结UBOOT功能:
硬件相关的功能:
- 初始化时钟
- 关闭看门狗
- 初始化SDRAM
- 读Flash
开发板功能:
- 网卡
- usb
- 串口
- 写Flash