开始学习Uboot,正好手头有树莓派,所以下载Uboot官方源码,官方源码已经加入了树梅派Uboot的代码。
一、环境搭建
1.虚拟机采用VMware,系统使用Ubuntu16.04
这里不介绍
2.Uboot下载
Uboot下载地址:http://ftp.denx.de/pub/u-boot/
下载最当前最新版本,
u-boot-2019.01-rc2.tar.bz2 | 2018-12-18 02:25 | 13M |
下载uboot源码后复制到/home/pi目录下解压
如果要查看官方支持的开发板可查看configs目录,如下图。(当然在该目录下也看到了firefly的rk3399,后面可以进行这个芯片的学习)
3.交叉编译器下载,这里的编译器可以选择gnueabi或者gnueabihf,在编译rk3399时换成64位的交叉编译器。
地址:http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/armeb-linux-gnueabihf/
在这里下载了一个较新的版本,在编译的过程中使用低版本会报错要求使用6以上的版本。
下载交叉编译器后复制到/home/pi目录下解压并修改文件夹名如下
配置环境变量
vim ~/.bashrc
在最后一行添加,注意$PATH后面有一个冒号:
export PATH=$PATH:/home/pi/gcc-linaro-arm-linux-gnueabihf/bin
然后重启或者执行source ~/.bashrc使环境变量生效
终端输入arm,两次按Tab键,出现arm-linux-gnueabihf安样证明交叉编译器环境变量配置成功。
二、编译
make rpi_3_32b_defconfig V=1 (V=1 表示make时显示详细信息)
报错,提示bison未安装
bison:GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看 从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最右” (GLR)语法分析器。
于是进行安装
安装完成后重新执行make rpi_3_32b_defconfig V=1
报错
flex:flex词法分析器是替代lex的免费开源软件。它是一个生成词法分析器(也称为“扫描仪”或“词法分析器”)的计算机程序。它经常在BSD派生的操作系统上与Berkeley Yacc解析器生成器一起用作lex实现(因为lex和yacc都是POSIX的一部分),或者与GNU bison(一个版本的 yacc)在* BSD端口[8]和Linux发行版中。 与Bison不同,flex不是GNU项目的一部分,也不是根据GNU通用公共许可证发布的。 [1]
于是进行安装
完成后重新执行make rpi_3_32b_defconfig V=1
执行make menuconfig在图型界面下进行模块配置
报错,提示ncurses库没有
安装解决
执行make menuconfig,进入配置界面
设置环境变量export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
编译
编译完成