QNX ---- IMX6UL SDMMC调试
在QNX下,QNX提供了一个build的配置文件,和相关驱动源码,下载《QNX SDP 6.6 BSP for the Freescale i.XM6 Solo X Sabre SDB》开发包,导入到工程就可以开始BSP调试了。
我的开发是基于IMX6UL ARM Cortex-A7/M4处理器,编译不能够直接运行,需要对BSP进行修改,前几天调试QNX内核,能够启动系统和串口驱动。接下来调试SDMMC驱动,记录一下调试过程。
- 查看SDMMC目录架构和驱动加载方法:
从官方例子SDMMC驱动,提供了基本的驱动框架,其中base.c提供SD基本操作方法,sd.c根据板子指定配置引脚修改,本例子采用的SD卡,而我的开发板为TF卡,因此相对应于SD卡是没有WP管脚(写保护)的,仅仅存在CD(card select)管脚。因此需要加载sd.c的相关选项。
加载启动命令:
devb-sdmmc-mx6_generic cam pnp,verbose blk rw,cache=2M sdio addr=0x02190000,irq=54,bs=cd=0x209C000^29^179 disk name=SDMMC
其中addr为SD1基地址,irq为中断,cd=0x209C000^19^179对应得GPIO管脚配置。
修改完后,编译下载,查看dev目录下是否存在SDMMC设备。
然后并没有出现SDMMC设备,因此通过sloginfo查看驱动过程。
其中编号1800为SDMMC加载流程,提示TF卡没有插入,应该是没有检测到。修改GPIO配置:
修改SD1_CD引脚配置,然后下载进入,结果依旧,通过源码SD.C,SD1_CD引脚是通过中断检测的,应该需要配置GPIO中断,配置好中断,然后查看init_intrinfo.c文件的中断向量,
找到相对于的配置引脚,修改加载命令为。
devb-sdmmc-mx6_generic cam pnp,verbose blk rw,cache=2M sdio addr=0x02190000,irq=54,bs=cd=0x209C000^19^179 mkdosfs name=SDMMC
下载后,查看dev目录下挂在成功:
通过sloginfo 查看挂载信息:
可以查到TF驱动已加载。 然后采用mount 命令挂载该设备。
可以查看到SD的信息,由于该TF卡存的是中文歌曲,因此会出现乱码,但不影响挂载^-^。
不过遗留一个问题,该设备只能读,不能写,有哪位解决的没有。。。。。。。。