buildroot构建hisi平台根文件系统和工具链
创始人
2024-05-05 08:17:42
0

buildroot构建hisi平台根文件系统和工具链

前面使用了arm-hisiv300-linux 工具链来作为Buildroot的外部工具链进行编译,然后遇到了很多编译问题。

https://blog.csdn.net/duapple/article/details/128516133?spm=1001.2014.3001.5501

这里不使用hisi的工具链,我们还是选择外部工具链,从远程下载工具链并安装。编译过程一切顺利,除了有的包下载非常缓慢以后,没有再报任何的编译问题,这里做个记录。

1. 下载最新源码

2. Menuconfig配置

Target options

在这里插入图片描述

Toolchain

在这里插入图片描述

可选的只有三种,直接选择ARM 2014.5

在这里插入图片描述

System configuration

在这里插入图片描述

Filesystem images

在这里插入图片描述

3. 编译及测试

sudo make

一切顺利。最后工具链会生成在output/host/opt/ext-toolchain 目录下。

duapple@92fa1c7e1a00:/media/data/workspace/buildroot-2022.02.8/output/host/opt/ext-toolchain$ ls 
arm-none-linux-gnueabi  bin  i686-pc-linux-gnu  lib  libexec  share
duapple@92fa1c7e1a00:/media/data/workspace/buildroot-2022.02.8/output/host/opt/ext-toolchain$ ls bin 
arm-none-linux-gnueabi-addr2line  arm-none-linux-gnueabi-cs         arm-none-linux-gnueabi-gcc-ar      arm-none-linux-gnueabi-ld       arm-none-linux-gnueabi-size
arm-none-linux-gnueabi-ar         arm-none-linux-gnueabi-cs-daemon  arm-none-linux-gnueabi-gcc-nm      arm-none-linux-gnueabi-nm       arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-as         arm-none-linux-gnueabi-elfedit    arm-none-linux-gnueabi-gcc-ranlib  arm-none-linux-gnueabi-objcopy  arm-none-linux-gnueabi-strip
arm-none-linux-gnueabi-c++        arm-none-linux-gnueabi-g++        arm-none-linux-gnueabi-gcov        arm-none-linux-gnueabi-objdump  cache
arm-none-linux-gnueabi-c++filt    arm-none-linux-gnueabi-gcc        arm-none-linux-gnueabi-gdb         arm-none-linux-gnueabi-ranlib
arm-none-linux-gnueabi-cpp        arm-none-linux-gnueabi-gcc-4.8.3  arm-none-linux-gnueabi-gprof       arm-none-linux-gnueabi-readelf

通过设置环境变量就能直接使用这个工具链了。然后可以用这个工具链来编译Hi SDK中的linux-3.4内核。

export PATH=$PATH:/media/data/workspace/buildroot-2022.02.8/output/host/opt/ext-toolchain/bin
cp arch/arm/configs/hi3518ev200_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -j12

最后烧录uImagerootfs.jffs2

我这里烧录使用arm-hisiv300-linux 工具链编译的内核,arm-none-linux-gnueabi 工具链编译根文件系统,系统也是能够直接启动并运行成功的。

tips:最后测试发现,还是不使用hisi的编译工具链编译Buildroot根文件系统比较好。这样,编译过程都不报错,十分的顺利。

4. 集成Hi SDK中的kernel

尝试使用buildroot编译内核,试了3.4到5.10的内核,5.0以下的内核可以编译通过,但是烧录后无法启动,应该是hisi对该版本的内核做了适配的,因此无法直接使用官方的kernel版本。最后还是使用buildroot生成的工具链编译Hi SDK中的内核。

但是可以把Hi SDK中的kernel集成到Buildroot中去。这样还能解决根文件系统启动后,/lib/module下面没有内核模块的问题。另外还可以解决squashfs根文件系统启动无法创建/dev/console以及其它设备的问题,由于Buildroot识别不到kernel的配置,因此devtmpfs无法生效,导致devtmpfs没有挂载到/dev上。

先把kernel打包成.tar.xz格式的文件。

tar cvf linux-3.4.y.tar linux-3.4.y
xz -z linux-3.4.y.tar -0

然后将打包好的kernel放到Buildroot中去:

sudo cp linux-3.4.y.tar.xz /media/data/workspace/buildroot-2022.02.8/dl/linux/

最后需要配置Buildroot编译kernel,设置自定义版本:

在这里插入图片描述

然后保存配置并退出,重新编译即可。这是将使用Buildroot生成的工具链编译Hi SDK中的Linux内核。编译完成之后,会在output/images 下生成我们的uImage文件 。这时通过tftp烧录uImagerootfs.jffs2

在这里插入图片描述

此时能够发现,启动不会报/lib/modules 的错误了,并且可加载的ko文件也被放到了对应的位置。另外,kernel中配置的devtmpfs也生效了,devtmpfs目录挂载到了/dev下。按理来说,squashfs启动也能够正常了,不会因为无法在/dev下面创建/dev/console 而报错进不了console了。

squashfs测试

在这里插入图片描述

OK,启动正常。

# cat /proc/version
Linux version 3.4.35 (root@92fa1c7e1a00) (collect2: error: ld returned 1 exit status) #3 Mon Jan 2 23:44:06 CST 2023
# uname -a
Linux buildroot 3.4.35 #3 Mon Jan 2 23:44:06 CST 2023 armv5tejl GNU/Linux
# cat /usr/lib/os-release
NAME=Buildroot
VERSION=2022.02.8
ID=buildroot
VERSION_ID=2022.02.8
PRETTY_NAME="Buildroot 2022.02.8"
#

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...