Chinaunix首页 | 论坛 | 博客
  • 博客访问: 892836
  • 博文数量: 153
  • 博客积分: 4195
  • 博客等级: 上校
  • 技术积分: 2631
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-22 11:32
文章存档

2012年(7)

2010年(35)

2009年(111)

分类:

2009-06-22 12:51:45

庆祝贴:72v17 device驱动完毕

虽然被Epson的破代码小折腾了一下,但是结果还是美好的,呵呵,至此epson 72v17芯片host device驱动均完毕。
host
能顺利挂接U盘,鼠标,键盘等设备。
device
能顺利将板子上的存储资源和电脑相联系。

72v17移植注意点:

1.     这款芯片和cpu的连接有三种方式,分别为8位,16位的XWRH/L16位的XBEH/L模式,这要看具体cpu的接口,在我们40201.5评估版中用的是16位的XBEH/L模式,这和epson的代码中的默认配置是不同的,所以我们在代码中改相应的寄存器,具体在72V17hcd72v17udc)文件的initlsi函数中:S_R_REGS8(rc_ChipConfig - 1) = CPU_Endian | BE_MODE;

2.     还有一点也是和硬件相关的,就是这款芯片的时钟供给,代码默认为24M的时钟,但是我们的硬件使用的是12M的时钟,因此相应的代码也需要改动,S_R_REGS8(rcC_ClkSelect - 1) = CLKFreq_12M;

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照写即可。

阅读(1242) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~