关于zynq petalinux 2020.2版本交叉编译环境工具链的搭建和使用备忘

本文介绍了如何通过Petalinux SDK优化驱动程序的编译过程,避免长时间的完整编译。首先,使用Petalinux创建工程并生成SDK,然后通过环境设置和交叉编译工具链编译应用程序。对于驱动程序的编译,需要指定内核源码路径,并正确链接Petalinux编译的内核目标文件,以确保与板载内核匹配。通过这种方法,可以显著减少编译时间,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用过xilinx zynq petalinux的人都知道petalinux编译一次非常慢,即使下载了sstate和download包之后编译还是很慢很慢,真是让人难以接受了。。。。

so....经过我一番艰苦研究之后终于弄明白了如何使用petalinux生成的sdk来编译自己的驱动程序,步骤如下:

第一步:vivado搭建硬件环境,编译出xsa,在petalinux下创建工程,按照官方指导步骤最后 petalinux-build 编译一次生成整个linux工程

第二步:使用petalinux-build --sdk,petalinux-package --sysroot命令编译出交叉编译工具链,这样只会在 images/linux/sdk文件夹下就生成了编译工具和sysroot,到此步骤之后,如果你只想编译linux 应用程序的话

就打开终端,输入source  xxxx/images/linux/sdk/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi 导入sdk到环境变量,然后 输入 arm-xilinx-linux- 按tab键就可以看到petalinux的gcc交叉编译环境已经有了,

之后按照常规方法编译你自己的应用程序就可以了,但是这样只能编译linux 应用程序,要开发petalinux 驱动程序的话是无法编译的,编译提示错误,找不到一堆头文件,要使用petalinux 2020.2的交叉编译器还要下面几个步骤

第三步:如果你想用petalinux 2020.2自带的sdk交叉编译环境编译自己的驱动程序的话,makefile需要指定一个预编译好的内核文件目录 LINUX_KERNEL_PATH := xxx,由于petalinux build出来的文件分散放在不同目录,因此直接使用petalinux工程目录 xxxx/components/yocto/workspace/sources/linux-xlnx下的源码是不行的,编译起来会提示你没有config过,让你重新编译一次,虽然拷贝一份内核代码到别的目录后自己make menugconfig一次能解决,但是这样的话会有一个问题,就是最终即使能正常编译出自己的 ko 文件,但是加载到zynq开发板上是不能 insmod 的,因为zynq上运行的内核和你编译ko的源码内核不是同一个环境编译的,因此不能加载ko。知道原因就好办,想办法把petalinux环境编译内核时生成的目标文件和目录找出来,将文件复制到内核源码下面的对应路径即可,经过一番研究,发现petalinux2020.2编译出的内核文件目录在 xxxx/build/tmp/work-shared/zynq-generic/kernel-build-artifacts这目录下,只要按照这个目录下的文件夹名称,将里面的东西复制到linux内核源码目录下对应名字的文件夹里面即可,经过我试验,确认这个方法是ok的,使用这个方法之后每次编译自己的驱动程序只要几秒钟,原来使用petalinux-build一次5分钟以上,简直爽爆了!

Makefile写法参考如下

obj-m := fuckpetalinux.o

CURRENT_PATH := $(shell pwd)
LINUX_KERNEL_PATH :=/xxx/Petalinux_2020.2/linux-xlnx (linux源码目录)

all:
	make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
	make -C $(CURRENT_PATH) M=`pwd` clean 

比较好的做法不应该直接复制文件,因为直接复制的话如果要重新编译内核的话,又要重新复制一次,非常麻烦,后面我直接创建petalinux编译后的文件超链接,将超链接复制到linux内核源码目录下,这样之后即使改了硬件,重新编译了内核代码都可以不用修改就能直接编译驱动程序了,记得每次打开终端时source一次即可

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值