linux内核对USB与串口驱动移植
【摘要】
写在最前面
华清远见教育集团 15年专注高端IT培训 做良心教育,做专业教育,做受人尊敬的职业教育
创客学院官网:http://www.makeru.com.cn/ 华清远见创客学院嵌入式课程链接:http://www.makeru.com.cn/emb 华清远见创客学院物联网课程链接:http://www.makeru.c...
写在最前面
华清远见教育集团
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
-
-> 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
文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/feit2417/article/details/84912433
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)