1.配置uboot时make xxx_config,这个xxx要到boards.cfg文件中查找。
2. fatal error: linux/compiler-gcc5.h:No such file or directory错误
(gcc版本与编译的相关版本不一致导致的)
可以
cp /usr/src/linux-headers-4.15.0-142/include/linux/compiler-gcc.h .至 include/linux/
更改名字为compiler-gcc5.h
系统镜像下载
准备好镜像文件
开发板开机进如uboot命令行模式
执行fastboot
插入miniUSB下载线
安装fastboot驱动
修改脚本文件
下载u-boot:fastboot flash ubootpak ../linux_image/ubootpak.bin
下载内核:fastboot flash ubootpak ../linux_image/boot.img
下载跟文件系统: flash gtkfs ../linux_image/gtkfs.img
双击脚本文件 下载完成时 开发板提示 ubootpak -DONE
重启开发板
配置编译原理分析
用户执行 make x6818_config
脚本文件mkconfig中 @$(MKCONFIG) -A $(@:_config=)
$(@:_config=) : = 将_config去除 $取出去除后的变量 即x6818
mkconfig 主要从boards.cfg中找到x6818所在行 并将改行所有信息设置成mkconfig脚本的新的命令行参数
然后获取到的参数,存入到include/config.mk中
脚本中 >>表示追加该文件 >创建该文件
mkconfig 创建include/config.h并写入一个定制的头文件以及目标平台的相关信息
include/config.h 默认是被所有源码所包含的不变的头文件 以便于包含变化的头文件x6818.h
x6818.h中的裁剪配置均以CONFIG_开头
这个宏会被脚本解析为变量定义在include/autoconf.mk中
autoconf.mk最后又会被Makefile所包含 并决定那些文件需要编译
ubootpak.bin由uboot.bin和其他两个文件nsih 2ndboot打包而成
uboot命令
设置启动命令行参数
setenv bootargs=root=xxx 设置启动命令行参数
boot启动系统时自动加载的环境变量
setenv bootcmd ext4load mmc 2:1 0x48000000 uImage \; bootm 0x48000000
ext4load先把程序引导到内容中 ; 再从内存加载程序
下载镜像命令
loadb 0x48000000通过串口下载文件到内存中
fastboot 通过usb下载文件到磁盘中
tftp 0x48000000 通过网络下载文件到内存
启动命令
boot从外存启动
bootm 0x48000000 从内存 启动
从上位机启动(主要用于调试内核)
fastboot flash app uImage 先从PC端下载镜像到内存0x48000000
bootm 0x48000000 从内存 启动
三步添加自定义uboot命令
uboot启动内核的过程
(两个阶段 第一阶段是汇编(2ndboot)第二阶段为C代码(u-boot.bin))
通过ext4load 或者fastboot 下载内核到内存0x48000000
通过bootm 0x48000000启动内核
先找到cmd_bootm.c文件
找到bootm命令回调函数逐步调用启动内核