文章目录
- U-boot编译
- 环境配置
- 下载Uboot
- 执行编译
- 分区一(boot分区)设置:
- 分区二(rootfs分区)设置:
- Kernel编译
- 修改参数:添加LCD st7789
- 单独编译设备树
- licheepi buildroot根文件系统
- ubootroot的目录结构
- 选中Target options以选择licheepi对应的架构
- Toolchain 配置交叉工具链
- Target package
- 编译
- 插卡,完成
U-boot编译
环境配置
先换源,避免后续的下载速度太慢
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kePUcWN-1671702397481)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222133921325.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/5361e4de50d7465786dca3200fde6c05.png)
执行 sudo apt-get update
下载一个vim,等下方便修改
sudo apt-get install vim
进入vi配置文件 sudo vi /etc/vim/vimrc
在配置文件设置行距为4并且打开行号
vim的使用这里步做过多讲解,自行百度
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2AFN5uO-1671702397482)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222140410003.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/c690a645a2bd4817814db7d24ce501ee.png)
进入正题,配置交叉环境,安装gcc编译器,本教程使用的是6.3.1版本
先cd /opt文件里面
执行 : sudo wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
如果出现安全证书过期,请换成http进行下载
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHiZiLDx-1671702397482)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222140955530.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/64a23a117cef4bf993089cd98ded53cf.png)
解压交叉编译器 sudo tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
完成 ls 查看一下文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5px2qI2m-1671702397484)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222141337823.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/2c00267151314524b113e27486b6ce4c.png)
添加交叉编译器路径 修改profile文件
sudo vim /etc/profile
再最后一行加入export PATH=命令行路径:$PATH
如:export PATH=/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:$PATH
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRDDk4MJ-1671702397484)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222141443552.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/a475668b90dd448794f7fc9b2db6ed8c.png)
保存退出后运行source /etc/profile 生效
或者重启系统生效
备注:如果需要查看路径,终端运行 echo $PATH。 Ubuntu几种路径添加方式对比:(11条消息) ubuntu添加环境变量的四种方法_K_K_yl的博客-CSDN博客_ubuntu添加环境变量
查看编译器是否安装成功,终端运行arm-linux-gnueabihf-gcc -v
成功会返回如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBCmpWDh-1671702397485)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222141719412.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/cd59a1ef1bf94f3fa7806f79fe1710a1.png)
将终端退出重新打开一下 安装设备树编译器
终端输入sudo apt-get install device-tree-compiler
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjUwVhby-1671702397486)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222141937440.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/22917b1c5eaa49fa8e33d3b08975dc37.png)
下载Uboot
安装git,终端输入sudo apt-get install git
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YgMGbctU-1671702397487)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222142118582.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/2338e5c31f6145dbbb05b0b38843aefd.png)
拷贝Uboot到Ubuntu下,终端输入 sudo git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental
克隆失败,重新克隆可以解决
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6MhiZBfv-1671702397487)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222143509185.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/154939b73efc44d7b81f00780e6e5462.png)
下载完成
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQq9w7nn-1671702397488)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222143601433.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/dd04125131b94275bbfc94a7388fe1c9.png)
进入u-boot
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z3biAZFE-1671702397488)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222143719278.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/4b1fb5fddbe14beaaa742d71ba7c784a.png)
uboot目录结构
├── api 存放uboot提供的API接口函数
├── arch 平台相关的部分我们只需要关心这个目录下的ARM文件夹
│ ├──arm
│ │ └──cpu
│ │ │ └──armv7
│ │ └──dts
│ │ │ └──*.dts 存放设备的dts,也就是设备配置相关的引脚信息
├── board 对于不同的平台的开发板对应的代码
├── cmd 顾名思义,大部分的命令的实现都在这个文件夹下面。
├── common 公共的代码
├── configs 各个板子的对应的配置文件都在里面,我们的Lichee配置也在里面
├── disk 对磁盘的一些操作都在这个文件夹里面,例如分区等。
├── doc 参考文档,这里面有很多跟平台等相关的使用文档。
├── drivers 各式各样的驱动文件都在这里面
├── dts 一种树形结构(device tree)这个应该是uboot新的语法
├── examples 官方给出的一些样例程序
├── fs 文件系统,uboot会用到的一些文件系统
├── include 头文件,所有的头文件都在这个文件夹下面
├── lib 一些常用的库文件在这个文件夹下面
├── Licenses 这个其实跟编译无关了,就是一些license的声明
├── net 网络相关的,需要用的小型网络协议栈
├── post 上电自检程序
├── scripts 编译脚本和Makefile文件
├── spl second program loader,即相当于二级uboot启动。
├── test 小型的单元测试程序。
└── tools 里面有很多uboot常用的工具。
安装make 终端输入 sudo apt-get install make
设置参数
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
#or sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig
#or sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YutrTdFQ-1671702397489)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222143840865.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/5b1bb74b23d04fd3a3201087716aefae.png)
安装libncurses5-dev,终端输入sudo apt-get install libncurses5-dev解决
uboot配置命令
终端输入 sudo make menuconfig
此时会跳出以下配置界面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdmhG9HI-1671702397489)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222144042998.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/7a6d0e402e8548b1b5de65f98a9db643.png)
—按回车,即选择当前菜单
------- 按Y 代表该config选项选中
------- 按N 代表不选中该选项
-------- 按M
代表该驱动编译成**.ko的方式,在系统起来之后,当驱动需要的时候加载---------按/ 可以查找某个选项---------退出<** > ----------按Y选中后的状态
这里面有几个常见的配置选项我们可以看下:
- 第一个Architecture select架构选择,不用质疑这个是ARM架构
- 第二个ARM architecture
这个选项比较重要,主要配置ARM框架下的常用的配置函数以及LCD等参数
DDR配置
选择这个,进入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ULtxp8YZ-1671702397490)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222144552438.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/45b4437927d44e1da1284571182d66ed.png)
再进这个
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4TTA43P-1671702397490)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222144704345.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/f4f61827a1ab4467ae8c947b6ca8e454.png)
···
Target select (Support sunxi (Allwinner) SoCs) #进去之后可以选择sunxi Soc系列芯片
···
[*] Sunxi SoC Variant # 这个就是对芯片Soc 的选择,我们可以看到配置选择了`sun8i (Allwinner V3s)
(360) sunxi dram clock speed # 配置dram的时钟速率
(14779) sunxi dram zq value # 配置dram的ZQ值,是用来动态加强DDR3的
-*- Board uses DDR2 DRAM # 使用DDR2 DRAM
时钟频率配置#
Boot images --->(1008000000) CPU clock frequency
这里设置了CPU的时钟频率
开机延时设置#
delay in seconds before automatically booting
这个是uboot开机的时候的一个等待时间的秒数,可以改大一点,默认是2s
SPL配置
SPL / TPL ---> 这个就是SPL相关的配置了
[*] MMC raw mode: by sector 按扇区
(0x50) Address on the MMC to load U-Boot from mmc加载uboot的地址
[*] Support GPIO 支持GPIO
[ ] Support I2C 支持I2C
[*] Support common libraries 支持通用lib
[*] Support disk paritions 支持分区
[*] Support generic libraries 支持一般lib库
[*] Support MMC 支持MMC
[*] Support power drivers 支持电源驱动
[*] Support serial 支持串口
spi lcd及串口输出配置
修改include/configs/sun8i.h 使uboot从tf卡启动
不需要LCD的在sun8i.h中加入以下
#define CONFIG_BOOTCOMMAND "setenv bootm_boot_mode sec; "
"load mmc 0:1 0x41000000 zImage; "
"load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb; "
"bootz 0x41000000 - 0x41800000;"
#define CONFIG_BOOTARGS "console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0"
需要LCD显示的在sun8i.h中加入以下
#define CONFIG_BOOTCOMMAND "setenv bootm_boot_mode sec; "
"load mmc 0:1 0x41000000 zImage; "
"load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb; "
"bootz 0x41000000 - 0x41800000;"
#define CONFIG_BOOTARGS "console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0"
备注:因为我们需要使用lcd显示跟串口同时输出,所以使用第二种加入后如下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSi4OeXE-1671702397491)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222152559579.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/2772bf596ada43759780fef257948797.png)
执行编译
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
编译成功后可以uboot目录发现多出了个u-boot-sunxi-with-spl.bin
如果权限不够,可以给这个文件夹最高权限
sudo chmod -R 777 u-boot
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rDBCRms4-1671702397491)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222145552096.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/99e24833637645fc9df558fb42bbfe61.png)
编译成功后可以uboot目录发现多出了个u-boot-sunxi-with-spl.bin
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spUHeiFN-1671702397492)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222145725511.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/14ee3a3bd94b4994bdb38c9b16b08933.png)
然后需要将SD卡格式化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-maZl4WS0-1671702397492)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150022226.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/9669abd9407041149c111f7d8a4bfc9e.png)
分区需要在Ubuntu进行,先安装软件
sudo apt-get install gparted
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IChfZViE-1671702397492)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150358845.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/bdda9b4bc96b474da2a744d8a35edb78.png)
打开查看SD卡是sdb
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9Le28mz-1671702397493)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150522431.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/ca567096061b45e58ed15ed024bc5468.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5QdDqrJ4-1671702397493)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150615422.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/bfeffdd67dbb47179a6c3a0262d75c1d.png)
右键删除fat32
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LewPI8rw-1671702397493)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150653244.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/db8d2674f1354900acfac26b9487c282.png)
分区一(boot分区)设置:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2pRRjSe-1671702397494)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150800454.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/273f026a0599403695a7cd185e5d6ae0.png)
分区二(rootfs分区)设置:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0F32fFk5-1671702397494)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150922804.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/d8f3607059b843d3a2a09ee1a3bf1178.png)
最终得到
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bumrkAmE-1671702397495)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222150948118.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/b7d0b03e885e4d9fa6e964eaf7a2d95e.png)
点一下勾勾完成,耐心等待
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-65UOg7yS-1671702397495)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222151053492.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/fed180d0b3cf4cb38ae3c49aa957980b.png)
完成后拔插一下这样就分区成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UL5MKlSj-1671702397495)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222151649448.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/f1da7f362ef84438b28d592515ee666b.png)
烧录到SD卡的8k偏移处
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CHzDCRZ0-1671702397496)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222151754828.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/bd8277901c4c4dbbb12f2580fd09e4b3.png)
Kernel编译
1、安装依赖#
sudo apt install git wget make gcc flex bison libssl-dev bc kmod
2、下载Linux源码
git clone -b zero-5.2.y --depth 1 https://github.com/Lichee-Pi/linux.git
3、编译源码
修改Makefile文件
cd linux
vim Makefile
[364]行 修改为ARCH = arm
[365]行 添加 CROSS_COMPILE = arm-linux-gnueabihf-
[366]行 添加 INSTALL_MOD_PATH = out
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdezJh36-1671702397496)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222153818396.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/4d1704c58faa47428ebfa2a4a54f610e.png)
修改参数:添加LCD st7789
终端输入make menuconfig
按如下箭头操作
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIGcWGy2-1671702397496)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222154028343.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/d26c0044fb0746ec88df77ca01107f47.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ln4degAn-1671702397497)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222154127942.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/4ba3555bc1c44d7abdd099d1006537dd.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o5yf6ZbA-1671702397497)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222154345883.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/bb0e8ee816f74a68be3310e7b22b3e5b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAigIgtG-1671702397497)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222154357342.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/7f4e12f3f4be4757b6bccebcbb733d86.png)
然后选Save并退出
要使用lcd要在设备树上做一些修改
1、sun8i-v3s.dtsi中注释掉自带的视频输出
终端输入vim arch/arm/boot/dts/sun8i-v3s.dtsi
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sz8RnPCn-1671702397498)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222154610958.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/93ffd420cbf348b2b7ad95ae64c6722b.png)
在sun8i-v3s-licheepi-zero-dock.dts增加屏幕驱动节点并注释掉i2c0
&spi0 {
status = "okay";
st7789v: st7789v@0{
compatible = "sitronix,st7789v";
reg = <0>;
status = "okay";
spi-max-frequency = <36000000>;
spi-cpol;
spi-cpha;
rotate = <0>;
fps = <60>;
buswidth = <8>;
rgb;
dc-gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>; //PB5
reset-gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>; //PB6
width = <240>;
height = <320>;
debug = <0>;
};
};
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KkO65RwD-1671702397498)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222155357758.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/8193c9ed2f67487e883cb7094843450b.png)
单独编译设备树
终端输入make dtbs
make licheepi_zero_defconfig
make menuconfig #一般不用修改,需要时单独改
make -j16
make -j16 modules #编译模块
make -j16 modules_install #安装模块
make dtbs #编译设备树
编译完成后,zImage在arch/arm/boot/下,驱动模块在out/lib下,设备树在arch/arm/boot/dts下。
然后把zImage,sun8i-v3s-licheepi-zero-dock.dtb放到第一分区
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-53Wu6Hm2-1671702397498)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222160127997.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/14bb708dce794033a621b3740006e061.png)
此时插卡上电串口有信息输出,但是没有根文件系统进不去
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3cVZ2DD4-1671702397499)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222160331175.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/f04a64cdc0bc4f5a859f7c9860fd1aaf.png)
licheepi buildroot根文件系统
首先安装一些依赖,比如linux头文件:
apt-get install linux-headers-$(uname -r)
apt-get install libncurses5-dev
apt-get install wget
apt-get install gcc automake autoconf libtool make
然后下载安装解压:
wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz
cd buildroot-2017.08/
make menuconfig
ubootroot的目录结构
.
├── arch: #存放CPU架构相关的配置脚本,如arm/mips/x86,这些CPU相关的配置,在制作工具链时,编译uboot和kernel时很关键.
├── board
├── boot
├── CHANGES
├── Config.in
├── Config.in.legacy
├── configs: #放置开发板的一些配置参数.
├── COPYING
├── DEVELOPERS
├── dl: #存放下载的源代码及应用软件的压缩包.
├── docs: #存放相关的参考文档.
├── fs: #放各种文件系统的源代码.
├── linux: #存放着Linux kernel的自动构建脚本.
├── Makefile
├── Makefile.legacy
├── output: #是编译出来的输出文件夹.
│ ├── build: #存放解压后的各种软件包编译完成后的现场.
│ ├── host: #存放着制作好的编译工具链,如gcc、arm-linux-gcc等工具.
│ ├── images: #存放着编译好的uboot.bin, zImage, rootfs等镜像文件,可烧写到板子里, 让linux系统跑起来.
│ ├── staging
│ └── target: #用来制作rootfs文件系统,里面放着Linux系统基本的目录结构,以及编译好的应用库和bin可执行文件. (buildroot根据用户配置把.ko .so .bin文件安装到对应的目录下去,根据用户的配置安装指定位置)
├── package:#下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk。
├── README
├── support
├── system
├── toolchain
└── utils # 实用工具
使用make config进入配置界面。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PjquXUS0-1671702397499)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222161008461.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/c0c18696d6ad4afd8e1e28cec4c82bd5.png)
选中Target options以选择licheepi对应的架构
licheepi用的v3s cpu 参数如下
CPU
ARM Cortex A7 @ 1.2GHz
Support NEON Advanced SIMD instruction
VFPv4 Floating Point Unit
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQSmOEtx-1671702397499)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222161552331.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/480c3fbae3e443649262ac1c18f68ca0.png)
Toolchain 配置交叉工具链
配置成外部工具链
Toolchain type (External toolchain) --->
x ( ) Buildroot toolchain
x (X) External toolchain
在u-boot时已经配置好外部工具,地址在
/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/
选中() Toolchain path (NEW),填入path
Toolchain prefix前缀是: arm-linux-gnueabihf
External toolchain gcc version:我们使用的是6.3版本,选中6.x
External toolchain kernel headers series:是在
arm-linux-gnueabihf/libc/usr/include/linux/version.h
里读取内核版本信息。本机的版本是4.6(263680=0x040600, 即4.6.0)
cat /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h
#define LINUX_VERSION_CODE 263680
External toolchain C library还是选择传统的glibc。需要小体积可以选uclibc(需要自行编译安装)。然后勾选上 [] Toolchain has C++ support?
最终配置
System configuration 配置系统参数

