熟悉ARM板子 & Linux系统的小伙伴都知道,烧录在ARM板子上的Linux系统镜像是需要拿Linux源码,进行模块裁剪、驱动开发之后进行交叉编译出镜像文件image 才能最后烧录到板子上去。米尔FZ3深度学习计算卡跑的linux系统或Petalinux系统,开发过程也是如此。笔者今日下午进行了FZ3的交叉环境搭建和linux image 文件编译过程,其中遇到一些小坑,特此记录一下,便于有兴趣的小伙伴避坑。 主机环境:Ubuntu 20.04.1 LTS 64位
操作步骤:
1- 挂载 u盘 , U盘插入后的名称为 /dev/sda
- $ mkdir /mnt/usb
- $ mount /dev/sda /mnt/usb/
复制代码
2- 通过U盘拷贝交叉编译工具到Ubuntu主机 /opt/ 目录下;
解压缩:
- tar -zxvf aarch64-linux-gnu.tar.gz
复制代码- tar -jxvf aarch64-none.tar.bz2
复制代码 添加至系统环境变量;笔者是添加到 /etc/environment 这里。
添加完要
至此,交叉编译环境搭建完成。
当要编译能在FZ3板子上运行的程序等时, 需要确认 CROSS_COMPIL=aarch64-none-elf-g++
3- 通过U盘拷贝厂家提供的 linux 源码到Ubuntu主机 /opt/ 目录下;
- # tar -jxvf linux-xlnx-mpsoc.tar.bz2
- # cd linux-xlnx-mpsoc
复制代码
在此先说说,笔者编译时遇到的坑:
坑点一:交叉工具使用错误;
厂家给出了两个交叉编译工具,aarch64-linux-gnu.tar.gz 和 aarch64-none.tar.bz2 ;笔者一开始只安装了 aarch64-linux-gnu.tar.gz 这一个,后面的实践验证了,会报错;后面笔者把这两个交叉编译工具都安装了(即拷贝解压添加环境变量),然后在进行image编译时选择用 aarch64-none 的工具,成功了。
坑点二:Ubuntu 主机系统缺少flex库
缺少flex库,编译时会报出上面的错,解决方法也很简单:
在正式编译 image 前,需要先编译生成 * config 配置文件,否则会报下面这样的错:
意思是,缺少 auto.conf 配置文件,这个是编译程序必会依赖的文件;解决方法为:
- # make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- zynqmp_myd_defconfig
复制代码
接着就可以正式编译 image :
大概经过了5~8分钟的样子编译完成了:
可以看到编译成功的image 大小为16M, 很不错!
就先介绍到这,有兴趣的小伙伴可以试一下,FZ3 这款板子,很优秀啊!外接网线、键盘、鼠标、显示器,秒变一台mini电脑啊,明显感觉性能远超树莓派4:
未完待续......
|