linux内核对USB与串口驱动移植

网友投稿 933 2022-05-29

写在最前面

华清远见教育集团

15年专注高端IT培训

做良心教育,做专业教育,做受人尊敬的职业教育

创客学院官网:http://www.makeru.com.cn/

华清远见创客学院嵌入式课程链接:http://www.makeru.com.cn/emb

华清远见创客学院物联网课程链接:http://www.makeru.com.cn/iot

正文

回想一下之前用windows下的串口助手,接收和发送对底层开发板子的数据流。硬件层面上,下位机通发送数据,通过USB转串口,实现了USB接口到通用串口的转换;软件层面上,需要串口驱动 CH341 PL2303,和USB驱动。然后才能通过串口助手(应用程序)来实现与下位机的交互。

在嵌入式系统上,内核是经裁剪过的,需要Linux内核对这两种驱动程序的选配或者移植。

USB驱动的移植

添加USB设备树信息

root@linux:~# cd linux-3.14-fs4412/

root@linux:linux-3.14-fs4412# vim arch/arm/boot/dts/exynos4412-fs4412.dts

usbphy: usbphy@125B0000 {

#address-cells = <1>;

#size-cells = <1>;

compatible = "samsung,exynos4x12-usb2phy";

reg = <0x125B0000 0x100>;

ranges;

clocks = <&clock 2>, <&clock 305>;

clock-names = "xusbxti", "otg";

usbphy-sys {

reg = <0x10020704 0x8 0x1001021c 0x4>;

};

};

ehci@12580000 {

status = "okay";

usbphy = <&usbphy>;

};

usb3503@08 {

compatible = "smsc,usb3503";

reg = <0x08 0x4>;

connect-gpios = <&gpm3 3 1>;

intn-gpios = <&gpx2 3 1>;

reset-gpios = <&gpm2 4 1>;

initial-mode = <1>;

};

编译内核,cp到tftp根目录下

root@linux:linux-3.14-fs4412# make dtbs

scripts/kconfig/conf --silentoldconfig Kconfig

DTC     arch/arm/boot/dts/exynos4412-fs4412.dtb

root@linux:linux-3.14-fs4412# cp arch/arm/boot/dts/exynos4412-fs4412.dtb /tftpboot/

验证

重启启动开发板,将U盘插入USB口,可系统识别到设备节点

[root@farsight ]# ls /dev/sda

/dev/sda

配置内核的串口驱动: CH341   PL2303

进入内核源码目录,配置内核

root@linux:linux-3.14-fs4412# make menuconfig

Symbol: USB_SERIAL_PL2303 [=y]

Type  : tristate

Prompt: USB Prolific 2303 Single Port Serial Driver

Location:

-> Device Drivers

-> USB support (USB_SUPPORT [=y])

(1)     -> USB Serial Converter support (USB_SERIAL [=y])

Defined at drivers/usb/serial/Kconfig:510

Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]

Symbol: USB_SERIAL_CH341 [=y]

Type  : tristate

Prompt: USB Winchiphead CH341 Single Port Serial Driver

Location:

-> Device Drivers

linux内核对USB与串口驱动移植

-> USB support (USB_SUPPORT [=y])

(1)     -> USB Serial Converter support (USB_SERIAL [=y])

Defined at drivers/usb/serial/Kconfig:99

Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]

root@linux:linux-3.14-fs4412# make uImage

进入目录查看编译的状态

root@linux:linux-3.14-fs4412# cd  drivers/usb/serial/

root@linux:serial# ls *.o

built-in.o  bus.o  ch341.o  generic.o  pl2303.o  usb-serial.o  usbserial.o

cp到tftp根目录下

root@linux:linux-3.14-fs4412# cp arch/arm/boot/uImage /tftpboot/

验证

重启启动开发板,将M0的USB串口插入到A9的USB串口上,查看设备节点信息

[root@farsight ]# ls /dev/ttyUSB0

/dev/ttyUSB0

IoT Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[WPF]总结一些我在开发WPF时常用的工具
下一篇:如何使用 Wireshark Tshark 指定文件,时间,缓冲区捕获限制
相关文章