目录
前言
一、问题描述
二、解决步骤
1.更改option.c文件
2.修改内核编译选项
3.编译内核并加载到开发板
总结
前言
本文硬件使用正点原子imx6ull-min底板+emmc ddr512核心板,软件使用正点原子针对imx6ull开发板提供的出场Linux内核源码、设备树与根文件系统,发送数据设备视为提供STM32虚拟串口的设备。
一、问题描述
目前有这么一个场景,有一个数据采集卡可以通过USB口不断的向外发送数据,接收数据的设备采用正点原子的imx6ull-min开发版,通过开发上的一个USB host口来接收数据。数据采集卡通过STM32虚拟串口发送数据,而正点原子对于imx6ull-min开发提供的内核数据源码和根文件系统是不带USB转串口驱动的,所以从数据采集卡USB口连接到imx6ull-min上USB口时,开发板只能识别出有USB设备接入,并不能识成串口,那么该如何解决这个问题呢?
二、解决步骤
1.更改option.c文件
需要找到内核源码路径 /drivers/usb/serial 下的option.c文件,对文件内容进行修改。
添加宏定义:
#define STM32F4_VENDOR_ID 0x0483
#define STM32F4_PRODUCT_ID 0x5740
PS:STM32F4这个名称不影响结果,STM32F1系列的也可以写成STM32F4。
添加设备至识别目录中:
USB_DEVICE(STM32F4_VENDOR_ID, STM32F4_PRODUCT_ID)
2.修改内核编译选项
我是通过menuconfig图形化界面来更改内核编译选项,进入如下菜单,将USB driver for GSM and CDMA modems
置为*号,这个目录下是Linux自带USB转串口驱动,根据不同的USB转TTL芯片勾选各自的驱动,如CH340芯片就勾选CH341的驱动,FT232芯片就勾选FTDI的驱动,至于为啥STM32虚拟串口会勾选GSM的驱动,我也不太清楚。。。
Device Drivers --->
USB support --->
USB Serial Converter support --->
USB driver for GSM and CDMA modems
PS:要先将上一层的USB Serial Converter support
置为*号才将
USB driver for GSM and CDMA modems
置为*号。
3.编译内核并加载到开发板
将编译完成的zImage文件重新加载至开发板中,进程测试。
如图所示,USB设备2是STM32 Virtual ComPort,而开发板也已经能够识别到STM32虚拟串口了,并且生成对应的设备ttyUSB1。
使用minicom进行测试也能进行正常的接收。
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了imx6ull开发板内核安装STM Virtual ComPort虚拟串口驱动的方法,若有不对的地方,欢迎大家指正,谢谢。
参考博客:
(53条消息) linux内核驱动增加STM32虚拟串口设备驱动_linux内核安装虚拟串口驱动_grubly的博客-CSDN博客