PetaLinux 是一个强大的实用工具,支持设计人员轻松创建 Linux 镜像并在自己的目标平台上运行。
PetaLinux 还能创建带有模板 Makefile 和 BB 文件的用户应用和模块,以便它们能够编译并添加到 rootfs 中。
但对于尝试开发模块的用户而言,从命令行执行创建、构建和部署可以加速整个流程。
在本篇博文中,我们将探讨如何在 PetaLinux 流程外创建模块,然后编译并部署在 ZCU104 评估板上。当用户确认模块正常工作后,即可将其添加到 rootfs 中。
<strong>构建 Linux 镜像:</strong>
petalinux-create -t project -s <path to bsp>.bsp
cd <plnx proj>
PetaLinux 使用 TMP 目录来存放阶段文件。通常后续会移除这些文件以便节省磁盘空间。
但此处我们不希望移除这些文件,因此需要在 build/conf/local.conf 中注释掉以下行。
首先,运行 petalinux-build 命令,然后使用 Ctrl + c 将其停止。这样即可为您创建这些文件。
<center><img src="http://xilinx.eetrend.com/files/2022-09/wen_zhang_/100564231-271802-01…; alt=""></center>
请注意 TMP 目录的位置。
可通过如下方式找到此位置:
petalinux-config
Yocto Settings
TMPDIR Location
<center><img src="http://xilinx.eetrend.com/files/2022-09/wen_zhang_/100564231-271803-02…; alt=""></center>
现在,构建 PetaLinux 工程:
petalinux-build
cd images/linux
petalinux-package --boot --fpga system.bit --u-boot
<strong>创建模块:</strong>
我有一个很简单的模块可用于演示,如下所示
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye!! \n");
}
module_init(hello_start);
module_exit(hello_end);
<strong>创建 Makefile:</strong>
export ARCH:=arm64
export CROSS_COMPILE:=aarch64-linux-gnu-
CC=$(CROSS_COMPILE)gcc
obj-m = test_module.o
KVERSION = /tmp/xilinx-zcu104-2020.1-2020.10.23-10.47.08-32S/work/zcu104_zynqmp-xilinx-linux/linux-xlnx/5.4+gitAUTOINC+22b71b4162-r0/linux-zcu104_zynqmp-standard-build/
PWD := $(shell pwd)
all:
make -C $(KVERSION) M=$(PWD) modules
clean:
make -C $(KVERSION) M=$(PWD) clean
请注意 TMPDIR,即通过上述方法所获取的位置。
构建模块:
然后,只需调用要构建的 makefile 即可:
<center><img src="http://xilinx.eetrend.com/files/2022-09/wen_zhang_/100564231-271804-03…; alt=""></center>
<strong>在硬件上执行测试:</strong>
用户可以启动 Linux 并使用 SSH 将此模块复制到 rootfs,或者可将其复制到 SD 卡上。
我这里使用了 insmod 和 rmmod 来添加然后移除该模块。
<center><img src="http://xilinx.eetrend.com/files/2022-09/wen_zhang_/100564231-271805-04…; alt=""></center>