一、内核配置
首先需要配置内核,进入kernel文件夹,执行指令make menuconfig 进入图形化界面
Devices Drivers--->
[*]USB supprot---->
[M]USB Gadget Support ---->
[M] USB Gadget Drivers
[M] Serial Gadget (with CDC ACM and CDC OBEX support)
保存到.config文件,我用的是sigmarstar的222D板子,内核装载的时候,先默认保存到.config文件,需要手动将该文件的内容复制到对应的规格的配置文件,我的是pioneer3_ssc020a_s01a_spinand_demo_qfn128_dualSensor_usbcamera_defconfig 进入到kernel文件夹 执行modules编译指令 make modules 编译完胜以后,会在kernel/modules生成对应的ko文件; g_serial.ko libcomposite.ko usb_f_acm.ko usb_f_obex.ko usb_f_serial.ko u_serial.ko
二、内核加载驱动文件
有两种加载方式:
1.手动加载
将生成的ko文件下载进开发板,使用命令 insmod _serial.ko insmod _libcomposite.ko insmod usb_f_serial.ko insmod usb_f_obex.ko insmod _usb_f_acm.ko insmod g_serial.ko 注意加载顺序不能错! 使用lsmod 可以查看已经加载的modules 加载成功,对于sigmarsar的板子来说,会提示: <<usb<>[GADGET] UDC start <<usb<>[GADGET] PULL (on)
2.自动加载
Sigmarstar的ko加载有自动的脚本,可以直接放在project/kbuild/customize/4.9.84/p3/dispcam/kernel_mod_list_late 添加进去,该文件会将加载内容写入到开发板customer目录下的demo.sh内,用脚本自动加载,, 也可以直接在demo.sh将第一种加载的命令写入,实现自动加载。
3.修改设备名(modules)
开发板的/dev/下会出现/dev/ttyGS0这个设备, 使用命令cat /proc/devices, 找到251 ttyGS 表示tty设备和对应的id号; 使用命令 mknod /dev/usb_serial c 254 0 将ttyGS0改名为usb_serial
4.USB虚拟串口测试
加载完成以后,用USB线连接到PC,会出现一个虚拟串口;
①接收数据
开发板端,使用命令,监测串口数据 cat /dev/usb_serial PC端,打开串口工具,发送字符串,注意发送的时候需要添加回车换行,否则数据会阻塞在串口缓冲区! 在开发板端会收到对应的数据;
②发送数据
PC端,打开串口工具,以及对应的串口; 开发板端,使用命令 echo 12345 > /dev/usb_serial PC端串口工具就会收到12345; 参考连接
|