11. petalinux驱动编译的两种方法

驱动编译的两种方法

  • 使用petalinux-build
  • 使用makefile进行编译

使用petalinux工具进行编译

  • 创建module
    • petalinux-create -t modules -n module-name --enable
      • 此时不使用--enable,后面需要根文件系统配置中module config进行使能
  • 编辑驱动文件
    • 在用户目录路径下recipes-modules
  • 编译
    • petalinux-build

使用makefile编译

  • 安装SDK
    • 不进行安装应该也可以,只是我在安装后进行的实验
  • 已经创建过一个工程并编译过内核
    • petalinux-build
  • 创建驱动文件夹
    • 编写驱动程序
    • 编写makefile
      • 需要修改modname,KERNELDIR
modname:=test-module

obj-m:=$(modname).o

PWD :=$(shell pwd)

MAKE :=make

KERNELDIR =/media/kemao/linux/zynq/basic/build/tmp/work-shared/zynqmp-generic/kernel-build-artifacts

CROSS_COMPILE = aarch64-xilinx-linux-

ARCH=arm64 # 指定目标架构为 `arm64`

all:
    $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR)
M=$(PWD) modules
clean:
    rm -rf $(modname).ko *.o *mod* \.*cmd *odule* .tmp_versions

.PHONY: all clean

Makefile解释

modname:=test-module
  • 模块名字
obj-m:=$(modname).o
  • obj-m 表示将 modname 这个文件编译为模块
PWD :=$(shell pwd)
  • 获取当前目录,返回给PWD
KERNELDIR =/media/kemao/linux/zynq/basic/build/tmp/work-shared/zynqmp-generic/kernel-build-artifacts
  • KERN_DIR 表示开发板所使用的 Linux 内核源码目录(这里使用的是petalinx编译后生成的内核源码),使用绝对路径
all:
    $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR)
M=$(PWD) modules
  • 具体的编译命令
  1. all::这是一个目标,表示当你在命令行中运行 make allmake 时,将执行其后面的命令。
  2. $(MAKE):这是一个变量,前面定义为 make,表示调用 make 命令。
  3. ARCH=$(ARCH):指定目标架构,这里 ARCH 变量前面定义为 arm64,表示目标架构为 arm64
  4. CROSS_COMPILE=$(CROSS_COMPILE):指定交叉编译工具链前缀,这里 CROSS_COMPILE 变量前面定义为 aarch64-xilinx-linux-,表示使用 aarch64-xilinx-linux- 前缀的交叉编译工具链。
  5. -C $(KERNELDIR):切换到内核目录,这里 KERNELDIR 变量前面定义为 kernel-build-artifacts,表示切换到这个内核目录。
  6. M=$(PWD):指定模块的目录,这里 PWD 变量前面定义为当前工作目录,表示模块的目录为当前工作目录。
  7. modules:这是 make 命令的目标,表示要编译内核模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都不会的研究昇

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值