0 px30 linux bringup时buildroot的修改

文章目录

写在前面

主要是记录一下rk平台px30 linux移植过程中,buildroot做的一些修改和注意事项,记录一下,希望后来人可以少踩一点坑。

buildroot简介

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。
整个Buildroot是由Makefile(*.mk)脚本和Kconfig(Config.in)配置文件构成的,因此可以像配置Linux内核一样执行make menuconfig进行配置,编译出一个完整的、可以直接烧写到机器上运行的Linux系统文件(包含bootloader、kernel、rootfs以及rootfs中的各种库和应用程序)。
官方文档

https://wiki.t-firefly.com/zh_CN/Firefly-Linux-Guide/development_buildroot.html#pei-zhi

修改编译选项

配置修改这块属实是有点恶心,有几个需要注意的地方
1 有时候更改了配置得重新编译 make clean all 都不行 我目前只能make distclean ,但是这个清除的太干净,把dl中的安装包都清除了,emmm…最好自己备份一下dl中的数据包吧
2 有时候会因为下载地址有问题下载失败,此时也不能继续编译了,将他要下载的包通过手动下载的方式,下载之后放到dl包中,可以解决大部分问题。
3 修改defconfig的方式添加配置的方式,在他这里不太靠谱,这玩意不能自动把依赖加上,或者给你提示出来,不要过度依赖手动修改配置的方式,老老实实的用make menuconfig的方式,添加,找到所有的依赖,慢慢添加吧,最后make savedefconfig
4 添加了包之后需要 重新make clean all 重新搞?
目前看有一些工具链或者库改了之后,需要重新修改,我正好改的是编译工具链,官方文档摘抄如下

当通过 make menuconfig,make xconfig 或其他配置工具之一更改系统配置时,Buildroot 不会尝试检测应重建系统的哪些部分。在某些情况下,Buildroot 应该重建整个系统,在某些情况下,仅应重建软件包的特定子集。但是以完全可靠的方式检测到这一点非常困难,因此 Buildroot 开发人员已决定不尝试这样做。
1 何时需要完全重建?
目标体系结构修改时,需要全部重新编译
编译工具链修改时,需要全部重新编译
新增一个包无需全部重新编译,但是如果新增的是一个库,且别其他文件所引用,则需一起重新编
译,或者全部重编。
删除一个包的时候,需要全部重新编译,因为BuildRoot不会去删除编译产生的文件,这样会照成文件系统臃肿等问题,但是你没有必要马上重新编译,可以等到最后一起编译。
文件系统框架修改时,除了overlay 之外,都需要全部重新编译。

一般而言,当你遇到构建错误并且不确定所做的配置更改可能带来的后果时,请进行完全重建。

2 如何进行全部重建?
方法一:
rm -rf output/
方法二:
make clean all

文件系统分区

uboot 分区: 烧写 uboot 编译出来的 uboot.img。
trust 分区: 烧写 uboot 编译出来的 trust.img。
misc 分区: 烧写 misc.img。给 recovery 使用。
boot 分区: 烧写 kernel 编译出来的 boot.img。
recovery 分区: 烧写 recovery.img。
backup 分区: 预留。
oem 分区: 给厂家使用,存放厂家的 app 或数据。只读,挂载在/oem 目录。
rootfs 分区: 存放 buildroot 或者 debian 编出来的 rootfs.img,只读。
userdata 分区:存放 app 临时生成的文件或者是给最终用户使用。可读写,挂载在
/userdata 目录下。

buildroot遇到的问题(比较杂)

1 UI界面方向翻转180度

网上搜到的正常修改方式

# 修改 /etc/xdg/weston/weston.ini

[output]
name=UNNAMED-1
# normal|90|180|270|flipped|flipped-90|flipped-180|flipped-270
transform=180

如果需要动态改变的方式

#可行
echo "output:all:rotate180" > /tmp/.weston_drm.conf   

#下面这个名字是正常的时候使用,我们这边使用这个名字不行
#[root@px30_64:/etc/init.d]# ls /sys/class/drm/
#card0-DPI-1/ card0/ controlD64/ renderD128/ version

echo “output:UNNAMED-1:rotate180” > /tmp/.weston_drm.conf

真正使用的时候不可用的原因:(FAE回复)
在这里插入图片描述
从log上看,你们的DPI显示器识别到的名字是UNNAMED-1:
[15:21:23.468] Output UNNAMED-1, (connector 71, crtc 60)
可能的原因是weston版本较低,还没有添加DPI显示器类型。
所以需要使用UNNAMED-1,或者更新最新sdk(weston-10)
emmm…
最后修改/buildroot/board/rockchip/common/base/etc/xdg/weston/weston.ini 重新编译烧写即可。

[output]
name=UNNAMED-1
transform=180

2 报错

2022-03-16T10:42:28 package/qemu/qemu.mk:110: * “Refusing to build qemu-user: target Linux version newer than host’s.”. Stop.2022-03-16T10:42:28 make: * [_all] Error 2

更换Ubuntu 16.04系统 (文档推荐版本)

3 buildroot编译时文件下载失败

在这里插入图片描述
将fontconfig-2.13.1.tar.bz2 放置到buildroot/dl. 重新编译 会先检查dl包的内容然后操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值