新闻  |   论坛  |   博客  |   在线研讨会
S3c2410_SDIO_调试笔记
xiajiashan | 2012-08-28 15:26:09    阅读:705   发布文章

作者:下家山

 

每个链节点有三个域:

第一个域: 00 byte,表示tuple code号,也即TPL_CODE Tuple code: CISTPL_xxx(各种代码号见Table13-2);

第二个域:01 byte,表示tuple body字节数,也即到下一个节点的偏移地址;

第三个域:02~n+2 byte,表示tuple body内容;

7.jpg

有了这些知识,我们再来看我读写conexant wifi sdio card ID号的操作:

步骤一:读地址0x001000

rSDICARG == 0x00200000;

rSDICCON == 0x00000B74;

响应

rSDICSTA == 0x00000A34;

rSDIRSP0 == 0x 00001021;

解读0x00000B74(略)

解读0x00000A34(略)

解读0x00001021:0x00001021的低8位表示从地址0x001000读出来的值为0x21,查看table13-2得知为CISTPL_FUNCID

步骤二:读地址0x001001

rSDICARG == 0x00200200;

rSDICCON == 0x00000B74;

响应

rSDICSTA == 0x00000A34;

rSDIRSP0 == 0x00001002;

解读0x00000B74(略)

解读0x00000A34(略)

解读0x00001002:0x00001002的低8位表示从地址0x001001读出来的值为0x02,根据table13-1可知CISTPL_FUNCID的tuple body大小为2字节,读出来的第一个tuple code号并不为CISTPL_MANFID(0x20),而且知道其下一个节点的偏移量为2,需要继续读。

步骤三:读地址0x001004

rSDICARG == 0x00200800;

rSDICCON == 0x00000B74;

响应

rSDICSTA == 0x00000A34;

rSDIRSP0 == 0x00001022;

解读0x00000B74(略)

解读0x00000A34(略)

解读0x00001022:0x00001022的低8位表示从地址0x001004读出来的值为0x22,查看table13-2得知为CISTPL_FUNCE

步骤四:读地址0x001005

rSDICARG == 0x00200A00;

rSDICCON == 0x00000B74;

响应

rSDICSTA == 0x00000A34;

rSDIRSP0 == 0x00001004;

解读0x00000B74(略)

解读0x00000A34(略)

解读0x00001004:0x00001004的低8位表示从地址0x001005读出来的值为0x04,根据table13-1可知CISTPL_FUNCE的tuple body大小为4字节,读出来的第一个tuple code号并不为CISTPL_MANFID(0x20),而且知道其下一个节点的偏移量为4,需要继续读。

步骤五:读地址0x00100A

rSDICARG == 0x 00201400;

rSDICCON == 0x00000B74;

响应

rSDICSTA == 0x00000A34;

rSDIRSP0 == 0x00001020;

解读0x00000B74(略)

解读0x00000A34(略)

解读0x00001020:0x00001020的低8位表示从地址0x00100A读出来的值为0x20,查看table13-2得知为CISTPL_MANFID

步骤五:读地址0x00100C

rSDICARG == 0x 00201800;

rSDICCON == 0x00000B74;

响应

rSDICSTA == 0x00000A34;

rSDIRSP0 == 0x00001013;

解读0x00000B74(略)

解读0x00000A34(略)

解读0x00001013:0x00001013的低8位表示从地址0x00100C读出来的值为0x13,因为已得到CISTPL_MANFID节点号,根据Table13-1可直接读出tuple body信息,故此时地址为0x00100C,而非0x00100B。所以,读出来的值0x13即为conexant wifi sdio card ID号,这里你也可以读出0x00100B中的值,看CISTPL_MANFID的tuple body总共占多少字节,即可以把其所有信息读出来。

其实,开始我并不知道,这0x13就为conexant wifi sdio card ID 号,只是我把后续的三个字节读出来才知道。这后续的三个字节是003826,这咋一看也不知道什么东东,但是,在我看conexant提供的驱动代码时,发现其fireware文件名为03826.h,这样我就猜出来了。你想想,这CIS里不放些这样的信息,放什么信息呢?后来的操作,证明我的猜测是正确的,在探索真理的过程中,需要摸着石头过河,既然是探索,就要边走边看,柳暗花明的好事是常有的!

终于把如何读ID号写完,我要听听音乐了,上上网了。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
02年接触ARM和ucos,开发过有线和无线图像报警器,IPCamera,人脸识别系统,OCR识别系统,指纹识别系统,05年开始从事Linux及Rtems下WiFi,camera,Ethernet等驱动开发工作,专做嵌入式linux培训,致力于把我十年来的研发经验传授给每一个学员,招人的可以找我,ximenpiaoxue4016@sina.com
推荐文章
最近访客