泰山派编译记录(buildroot和Debian)

最近买了一个泰山派来玩玩,本来以为由官方的教程编译起来会满简单的,没想到还是出现了好多问题,下面记录一下编译过程和踩过的坑。

一、SDK下载和开发环境搭建。

1.sdk下载

在下载sdk的时候就犯了一个严重的的错误,没有仔细看官方的下载前必读的文件,结果只下载了repo的压缩包,编译buildroot需要的一些bl下的文件没有下载,导致后续在编译buildroot时耽误了将近半天的时间,吸取教训吸取教训
,具体的sdk下载过程可以去看官网文档。

2.开发环境搭建

由于最近想要更深入的接触一下linux,所以搭建了一个ubuntu22.04的双系统,
一开始是打算在22.04的主机上进行编译的,但是由于在编译debian系统时live-build版本过于高级,
和其他的一些工具链不能使用,所以用官方的docker开启了一个容器。
但是在部署docker时也遇到了一个问题:

docker run --privileged --mount type=bind,source=/home/wucaicheng/gw_work/EX_DISK_A,target=/home/lckfb --name="lckfb_android11_sdk" -h lckfb -it lckfb_android11_sdk_cmp

使用这条命令在使用镜像建立容器的时候报了一个警告,大概意思就是在该系统的默认用户有问题,无法主动登陆,这个问题导致后续
无法开启容器

zgc@zgc-Nitro-AN515-58:~/data/docker_taishan$ sudo docker run --privileged --mount type=bind,source=/home/zgc/data/taishan,target=/home/  --name="lckfb_android11_sdk"  -h lckfb -it lckfb_android11_sdk_cmp
docker: Error response from daemon: unable to find user lckfb #设置docker工作目录为/home/lckfb: no matching entries in passwd file.

后续在AI的求助下增加 --user root,以root用户登陆就好了,后续就可以使用默认普通用户登陆了,
很奇怪,每怎么用过docker,不是很理解,但就是这样解决了

后续docker就没有遇到什么问题了

二、系统编译

1.buildroot系统编译,烧录

本来只是想着玩一下Debian系统的,但是由于是个新手不是很了解编译过程和配置,所以就按着官方的教程一点一点编译,先编译好buildroot系统
,然后再编译deibian,把文件系统换成Debian就好了,但是貌似我只需要先单独编译好各个模块,在编译好Debian文件系统,就可以拿到Debian
操作系统了。
在使用22.04主机编译的时候遇到了一个很奇葩的错误,使用sudo以root去编译的时候会遇到

configure 不允许以 root 用户运行

这个问题

然后不以root运行的话,会报错没有权限删除两个文件,直接就是两头冲突了,然后我就主动把两个文件删掉了,然后就可以继续编译了,
但是后续还是编译失败,然后后续换成在docker里面编译就没有这个问题了,编译buildroot也没有再遇到过什么错误了,就是正常编译烧录了

这时候烧录是把镜像拷贝到U盘上,然后切换windows烧录,很麻烦,尤其是在我没有解决ubuntu休眠的问题情况下,导致每次ubuntu都相当于重启
,很恶心。烧录过程就找着官方的教程做就好了

2. Debian系统编译,烧录

由于上面已经编译过了buidlroot系统,一些单独的模块已经编译好了,所以直接运行一下

./build.sh debian

就可以编译Debian系统了,然后正常打包起来,生成镜像。

然后运行

./build.sh updateimg

生成update镜像。
考虑到每次切换win系统都很麻烦,所以这里就使用linux下的烧录工具,官方资料里面有,也有使用文档。

这里遇到了一个问题,在使用

//烧录升级固件并重启设备
upgrade_tool uf update.img

该命令去烧录的时候会报错

Program Log will save in the /home/zgc/upgrade_tool/log/
Loading firmware...
Support Type:RK3568	FW Ver:1.0.00	FW Time:2025-01-11 13:35:27
Loader ver:1.01	Loader Time:2025-01-11 12:42:24
Segmentation fault (core dumped)

(不知道为什么3566,检测出来3568)
这个是没有权限的问题,我就直接简单粗暴的提升权限

sudo chmod -R 777 /dev/bus/usb/

然后就可以烧录啦。
这个在结束后的一段时间内笔记本的风扇还是一直在转,使用top命令,发现该工具依然占据cpu 99,5%,不知道为什么它没有结束,还是在
一直运行,很奇怪,但是使用kill杀死它就好了

后续在linux使用ADB进行测试的时候又出现了一个错误

insufficient permissions for device: user in plugdev group; are your udev rules wrong?

经过查询貌似也是权限,和udev的问题,使用查询到的解决方案

在/etc/udev/rules.d/下建立一个文件android.rules
然后在文件中输入以下内容

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"

正常使用adb,然后进入adb之后执行

apt install g++

发现是有正常反映的,那么就证明Debian系统编译完成了。

完结,撒花。

### Buildroot 编译失败的解决方案 在编译 Buildroot 时,如果遇到下载失败的问题,通常是由于网络问题导致的。以下是一些解决方法建议: #### 1. 网络问题导致的下载失败 如果网络环境较差,可能会出现 404 错误或超时问题[^1]。为了解决这个问题,可以使用预下载的库文件来替代在线下载的过程。具体步骤如下: - 下载 `buildroot_dl_4c7c9df616fb.tar.gz` 文件并解压。 - 解压后会得到一个名为 `build` 的文件夹。 - 将该文件夹放置在与 `.repo` 文件夹并列的位置。 通过这种方法,可以避免因网络问题导致的下载失败。 #### 2. 使用泰山提供的资源 对于泰山相关的开发板,可以通过其提供的资源来解决编译问题。例如,可以从百度网盘下载相关资料[^2]: - 链接:[泰山](https://pan.baidu.com/s/1dCxIfWpQA2XUt8hHYE5Azg?pwd=clxm) - 提取码:`clxm` 下载并参考这些资料,可以帮助更好地配置 Buildroot 环境。 #### 3. 错误日志分析 在编译过程中,错误日志是定位问题的关键。常见的错误包括: - **依赖库缺失**:确保系统已安装所有必要的依赖项。 - **网络连接问题**:如前所述,可以使用预下载的库文件。 - **配置错误**:检查 Buildroot 的配置文件,确保没有遗漏关键选项。 #### 4. 结合 libcurl 进行网络通信优化 如果需要在嵌入式 Linux 中实现高效的网络通信,可以考虑使用 libcurl[^3]。这不仅可以优化网络请求,还可以减少编译体积。具体方法包括: - 定制编译选项以减小 libcurl 的体积。 - 将 libcurl 集成到 Buildroot 构建系统中。 - 添加异步请求处理机制以提高性能。 #### 5. U-Boot 参数设置 如果在启动过程中无法打断(`bootdelay` 值为 0),可以通过以下方法解决[^4]: - 在 U-Boot 命令行中设置参数,例如 `ipaddr`、`serverip`、`bootcmd` `bootargs`。 - 修改 U-Boot 源代码以调整 `bootdelay` 的值。 ```bash setenv bootdelay 3 saveenv ``` 通过以上方法,可以延长启动延迟时间,从而有机会中断启动过程。 --- ### 示例代码 以下是一个简单的 libcurl 使用示例,展示如何在嵌入式 Linux 中发起 HTTP 请求: ```python import pycurl from io import BytesIO buffer = BytesIO() c = pycurl.Curl() c.setopt(c.URL, 'http://example.com') c.setopt(c.WRITEDATA, buffer) c.perform() c.close() body = buffer.getvalue() print(body.decode('iso-8859-1')) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值