|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
用LPC2148開發(fā)mass storage device的問題 |
| 作者:openegg 欄目:ARM技術(shù) |
最近在做一個(gè)基于2148的usb存儲(chǔ)類的東西,因?yàn)楣δ鼙容^單一,小弟也剛接觸arm和usb,所以想學(xué)習(xí)一下,沒有全部移植例程,Bulk-only協(xié)議部分是自己寫的,2148底層的部分還是用的zlg的源碼。前些天已經(jīng)調(diào)通了scsi命令的read10命令,這兩天調(diào)write10的時(shí)候卡住了,具體是這樣,我收到了PC發(fā)出的write10命令的CBW,但后來bulk-out endpoint就沒有數(shù)據(jù)發(fā)過來了,我覺得是不是應(yīng)該向PC發(fā)一個(gè)確認(rèn)信號(hào)呢?如果是這樣應(yīng)該怎么發(fā)送?可是read10命令沒有這種情況呀,收到read10的CBW后直接從bulk-in endpoint向PC發(fā)數(shù)據(jù)就可以了。百思不得其解,請(qǐng)求各位大蝦的幫助。 |
| 2樓: | >>參與討論 |
| 作者: anyusb 于 2006/12/6 16:21:00 發(fā)布:
keil大叔給你做了一個(gè),你不用嗎? |
|
| 3樓: | >>參與討論 |
| 作者: openegg 于 2006/12/6 16:31:00 發(fā)布:
謝謝 我參考過keil的代碼,沒看出和我的差別在哪里。樓上的大蝦可否指點(diǎn)一下。多謝! |
|
| 4樓: | >>參與討論 |
| 作者: liwenz 于 2006/12/7 9:15:00 發(fā)布:
keil的只是讀寫ram而已,有讀寫sd的嗎? 我在找keil的讀寫sd的文件系統(tǒng)的代碼, 目前用的是zlg/fs |
|
| 5樓: | >>參與討論 |
| 作者: eleven11 于 2006/12/7 9:27:00 發(fā)布:
那只是一個(gè)驅(qū)動(dòng)啊 編寫一個(gè)驅(qū)動(dòng)就可以了,只要能和fs兼容,就好像yaffs作者發(fā)表的時(shí)候是針對(duì)nandflash的,但你也可以編寫norflash的驅(qū)動(dòng),使他的格式兼容nandflash的,就可以把yaffs用在norflash上了 |
|
| 6樓: | >>參與討論 |
| 作者: openegg 于 2006/12/7 11:57:00 發(fā)布:
小u盤 我把2148的片內(nèi)FLASH中的一部分當(dāng)作文件的存儲(chǔ)空間,只存很小的文件。我就用的zlg的底層的東西做的,現(xiàn)在就是不知道PC在發(fā)來write命令的CBW后應(yīng)該怎么做才能讓PC繼續(xù)發(fā)數(shù)據(jù)過來 |
|
| 7樓: | >>參與討論 |
| 作者: openegg 于 2006/12/7 12:02:00 發(fā)布:
這是用bushound捕獲的數(shù)據(jù),請(qǐng)高手分析一下
|
|
| 8樓: | >>參與討論 |
| 作者: computer00 于 2006/12/7 13:11:00 發(fā)布:
超時(shí)了。DO之后主機(jī)應(yīng)該會(huì)再發(fā)一堆數(shù)據(jù)出來. 也許是在這個(gè)DO時(shí),你的端口已經(jīng)掛起了,沒有ACK給它.或者你的端口沒配置好。 讀文件時(shí)正常嗎? |
|
| 9樓: | >>參與討論 |
| 作者: openegg 于 2006/12/7 14:31:00 發(fā)布:
回圈圈:讀是沒有問題的 xp可以識(shí)別為一個(gè)384k的可移動(dòng)磁盤。端口怎么會(huì)掛起呢,平常接收scsi命令也是正常的呀。會(huì)不會(huì)和緩存大小有關(guān)系,我設(shè)置的大小是512Byte,應(yīng)該足夠了吧。還有發(fā)沒發(fā)送ack在哪里可以看到呢?bushound能捕捉到么?應(yīng)該怎么發(fā)送ack?看2148的手冊(cè)覺得應(yīng)該是硬件自己處理的呀 |
|
| 10樓: | >>參與討論 |
| 作者: computer00 于 2006/12/7 22:58:00 發(fā)布:
我記得以前調(diào)試USB時(shí),如果你的設(shè)備不返回ACK, 那么在BUS HOUND上,就看不到它發(fā)送出去數(shù)據(jù)了,實(shí)際上主機(jī)已經(jīng)發(fā)出DO包了,但是由于沒有收到ACK,所以BUS HOUND也不顯示出來。 你看看第一個(gè)DO包之后,是不是哪里搞錯(cuò)了,使得后面的DO包無法返回ACK. |
|
| 11樓: | >>參與討論 |
| 作者: openegg 于 2006/12/11 12:49:00 發(fā)布:
問題基本解決 我把接口描述符的端口最大包長(zhǎng)度從原來的512字節(jié)改為64字節(jié),就可以接收到數(shù)據(jù)了。我以為既然LPC2148的接收端點(diǎn)緩沖區(qū)是512字節(jié)的,那么端點(diǎn)的最大包長(zhǎng)度就可以是512字節(jié),看來這是兩碼事呀!感謝圈圈的提示!可能還會(huì)遇到其它問題,到時(shí)候還會(huì)請(qǐng)教各位高手。 |
|
| 12樓: | >>參與討論 |
| 作者: liwenz 于 2006/12/16 9:02:00 發(fā)布:
能把過程描述一下嗎?主要是開始的過程 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |