|
|||||||||||
| 技術(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 |
我發(fā)現(xiàn)zlg/fs文件系統(tǒng)有錯(cuò)誤! |
| 作者:liufang520 欄目:ARM技術(shù) |
1. 刪除文件函數(shù)RemoveFile()中: (1)if (FindOpenFile(Drive, ClusterIndex, DirName) < MAX_OPEN_FILES) {刪除文件} 應(yīng)該改為: (2)if (FindOpenFile(Drive, ClusterIndex, DirName) >= MAX_OPEN_FILES) {刪除文件} 因?yàn)镕indOpenFile()的返回值為打開(kāi)的文件的句柄,如果(1)對(duì),則說(shuō)明文件已經(jīng)打開(kāi),此時(shí)是不能刪除文件的,所以我覺(jué)得應(yīng)該改為(2). 2. 改變當(dāng)前目錄函數(shù)ChangeDir(Path)中: 有調(diào)用函數(shù)GetDirClusterIndex(pPath): if (FindFDTInformation(&Rt, Drive, ClusIndex, DirName) != RETURN_OK) {uiErr = BAD_CLUSTER; break; } DirName是Path中的目錄名,if語(yǔ)句中既然成立,證明能找到Path中的目錄名,Path中的目錄名不是現(xiàn)在要改的嗎?怎么會(huì)存在呢? |
| 2樓: | >>參與討論 |
| 作者: liwenz 于 2005/12/8 22:14:00 發(fā)布:
我一直沒(méi)有看懂 我很想看懂這一部分,可沒(méi)有資料,沒(méi)辦法看懂。 看來(lái)你有什么資料,還能看出他的問(wèn)題。 你是怎么看懂的,望能交流 |
|
| 3樓: | >>參與討論 |
| 作者: lyy1981 于 2005/12/9 0:10:00 發(fā)布:
。 1,如果磁盤(pán)里沒(méi)有那個(gè)文件,怎么刪除?流程可能是 : 打開(kāi)文件---〉(如果文件存才) ---〉 刪除文件,這里也有個(gè)問(wèn)題:文件句柄如果用完,那個(gè)文件無(wú)法打開(kāi),也就不能刪除,不清楚zlg fs這點(diǎn)有沒(méi)有考慮 2,path = dirname + filename(也可能是目錄),if語(yǔ)句的目的好像是在判斷path指定的目錄是否存在,如果不存在,返回。建議樓主把代碼多看幾遍,這點(diǎn)僅從這點(diǎn)代碼無(wú)法判斷fs 是否有錯(cuò)。測(cè)試一下,應(yīng)該就知道了。。 |
|
| 4樓: | >>參與討論 |
| 作者: liufang520 于 2005/12/9 8:54:00 發(fā)布:
re:lyy1981 我覺(jué)得你說(shuō)的不對(duì): 1. 對(duì)于刪除文件函數(shù),有判斷文件是否存在,那是對(duì)的,我說(shuō)的錯(cuò)誤是在后面判斷文件是否打開(kāi),只有文件關(guān)閉才能刪除,它這里是用FindOpenFile()來(lái)判斷的,這個(gè)函數(shù)的返回值有二鐘情況:打開(kāi)的文件的句柄;沒(méi)有找到打開(kāi)的文件。應(yīng)該為后者才能被刪除!而書(shū)中的判斷剛好反了! 2. 你說(shuō)的是沒(méi)錯(cuò),可是不存在返回的話(huà),這個(gè)返回值就是改變當(dāng)前目錄函數(shù)ChangeDir(Path)的返回值,因?yàn)樵谶@個(gè)函數(shù)中,只有返回值不等于 BAD_CLUSTER才能改變目錄!也就是改變邏輯盤(pán)信息中的當(dāng)前目錄首簇號(hào)這一項(xiàng),這是改變目錄的實(shí)質(zhì)。 你覺(jué)得呢? |
|
| 5樓: | >>參與討論 |
| 作者: liufang520 于 2005/12/9 8:57:00 發(fā)布:
re:lyy1981 你有看過(guò)或調(diào)試過(guò)這個(gè)文件系統(tǒng)嗎? 我這是在調(diào)試中才發(fā)現(xiàn)的,不調(diào)試我哪看的出來(lái)? |
|
| 6樓: | >>參與討論 |
| 作者: liufang520 于 2005/12/9 15:55:00 發(fā)布:
re 程序在《ARM嵌入式系統(tǒng)軟件開(kāi)發(fā)實(shí)例》這本書(shū)中! |
|
| 7樓: | >>參與討論 |
| 作者: lyy1981 于 2005/12/10 0:13:00 發(fā)布:
我沒(méi)調(diào)過(guò) |
|
| 8樓: | >>參與討論 |
| 作者: liufang520 于 2005/12/10 10:08:00 發(fā)布:
re 我改了以上2個(gè)函數(shù)后,調(diào)試都通過(guò)了! 還有,周立功文件系統(tǒng)讀寫(xiě)文件很慢很慢,我寫(xiě)一個(gè)35K的文件都花了40S,這樣肯定不行。 我把讀寫(xiě)文件函數(shù)自己寫(xiě)了一下,結(jié)果很快,不到1S就好了! 看來(lái)這個(gè)文件系統(tǒng)還有很多問(wèn)題哦! |
|
| 9樓: | >>參與討論 |
| 作者: eleven11 于 2005/12/10 16:14:00 發(fā)布:
文件系統(tǒng)全部是線(xiàn)性查找的 我也修改了查詢(xún)算法 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |