每個鏈節點有三個域:
第一個域: 00 byte,表示tuple code號,也即TPL_CODE Tuple code: CISTPL_xxx(各種代碼號見Table13-2);
第二個域:01 byte,表示tuple body字節數,也即到下一個節點的偏移地址;
第三個域:02~n+2 byte,表示tuple body內容;
有了這些知識,我們再來看我讀寫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號寫完,我要聽聽音樂了,上上網了。