您尚未登录。

楼主 # 2022-10-04 21:27:58

diyhome
会员
注册时间: 2022-03-02
已发帖子: 1
积分: 6

F1Cx00S使用主线编译踩的坑

注意:本文发表于2022.10.04,往后下面所述内容可能失效

首先感谢论坛坛主以及各路大神留下的这么宝贵的资料供我们这些后人查询

F1C200S这个片子是上手第一块嵌入式Linux的片子,之前一直玩的是STM32之类的纯裸机系统,直至一天无意间刷视频看到了国外大神制作的低成本的Linux Card。萌生了试着做一片嵌入式Linux的板子玩玩。一路找资料找到了这个论坛,参考了各位坛友的硬件设计以及设计中可能遇上的坑,设计了一版硬件并成功跑起来了。硬件方面还好,注意一下QFN封装中心放个大号过孔,以及PIN的引脚放长一点方便焊接就好了。软件的坑实在是踩了不少,这里留帖做个纪念,也警示一下后来者。

软件方面一开始就是正常的给这个板子编译u-boot、Linux Kernel、rootfs,期间我并没有遵循网络上所使用的的老版本环境编译,因为我的编译机器的关系,遵循老版本的第一步我就卡死了,现在记得是因为编译2018版本的u-boot的时候,它需要一个Python2的一个库(binman需要的,具体什么名字我忘记了),但是我的openSUSE Leap 15.3里面并没有这个库,也找不着。观察u-boot的commit发现其大约在2020年的时候就迁移到了Python3,所以我就用了u-boot的2022.07版
理所当然的,
    Linux Kernel版本:5.15.71 LTS
    buildroot版本:2022.08.1

这里感谢诸位前辈的付出,在我使用最新版的时候,很多的配置文件包括一些修改都已经被相关软件的主线分支合并进去了,直接用就是了
只是在使用一些外设(我这里目前只用到了usb)的时候需要打论坛里面的一些patch

说说我遇到的第一个大坑:建议后来者先把buildroot编译掉,然后用它编译生成的gcc去编译u-boot、kernel,Buildroot编译的gcc路径在./output.host,注意使用的时候需要将其lib添加到Linux动态链接库的环境变量里面
这里说明一下原因:openSUSE自带了一个gcc,我一开始用它编译了u-boot、kernel,结果到rootfs的时候,buildroot提示我我的编译器不支持glibc,我试了其它两个也不支持,具体原因我也不清楚,我最终的解决方案就是利用buildroot去构建一个arm-linux-gnueabi,然后用这个去编译u-boot以及内核,解决

第二个坑就是,glibc在2.15版本之后,就弃用了rpc的支持,导致busybox的mount nfs没法编译,buidroot维护的ulibc中也没有这个的支持了,所以如果需要使用usb挂载主机文件夹的需要注意这个,不要整的像我一样重新编译了好几次buildroot试图添加上rpc支持

这里介绍个配置menuconfig的小技巧,在使用/搜索到自己想要的配置项之后,直接按键盘上面对应的数字键可以快速跳转到相应的配置
以及buildroot如果修改了某些package之后可以单独重新编译这些package而不用整个工程全部都重新编译

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn