今天得到一个任务,是在当前nvidia tx2平台上使能usb cdrom并且调试烧录功能。
首先测试给到的信息是不能在平台上使用(废话嘛,能用还用我干嘛)
拿到本地ubuntu机器上看了下,使用brasero等软件可以顺利烧录。
此时捕获了后台dmesg的log,还有就是dev下面针对usb光驱生成的节点,和/sys/bus/scsi下面的信息
将光驱插入到目标平台(tx2)发现没任何反应,光驱也不动,后台看到系统可以识别usb设备,然后就没了,和台式机linux相比,少了一些sr的log。
针对英伟达当前主板对应的jetpack版本,下载对应的bsp包,编译内核。
针对缺少的sr log,在英伟达内核中搜索,发现是sr.c文件没编译进去,此时找到对应的CONFIG宏并且打开。那么交叉编译出来了第一个模块sr_mod.ko
insmod 到tx2上,发现缺少符号,然后打开cdrom.ko对应的宏并编译之。
两个ko都加载了,顺带编译了sg.ko,udf.ko一并insmod进去了。此时插入光驱,光驱可以转动,但是提示说找不到对应的文件系统ISO9660.无法挂载。
好吧,在linux/fs目录下搜索,找到对应的宏,打开编译成模块,顺带打开了Kconfig里面的两个针对iso9660的参数。,这时候得到了isofs.ko。安装上发现文件系统没错了,但还是无法挂在,提示wrong fs type,bad option,bad superblock on 巴拉巴拉。dmesg没有log。咩办法,百度看下挂在程序是在/lib/usbfs2/xxxx目录下,