linux下不编译内核加载域格模块驱动(一)
Linux下使用模块一般需要编译内核,需要耗费不少时间,如果只是需要先简单测试下相关功能,可以使用临时加载驱动的方式,需要用到的主要命令是 modprobe。
基本操作示例
以域格CLM920_NC5为例,通过lsusb可以看到模块VID、PID分别为05c6、9025,但ls /dev/ttyU*没有端口。
下面就可以通过modprobe命令对模块进行临时加载,具体指令如下
sudo modprobe usbserial vendor=0x05c6 product=0x9025
通过指令可以看出,这种方式就是通过usbserial这个ko识别了模块的VID和PID再完成对模块驱动的加载。
(若系统中usbserial被直接编入了内核,无法操作,可参考《linux下不编译内核加载域格模块驱动(二)》)
域格ASR模块命令示例
如果使用的是域格ASR模块,如cat4的CLM920_AC3,cat1的CLM920_RV3等,则只需要将modprobe命令中的vendor和product ID对应替换即可。
域格ASR模块VID、PID分别为1286、4e3c,临时加载对应命令为
sudo modprobe usbserial vendor=0x1286 product=0x4e3c
可能遇到的问题
如果这个usbserial已经被占用,那就可能遇到加载不成功的情况,如下图
这个时候就需要把usbserial先卸载再重新加载来完成对我们需要的模块加载驱动的操作了,需要用到的指令是rmmod。
sudo rmmod usbserial
如果usbserial被其他进程占用,则需要依次卸载占用的进程。
如以下提示usbserial被“ch341”使用了,导致不能卸载,则需要先卸载“ch341”,再卸载usbserial,之后再使用modprobe加载就可以成功了。
Tips: 如果usbserial被多个进程占用 或 占用usbserial的进展也被其他进程占用,则需要依次卸载这些进程后,再卸载usbserial。
附:域格模块interfere&endpoint对照表
模块型号示例:CLM920_NC5 / NC3 / TD5 / TD3;平台:高通9x15、9x07
模块型号示例:CLM920_AC5 / AC3 / RV3 / RV8;平台:ASR1802S、1601