linux內核對USB與串口驅動移植
寫在最前面

華清遠見教育集團
15年專注高端IT培訓
做良心教育,做專業(yè)教育,做受人尊敬的職業(yè)教育
創(chuàng)客學院官網:http://www.makeru.com.cn/
華清遠見創(chuàng)客學院嵌入式課程鏈接:http://www.makeru.com.cn/emb
華清遠見創(chuàng)客學院物聯(lián)網課程鏈接:http://www.makeru.com.cn/iot
正文
回想一下之前用windows下的串口助手,接收和發(fā)送對底層開發(fā)板子的數據流。硬件層面上,下位機通發(fā)送數據,通過USB轉串口,實現了USB接口到通用串口的轉換;軟件層面上,需要串口驅動 CH341 PL2303,和USB驅動。然后才能通過串口助手(應用程序)來實現與下位機的交互。
在嵌入式系統(tǒng)上,內核是經裁剪過的,需要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/
驗證
重啟啟動開發(fā)板,將U盤插入USB口,可系統(tǒng)識別到設備節(jié)點
[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
進入目錄查看編譯的狀態(tài)
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/
驗證
重啟啟動開發(fā)板,將M0的USB串口插入到A9的USB串口上,查看設備節(jié)點信息
[root@farsight ]# ls /dev/ttyUSB0
/dev/ttyUSB0
IoT Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。