CH376S的寫入問題

用CH376S對U盤進行讀寫 有一個命令想咨詢一下:

CMD_BYTE_WRITE ( 0x3C )

以字節(jié)為單位向文件寫入。該命令執(zhí)行后是將數(shù)據(jù)直接寫入到U盤中嗎?也就是問,如果多次使用該命令來進行小批量數(shù)據(jù)存儲是否會大大縮短U盤使用壽命?(就如同CH375的字節(jié)寫入)

不是直接寫進去,只要你每次寫的數(shù)據(jù)量不超過一個扇區(qū)的話,我們都可能會一次寫下去,例如你按照字節(jié)方式一次下30個字節(jié),那么你寫30個字節(jié)下去,但是真正寫U盤的扇區(qū)的可能之后一個扇區(qū)或者二個扇區(qū)(跨扇區(qū)問題)。而不是寫一個扇區(qū)寫了30次。


也就是說數(shù)據(jù)量如果不超過1扇區(qū),真正寫入U盤只有1次(跨扇區(qū)的話2次),無論調(diào)用CMD_BYTE_WRITE多少次? 依次類推,不超過2扇區(qū)的話,最多寫2次?


發(fā)生CMD_BYTE_WRITE命令,后面跟兩個字節(jié)的數(shù)據(jù)長度,然后等待中斷,并且回讀CH376允許你寫入的字節(jié)數(shù),如果該字節(jié)數(shù)小于你要寫的數(shù)據(jù)長度,則發(fā)送CMD_BYTE_WR_GO命令繼續(xù)寫入后續(xù)數(shù)據(jù),依次循環(huán),直到把所有的數(shù)據(jù)都寫完為止。最好先參考我們提供的例程,然后在字節(jié)寫。


程序已經(jīng)參考了貴司提供的例程,并且功能已經(jīng)能夠?qū)崿F(xiàn)。主要是擔(dān)心用CMD_BYTE_WRITE會反復(fù)寫入影響U盤壽命


反復(fù)的寫 只要不頻繁的更新文件長度,以及單次寫入的數(shù)據(jù)量最好是扇區(qū)的整數(shù)倍,基本對U盤的壽命沒什么影響,因為U盤底層是按照扇區(qū)方式擦寫,比如一個U盤的扇區(qū)是512,一次寫一個字節(jié),那么該扇區(qū)可能要擦寫512次,如果一次寫256字節(jié),那么該扇區(qū)可能就擦寫兩次就夠了。


哦,明白 其實字節(jié)寫入命令是寫入CH376內(nèi)部緩沖區(qū)中,F(xiàn)ileClose的時候才真正操作U盤,對嗎?


不是的,F(xiàn)ileClose是更新文件長度。 因為你寫數(shù)據(jù)的時候,CH376會把數(shù)據(jù)寫給U盤,但是寫數(shù)據(jù),并不是對U盤固定地方寫數(shù)據(jù),所以問題不大,但是關(guān)閉文件,更新文件長度是對固定位置寫的。所以影響對壽命的影響更大。 原則: 一次盡可能多的對扇區(qū)讀寫。盡量少的更新文件長度。


紅桃六上面說的我都理解

或者這樣問吧,要向一個新文件寫入30個字節(jié)數(shù)據(jù),如果分30次調(diào)用CMD_BYTE_WRITE命令,每次寫入1個字節(jié),最后調(diào)用一次FileClose來更新文件長度。對于保存30個字節(jié)數(shù)據(jù)的那個扇區(qū)寫了多少次?


你還是沒理解。 數(shù)據(jù)CH376是不緩存的。你說的是寫30次。這是數(shù)據(jù)。


按照8樓所描述的話,那么不考慮跨扇區(qū)的話,那么,這個扇區(qū)被寫了30次,調(diào)用FileClose來更新的話,只是更新了目錄項。關(guān)閉文件和寫文件對于U盤來說是更新不同的扇區(qū)的數(shù)據(jù)的。樓上所提的這個問題對于解釋U盤使用壽命的話,不能按照樓上說的一次寫一個扇區(qū),那么來計算U盤的壽命。 U盤的壽命涉及到: 1,目錄項的更新次數(shù),重復(fù)不斷更新目錄項的話,會減少目錄項的這個扇區(qū)的壽命。 2,F(xiàn)AT表的壽命,每次不斷的寫數(shù)據(jù),更新文件長度,會減少FAT表的壽命。 3,寫扇區(qū)的命令,例如每次寫一個字節(jié),那么,這個扇區(qū)的壽命就可能減少512。 當(dāng)然,上面所說的只是簡單的計算,實際上比這個復(fù)雜,因為還涉及到U盤FLASH的塊擦除,F(xiàn)LASH的塊的壽命等等諸多因數(shù)。上面的解釋也是僅供一種理解參考吧。


其實,這里并不是要嚴(yán)格計算U盤的使用壽命。所謂的使用壽命是針對于相同條件下字節(jié)寫入和扇區(qū)寫入兩種方式的比較。

我有一批數(shù)據(jù)要保存到U盤里(數(shù)據(jù)量為幾K到幾十K)。如果用字節(jié)寫入方式的話(每次寫入幾個或者幾十個字節(jié)),程序比較方便而且使用的RAM會相對較少,但是擔(dān)心用字節(jié)方式寫入的話會多次進行扇區(qū)擦寫,相對于扇區(qū)寫入的話會增加扇區(qū)擦寫次數(shù),進而影響U盤使用壽命。

現(xiàn)在看下來,還是要在用戶程序里開出一塊緩沖區(qū),數(shù)據(jù)集中到一個扇區(qū)大小后再寫入,這樣比每次寫十幾個字節(jié)要減少些擦寫次數(shù)。


是這樣的,不要寫的過于頻繁。U盤的NAND FLASH管理和U盤控制芯片有關(guān)系,至于里面采用什么樣的算法去管理塊,每個廠家不一樣。如果寫字節(jié)寫的過于頻繁的話建議您還是緩沖成數(shù)據(jù)塊,批量寫下去。


那么,再問一下,一次寫是指從調(diào)用CMD_BYTE_WRITE開始,到發(fā)送FileClose命令結(jié)束,就算一次寫完成對嗎?還是從哪到哪算一次完整的寫,再寫要從CMD_BYTE_WRITE開始對嗎?


在調(diào)用一次CMD_BYTE_WRITE到你把數(shù)據(jù)寫完,關(guān)閉文件只是更新目錄項而已。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频