音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于ZLG/FS的速度問題

作者:bqt 欄目:ARM技術(shù)
關(guān)于ZLG/FS的速度問題
 
2樓: >>參與討論
bqt
關(guān)于ZLG/FS的速度問題
    用了一段時間的SmartARM2200開發(fā)板,感覺它的整體功能是很不錯的,它上面帶有ISP1161 PACK板,提供有USB1.1的主機和設(shè)備接口,用HostMassLib和ZLG/FS可以讀寫U盤文件,給應(yīng)用帶來很大的方便。
    不過我在使用HostMassLib和ZLG/FS讀寫U盤文件時,感覺速度很慢,程序是參照范例自己寫的,UCOSII中也沒有其它多余的任務(wù),大概的從U盤讀文件速度只有300~400Bytes/s,讀取少量數(shù)據(jù)還可以,讀取數(shù)據(jù)量大的話就要很長時間了。比如我從U盤中讀了一個240×320的圖片文件然后在TFT6758上顯示,要7分多鐘才完成。該圖片文件是按照TFT6758要求取模后生成的二進制文件,大小是150K。如果把圖片數(shù)據(jù)編譯到程序里,直接在TFT6758上顯示半秒鐘都不要。
    請問周工,在SmartARM2200開發(fā)板上,CPU頻率44M,BCFG0 = 0x10001460 外部RAM,BCFG1 = 0x10000460 外部FLASH,讀取U盤文件的速率應(yīng)該可以做到多少?謝謝!

3樓: >>參與討論
bqt
如果速度太慢,用起來就沒有什么實際意義了
如果速度太慢,用起來就沒有什么實際意義了。

4樓: >>參與討論
czh
你看看FileGetCh函數(shù)就知道為什么慢了
 
5樓: >>參與討論
bqt
我的測試結(jié)果
    的確,函數(shù)FileRead就是通過不斷調(diào)用FileGetCh從文件中讀取數(shù)據(jù),F(xiàn)ileGetCh這個函數(shù)執(zhí)行起來很花時間。參數(shù)處理、獲取文件所在邏輯盤信息、計算數(shù)據(jù)在哪個扇區(qū)、讀取數(shù)據(jù)都要花時間,但是我想最花時間的還不在這里,真正花時間比較多的是ZLG/FS里面對Cache的操作。
    體現(xiàn)在FileGetCh中就是OpenSec和ReadSec這兩個函數(shù),OpenSec是打開Cache,ReadSec是讀邏輯盤數(shù)據(jù)到Cache。它們當(dāng)中都有這樣的循環(huán):
for (i = 0; i < MAX_DISK_CACHES; i++)  作用是為了給非空閑Cache的RW_ID值加1、判斷邏輯扇區(qū)是否已經(jīng)被緩存、找出對應(yīng)邏輯扇區(qū)在Cache中的位置。在OpenSec中有3個這樣的循環(huán),在ReadSec中有1個。
    在fat.h中默認(rèn)的MAX_DISK_CACHES值為200,可以想象MAX_DISK_CACHES值設(shè)置得越大,在讀取大量數(shù)據(jù)時反而效率越低(這是相對于速度比較快的存儲介質(zhì)而言的)。因為不得不花很多時間去給非空閑Cache的RW_ID值加1,去判斷邏輯扇區(qū)是否已經(jīng)被緩存,去找出對應(yīng)邏輯扇區(qū)在Cache中的位置。雖然說這樣的循環(huán)并不是每次都要進行到底(給非空閑Cache的RW_ID值加1每次都要進行到底),只要找到了合適的Cache,就會用Break語句退出。但是在讀取大量數(shù)據(jù)時很多Cache都被使用了,要找到一個合適的Cache就要進行很多次比較。
    為了進行驗證,進行了以下的測試。用HostMassLib和ZLG/FS從U盤讀取一個150K的圖片文件(240×320),并在TFT6758上顯示出來,采用不同的MAX_DISK_CACHES值。
    MAX_DISK_CACHES=200,讀取用時7分鐘,速度大約300~400Bytes/s
    MAX_DISK_CACHES=20, 讀取用時65秒, 速度大約2363Bytes/s
    MAX_DISK_CACHES=10, 讀取用時44秒, 速度大約3491Bytes/s
    MAX_DISK_CACHES=1,  讀取用時25秒, 速度大約6144Bytes/s
    從這些測試數(shù)值可以看出MAX_DISK_CACHES值取得越小,讀取文件的速度反而越快,并且速度變化幅度是很大的。MAX_DISK_CACHES不能設(shè)為0,否則編譯不能通過。
    總之,我的結(jié)論是,對于速度比較快的存儲介質(zhì),文件系統(tǒng)Cache數(shù)目越多,讀取大量數(shù)據(jù)時效率越低,速度越慢。Cache對于速度很慢的存儲介質(zhì)才是有用處的。而在《ARM嵌入式系統(tǒng)軟件開發(fā)實例一》第58頁有這樣一句話:

    “注意:此數(shù)(指MAX_DISK_CACHES)對Cache的效率影響極大,太小會極大的降低Cache的性能,進而影響整個ZLG/FS的性能。”
    我想,書上這句話與我的測試結(jié)果剛好相反,但也不能說這句話是錯的,因為它沒有加條件。
    以上觀點僅僅代表個人的看法,由于對ZLG/FS文件系統(tǒng)的理解有限,難免會引出錯誤的結(jié)論,希望大家提出各自的看法。

