線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2338
推到 Plurk!
推到 Facebook!

寫入一筆資料到SD Card

答題得分者是:harrypp
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-03 14:53:21 IP:220.128.xxx.xxx 訂閱
我想寫入資料到SD Card

目前是透過SCSI Command 0x2A Write Command

但是他有個限制,一次只能寫入64k (512*128 bytes)

當我想寫入大於64k的資料,一定要對資料做切割,分成64k去送

但是目前有個問題,我想一次寫入大於64k的資料,請問有哪些做法或方向?

謝謝
harrypp
中階會員


發表:6
回覆:124
積分:60
註冊:2006-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-08 16:47:57 IP:218.210.xxx.xxx 訂閱
XP MassStorage的default driver就是如此,
MAC的話可以256*512bytes。

不想自己拆檔案的話,
為什麼不直接對該磁碟機開檔,
不要透過SCSI Command。
編輯記錄
harrypp 重新編輯於 2009-09-08 16:48:51, 註解 無‧
harrypp 重新編輯於 2009-09-08 16:54:56, 註解 無‧
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-08 17:51:53 IP:122.146.xxx.xxx 訂閱
我文中提到的資料其實不是檔案,是我程式執行時,random產生的東西,

我是要驗證我寫入跟讀出來的資料是否一致


===================引 用 harrypp 文 章===================
XP MassStorage的default driver就是如此,
MAC的話可以256*512bytes。

不想自己拆檔案的話,
為什麼不直接對該磁碟機開檔,
不要透過SCSI Command。
harrypp
中階會員


發表:6
回覆:124
積分:60
註冊:2006-08-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-08 18:36:07 IP:218.210.xxx.xxx 訂閱
Windows 64kB是Mass Storage Driver的原因,除非你想繞過那層 自己寫!
就算有Driver,但讀卡機那裡不見得有辦法一次收超過64kB or 128kB,
因為有些Reader為節省空間與速度,會Mask掉sector number其他超過的bit,
所以你下超過也有可能會當掉,這要針對讀卡機做實驗才知道。
所以建議你還是乖乖切或是透過OS切64k or 128k比較保險。

編輯記錄
harrypp 重新編輯於 2009-09-08 18:37:42, 註解 無‧
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-09-08 18:53:10 IP:122.146.xxx.xxx 訂閱
你說的沒錯,還好有人幫我寫了driver

只是我一直不懂,明明SCSI COMMAND 的WRITE有其他長度更長的(CMD = 0XAA 、 0x8A),為什麼沒辦法用

一切都是剛在摸索中,還好很多不會的慢慢有點頭緒

謝謝您的回覆


===================引 用 harrypp 文 章===================
Windows 64kB是Mass Storage Driver的原因,除非你想繞過那層 自己寫!
就算有Driver,但讀卡機那裡不見得有辦法一次收超過64kB or 128kB,
因為有些Reader為節省空間與速度,會Mask掉sector number其他超過的bit,
所以你下超過也有可能會當掉,這要針對讀卡機做實驗才知道。
所以建議你還是乖乖切或是透過OS切64k or 128k比較保險。

harrypp
中階會員


發表:6
回覆:124
積分:60
註冊:2006-08-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-09-08 19:13:04 IP:210.68.xxx.xxx 訂閱
你如果遵循default driver or SPTI的話,當初Windows就是限制在64kB。
自己寫Driver就沒這些限制了,你愛怎麼玩就怎麼玩。
你可以查查"MaximumTransferLength" "miniport driver"
harrypp
中階會員


發表:6
回覆:124
積分:60
註冊:2006-08-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-09-08 19:21:46 IP:218.210.xxx.xxx 訂閱
另一個重點Reader的介面是誰寫的?
Read 12 16, Write 12 16應該沒人接吧!
SCSI Command很多,
並不是所有的command都會做進去,
大家都只做OS Default會用到的command。
另一個方法你可以試試看ATAPI Command,
看HAL層會不會幫你轉SCSI Conmand,
讓HAL幫你切64kB。
我試過SCSI會自動轉ATAPI!
ATAPI-->SCSI還沒試過。

GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-09-09 00:43:21 IP:203.73.xxx.xxx 訂閱
謝謝您的幫忙,給了我一些方向
系統時間:2017-10-23 23:09:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!