大家好 我利用CH375開(kāi)發(fā)板驅(qū)動(dòng)HP打印機(jī) 當(dāng)我對(duì)打印機(jī)枚舉的時(shí)候 執(zhí)行到 獲取配置描述符的時(shí)候 返回0x17 是緩沖區(qū)溢出 請(qǐng)問(wèn)應(yīng)該怎么解決啊
那你要用外置固件來(lái)獲取描述符,發(fā)個(gè)EMAIL到技術(shù)信箱,給你發(fā)個(gè)外置固件的程序
hcn 我給技術(shù)郵箱發(fā)過(guò)郵件了 他們也給我回了 但是他們給我的那個(gè)外置固件程序 感覺(jué)有點(diǎn)亂 好象就是獲取設(shè)備描述符什么的 我現(xiàn)在獲取描述符的時(shí)候數(shù)據(jù)益處 就要分開(kāi)來(lái)獲取,我是自己寫(xiě)的固件程序,分別獲得配置描述符,接口描述符,端點(diǎn)描述符.但是我寫(xiě)的程序不能夠成功的獲取 你能不能給我你的郵箱 我把程序發(fā)過(guò)去 你有時(shí)間幫我看看 謝謝了!
不是這樣的,在獲取描述符的時(shí)候,實(shí)際上配置描述符,接口描述符以及端點(diǎn)描述符都是一起傳上來(lái)的,你只要通過(guò)外置固件程序發(fā)一個(gè)獲取配置描述符的命令過(guò)去就可以了
你發(fā)到tech@wch.cn這個(gè)郵箱
好的 我知道了 配置描述符,接口,端點(diǎn)描述符是一起送出來(lái)的 現(xiàn)在的問(wèn)題是 我在編寫(xiě)外部固件程序的時(shí)候,控制傳輸?shù)慕㈦A段可以順利完成 而且中斷返回碼也是0x14 到了控制傳輸?shù)臄?shù)據(jù)階段的時(shí)候就不行了 while ( s!=USB_INT_SUCCESS ); tog_recv=1; toggle_recv(tog_recv); s = issue_token( 0x09 ); 這時(shí)候s的值就成了0x2e了 我把程序給你發(fā)過(guò)去 你幫我看看 謝謝
還有一個(gè)問(wèn)題就是 既然利用你們給的那些指令獲得配置描述符的時(shí)候都要溢出 那自己編寫(xiě)固件得到配置描述符的時(shí)候也應(yīng)該是益處的啊 因?yàn)椋茫龋常罚祪?nèi)部緩沖區(qū)是一定的,對(duì)于一臺(tái)儀器描述符也是固定的啊.雖然自己編寫(xiě)可以指定返回?cái)?shù)據(jù)字節(jié)的多少 但是我們也不知道那些是有用的描述符啊 怎么解決啊
配置描述符的長(zhǎng)度超過(guò)64字節(jié)的話(huà)用我們寫(xiě)好的固件程序獲取描述符的話(huà)就會(huì)溢出,而用外置固件獲取描述符的話(huà),一次只獲取8個(gè)字節(jié)的描述符,而描述符的長(zhǎng)度實(shí)際在你的描述符里面都有定義,還有,在獲取配置描述符的時(shí)候,你要先獲取8個(gè)字節(jié)的數(shù)據(jù),這樣就知道你要獲取的描述符的長(zhǎng)度是多少,接著在根據(jù)描述符的長(zhǎng)度來(lái)獲取剩下來(lái)的描述符就可以了
利用外部固件程序的時(shí)候 返回值的長(zhǎng)短 不是可以自己設(shè)置嗎 你的意思是說(shuō)先獲取8個(gè)字節(jié) 然后根據(jù)這8個(gè)字節(jié)來(lái)確定下一次獲取多少自己是嗎 我QQ號(hào)是183247898 可以加我嗎 跟你好好請(qǐng)教一下 謝謝了
先獲取8個(gè)描述符,在配置描述符前8個(gè)字節(jié)里面第2和第3個(gè)字節(jié)代表的是配置信息的長(zhǎng)度,也就是你配置描述符的總長(zhǎng)度
不是第一個(gè)字節(jié)表示的是配置描述符的長(zhǎng)度嗎 即使獲得了配置長(zhǎng)度 我們能夠分次讀取嗎 這次讀去了前8個(gè) 下次在讀取的時(shí)候會(huì)從第9個(gè)開(kāi)始讀嗎 是不是還是要從第一個(gè)開(kāi)始讀啊. 我昨天把程序發(fā)到你們的郵箱里了 你幫我看看 我現(xiàn)在有點(diǎn)糊涂了 關(guān)鍵是我在外部固件程序執(zhí)行的時(shí)候 執(zhí)行到控制傳輸?shù)臄?shù)據(jù)階段的時(shí)候,反回的中斷狀態(tài)是0x2e,不是0x14 不知道原因是什么 while ( s!=USB_INT_SUCCESS ); tog_recv=1; toggle_recv(tog_recv); s = issue_token( 0x09 ); //數(shù)據(jù)階段 執(zhí)行IN事務(wù) 這時(shí)候s的值就成了0x2e了