6樓: >>參與討論
cccaao
你看看FileGetCh函數(shù)就知道為什么慢了 <無內(nèi)容>
應(yīng)該是看看FileRead函數(shù)就知道了
也就是說每讀一個字節(jié)都調(diào)用一次FileGetCh,一個Sector不知道要重復(fù)讀多少次,不是有毛病么,改寫之后能提高幾個數(shù)量級的速度

7樓: >>參與討論
bqt
好像是這樣
 
8樓: >>參與討論
hexinkang
這個要頂一下,請周公解釋解釋、
有沒有改進方法,如果有,馬上提示!
我也是要完成這個工作,不然的話,我死的很慘。

9樓: >>參與討論
liwenz
關(guān)注
 
10樓: >>參與討論
cyuan5
我馬上要用lpc2214+讀USB盤,能交個朋友嗎!cyuan5@163.com
打算搞個SmartARM2200板,它本身就有帶有ISP1161 PACK板?

11樓: >>參與討論
hexinkang
怎么沒人回答
周公呢?
有解答的方法嗎

12樓: >>參與討論
eleven11
如樓上所說,改一下那個函數(shù)
還有可以改一下查詢算法,這樣速度是很快的,真的很快,我512個cache速度也很快的,缺陷就是最大只能512了

* - 本貼最后修改時間:2005-12-14 21:10:32 修改者:eleven11

13樓: >>參與討論
eleven11
好像有幾處BUG。不過不影響使用
 
14樓: >>參與討論
bqt
是的
    是的,應(yīng)該把FileRead函數(shù)改掉,由原來調(diào)用FileGetCh函數(shù)的一個字節(jié)一個字節(jié)的讀取改為一個扇區(qū)一個扇區(qū)的讀取,這里主要要處理好文件讀取偏移量與讀取數(shù)據(jù)個數(shù)之間的關(guān)系,極端情況下即使只讀取兩個字節(jié)也要分別讀取兩個扇區(qū)。
    在進行連續(xù)的大量數(shù)據(jù)讀取的時候,可以跳過Cache,直接對扇區(qū)操作,使用Cache會降低效率,Cache對于讀取大量數(shù)據(jù)來說意義不大。但是讀寫數(shù)據(jù)量不是很大(比如小于512字節(jié))且讀寫很頻繁的時候,使用Cache絕對會提高性能。
    改過之后性能提高很大,讀U盤的速率有50Kbyte/s,這里要說一下,因為即使不使用文件系統(tǒng)直接調(diào)用HostMassLib驅(qū)動對U盤扇區(qū)進行操作速度也僅僅是60Kbyte/s左右,文件系統(tǒng)的開銷已經(jīng)不大了。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
SmartARM2200的液晶顯示小圖片時,為什么不能正確顯示?
初學(xué)ARM,是從LPC200系列開始還是從44BOX開始?
請教我用ADS1.2每次打開給的例程總提示出錯為什么?
2138串口不發(fā)0!什么原因?
ARM LPC2xxx的中斷為何總這樣不穩(wěn)定啊?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號