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

写在最前面

华清远见教育集团
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


 

全部评论

相关推荐

吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务