全部博文(153)
分类:
2009-06-22 12:51:45
庆祝贴:72v17 device驱动完毕
虽然被Epson的破代码小折腾了一下,但是结果还是美好的,呵呵,至此epson 72v17芯片host ,device驱动均完毕。
host能顺利挂接U盘,鼠标,键盘等设备。
device能顺利将板子上的存储资源和电脑相联系。
72v17移植注意点:
1. 这款芯片和cpu的连接有三种方式,分别为8位,16位的XWRH/L,16位的XBEH/L模式,这要看具体cpu的接口,在我们4020的1.5评估版中用的是16位的XBEH/L模式,这和epson的代码中的默认配置是不同的,所以我们在代码中改相应的寄存器,具体在72V17hcd(72v17udc)文件的initlsi函数中:S_R_REGS8(rc_ChipConfig - 1) = CPU_Endian | BE_MODE;
2. 还有一点也是和硬件相关的,就是这款芯片的时钟供给,代码默认为
3. 72v17的芯片设计有点古怪,或者说设计时考虑周到,它配置一些关键的寄存器都需要解保护,然后对其配置,然后在写保护,比如cpuconfig这个寄存器:
S_R_REGS8(rcC_ModeProtect) = ModeProtectClear;
S_R_REGS8(rc_ChipConfig - 1) = CPU_Endian | BE_MODE;
S_R_REGS8(rcC_ModeProtect) = ModeProtectSet;
而且很奇怪的是,chipconfig这个寄存器在写保护之后是没法读出来值了,注意。
4. 在initlsi函数中,
S_R_REGS8(rcC_ChipReset) = AllReset;
之后一定要加这个dummy read,无论是host驱动还是device驱动
/* dummy read */
chgendian = S_R_REGS8(rcC_CPU_ChgEndian);
5.gadget文件夹下的Kconfig要将config USB_GADGET_S1R72V17中的depends on ARCH_NS9750 去掉,不然在make menuconfig中会不可见。
使用注意点:
1.host ,device驱动不能同时选择。
2.在使用device驱动时,需输入命令:
insmod g_file_storage.ko file=/dev/mmcblk0 stall=0 removable=1;
其中insmod是加载模块命令;g_file_storage.ko模块将将会在下一版随usb驱动一起发布;file后面跟的是你想要和电脑连接的设备,比如我在这里就是mmc卡,你也可以选择其他存储介质;stall=0 removable=1照写即可。