linux编译运行uart,Petalinux系列——3.使用Petalinux编译串口驱动CP210x

Petalinux系列——3.使用Petalinux编译串口驱动CP210x

.ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边,需要的时候插入内核,不需要时卸载。

传统方式编译ko文件

编译ko时需要linux的内核源码,以下面最简单的驱动为例,介绍通用的编译内核驱动的方法:

编写hello.c文件

#include

#include

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)

{

printk(KERN_ERR"Hello,world.\n");

return 0x0;

}

static void hello_exit(void)

{

printk(KERN_ERR"Hello,exit.\n");

return;

}

module_init(hello_init);

module_exit(hello_exit);

编写Makefile

obj-m += hello.o

CURRENT_PATH := $(shell pwd)

LINUX_KERNEL := $(shell uname -r)

LINUX_KERNEL_PATH := {PATH to Linux Source}/linux-headers-$(LINUX_KERNEL)

all:

make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) moduels

clean:

make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

编译ko文件

$ make

使用Petalinux编译ko文件

上面的流程比较繁琐,既要下载linux源代码,又要编写makefile,使用Petalinux,我们可以非常方便地编译ko文件。使用Petalinux既可以将内核源码中的部分驱动以module模式编译,也可以用来编译用户自己的驱动程序。下面以为PYNQ-Z2板卡编译cp210x和PWM驱动为例,介绍两种编译模式。

以module模式编译内核源码

$ petalinux-create --type project --template zynq --name PYNQ //新建一个petalinux工程

$ cd PYNQ/

$ petalinux-config --get-hw-description //导入hdf文件

$ petalinux-config -c kernel //配置内核

此时会弹出一个图形界面方便用户配置内核,由于内容过多,我们可以先搜索要编译的cp210x的位置。按下’/'键进入搜索界面,输入cp210x此处还可以看到cp210x的依赖。

f9dee540848038fd667b843318fc6fee.png

Device Drivers->USB support->USB Serial Converter support配置为module模式如下图所示

d0c6027d1e72b2f2b7574ee988230472.png

然后进入该选项,勾选USB CP210x family of UART Bridge Controllers配置为module模式如下图所示

b81cd3af59f547958cd5cecd6660c9d3.png

保存后退出。

我们在project-spec/meta-user/recipes-kernel/linux/linux-xlnx/user_xxx.cfg中看到

CONFIG_USB_SERIAL=m

# CONFIG_USB_SERIAL_GENERIC is not set

# CONFIG_USB_SERIAL_SIMPLE is not set

# CONFIG_USB_SERIAL_AIRCABLE is not set

# CONFIG_USB_SERIAL_ARK3116 is not set

# CONFIG_USB_SERIAL_BELKIN is not set

# CONFIG_USB_SERIAL_CH341 is not set

# CONFIG_USB_SERIAL_WHITEHEAT is not set

# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set

CONFIG_USB_SERIAL_CP210X=m

# CONFIG_USB_SERIAL_CYPRESS_M8 is not set

# CONFIG_USB_SERIAL_EMPEG is not set

# CONFIG_USB_SERIAL_FTDI_SIO is not set

# CONFIG_USB_SERIAL_VISOR is not set

# CONFIG_USB_SERIAL_IPAQ is not set

# CONFIG_USB_SERIAL_IR is not set

# CONFIG_USB_SERIAL_EDGEPORT is not set

# CONFIG_USB_SERIAL_EDGEPORT_TI is not set

# CONFIG_USB_SERIAL_F81232 is not set

# CONFIG_USB_SERIAL_F8153X is not set

# CONFIG_USB_SERIAL_GARMIN is not set

# CONFIG_USB_SERIAL_IPW is not set

# CONFIG_USB_SERIAL_IUU is not set

# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set

# CONFIG_USB_SERIAL_KEYSPAN is not set

# CONFIG_USB_SERIAL_KLSI is not set

# CONFIG_USB_SERIAL_KOBIL_SCT is not set

# CONFIG_USB_SERIAL_MCT_U232 is not set

# CONFIG_USB_SERIAL_METRO is not set

# CONFIG_USB_SERIAL_MOS7720 is not set

# CONFIG_USB_SERIAL_MOS7840 is not set

# CONFIG_USB_SERIAL_MXUPORT is not set

# CONFIG_USB_SERIAL_NAVMAN is not set

# CONFIG_USB_SERIAL_PL2303 is not set

# CONFIG_USB_SERIAL_OTI6858 is not set

# CONFIG_USB_SERIAL_QCAUX is not set

# CONFIG_USB_SERIAL_QUALCOMM is not set

# CONFIG_USB_SERIAL_SPCP8X5 is not set

# CONFIG_USB_SERIAL_SAFE is not set

# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set

# CONFIG_USB_SERIAL_SYMBOL is not set

# CONFIG_USB_SERIAL_TI is not set

# CONFIG_USB_SERIAL_CYBERJACK is not set

# CONFIG_USB_SERIAL_XIRCOM is not set

# CONFIG_USB_SERIAL_OPTION is not set

# CONFIG_USB_SERIAL_OMNINET is not set

# CONFIG_USB_SERIAL_OPTICON is not set

# CONFIG_USB_SERIAL_XSENS_MT is not set

# CONFIG_USB_SERIAL_WISHBONE is not set

# CONFIG_USB_SERIAL_SSU100 is not set

# CONFIG_USB_SERIAL_QT2 is not set

# CONFIG_USB_SERIAL_UPD78F0730 is not set

# CONFIG_USB_SERIAL_DEBUG is not set

然后编译工程

$ petalinux-build

编译结束后我们可以通过find指令找到ko文件

$ find . -name cp210.ko

欢迎大家关注Xilinx学术合作以及Pynq的官方公众号,里面有许多优质的学习资源等着你哦

希望了解HLS的同学可以关注公众号Xilinx学术合作以及PYNQ中文社区获取最新版《FPGA并行编程-- 以HLS实现信号处理为例》pdf ,关注任一公众号,回复 pp4fpgas 即可获得

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值