arm linux usb驱动开发


回想一下之前用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
              
————————————————
版权声明:本文为CSDN博主「王建峰」的编辑整理,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/feit2417/article/details/84912433

相关阅读:
linux基础
linux怎么学
linux和GNU
GNU Free Documentation License
最受欢迎的linux发行版
initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读