- System hostname:根据需要定义一个字符串,是控制台前面的提示符xxx@vsi,这里改为
(licheepi) System hostname - Init system:这里选择busybox,轻量级使用非常广泛。可选的有systemV,systemd.
- Root password配置登录密码。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J53bilRy-1671702397500)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222162659894.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/01beb6cf45104ee48c761688193259d4.png)
Target package
用于配置一些软件包,例如QT5
Target packages --->
x Graphic libraries and applications (graphic/text) --->
xx [*] Qt5 --->
配置完成退出保存,安装环境
sudo apt-get install g++ patch cpio python unzip rsync bc
编译
make
如果报错,make clean all一下重新编译,这里一定要注意gcc的路径,不然会过不去
编译完成后会在output/images下生成rootfs.tar
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ecl9P2Y-1671702397501)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222164018959.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/a21b88594f18489691d44d8d3cacb678.png)
解压到第二分区后就能使用了
我喜欢直接拖动文件,启动超级文件权限
sudo nautilus
将子文件全部拖出来,不然还是会进不去系统
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vi68d1uS-1671702397501)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222164337575.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/02cd448c71da494a9ca1f65cdf5be935.png)
默认失能串口登录,需要修改 /etc/inittab :
#console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GE
如果需要免密码登录,直接
#console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
ttyS0::respawn:/bin/sh
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ub0V3Jl5-1671702397501)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222164532675.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/ea00c496c15347c7929e6f20ebcd0263.png)
插卡,完成
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SUcaVvSV-1671702397502)(C:UserswlhAppDataRoamingTyporatypora-user-imagesimage-20221222174114450.png)]](https://file2.kaopuke.com:8081/files_image/2023060322/0cc027e721db4d82993d281b1305650b.png)
最后
以上就是简单秋天最近收集整理的关于全志V3S零基础教程U-boot编译Kernel编译licheepi buildroot根文件系统编译的全部内容,更多相关全志V3S零基础教程U-boot编译Kernel编译licheepi内容请搜索靠谱客的其他文章。
发表评论 取消回复