久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: eFAT32文件系統(tǒng)對4G以上的miniSD卡支持 [打印本頁]

作者: piaolin    時間: 2015-10-30 11:45
標(biāo)題: eFAT32文件系統(tǒng)對4G以上的miniSD卡支持
   最近用eFAT32讀寫操作時發(fā)現(xiàn)文件系統(tǒng)只能對2G的卡進(jìn)行讀寫,換成4G死活不行,于是乎開始搜了一下資料,原來是2G一下的是普通卡,上面沒有HC標(biāo)示,4G-32G是大容量的上面有HC字樣如圖:


不能支持4G的卡是及其壞的,所以我決定要讓現(xiàn)在用的文件系統(tǒng)支持4G的存儲卡片。

自然是上網(wǎng)找代碼了,“偷”了RT的代碼回來。回來看了一下代碼,代碼比較簡單,就是他做了個I驅(qū)動封裝結(jié)構(gòu)而已剝掉他不管就好了。 然后開始移植,把和硬件無關(guān)的全部拿來,然后修改代碼為我自己的style。換上自己的底層驅(qū)動。只保留他的運(yùn)算和判斷部分。交付文件系統(tǒng)的接口也做了修改。原來的代碼中做了一個MSD_read/write和SDHC_read/write,兩份驅(qū)動函數(shù),后來閱讀發(fā)現(xiàn)似乎沒有什么區(qū)別,我就照葫蘆畫瓢了。OK一切具備后編譯下載,并沒有得到我期待的正常的創(chuàng)建讀寫文件,而是得了個大零蛋回來。什么都沒有。從那時候開始找問題了,這是上周6的事。到現(xiàn)在基本上一周了。連續(xù)用掉哦好幾個晚上,本來都是打帝國時代的。被無情占用了.
總結(jié)如下:

一、初始化:主要目的是挑選出來SDHC卡和普通的V1.X卡片。
1、初始化的CMD8命令的正確響應(yīng)
區(qū)別是否是SDHC的一個重要節(jié)點(diǎn)是給他發(fā)送CMD8命令,如果是SDHC的都會響應(yīng)的,在程序中對這兩者的區(qū)別是V1.X和V2.X,代碼如下



2、初始化發(fā)送CMD55 + ACMD41 命令

3、 讀取OCR并分析


以上流程完成后初始化完成退出即可,有的程序中是還有后續(xù)的,哪些不要也可以。

二、讀取卡片總的扇區(qū)數(shù)量。這個就可以知道這個卡片是多么大的了。

V1.X的是



三、也是最重要的一環(huán)就是加載物理地址0扇區(qū)
這個加載是文件系統(tǒng)自己加在的,但是在操作中發(fā)現(xiàn)BUFF數(shù)據(jù)對,但不能找到啟動扇區(qū)。于是追蹤文件系統(tǒng)發(fā)現(xiàn)文件系統(tǒng)不健全少東西呀,。根本原因在讀取0扇區(qū)時返回的數(shù)據(jù)會被記錄進(jìn)mydis的分區(qū)結(jié)構(gòu)體中,這個結(jié)構(gòu)體返回的數(shù)據(jù)正確,在對結(jié)構(gòu)進(jìn)行判別的時候發(fā)現(xiàn)沒有這一項,也就是SD卡文件系統(tǒng)的類型這項,如圖

這塊代碼對是否是FAT家族進(jìn)行判斷,可能是代碼年代久遠(yuǎn),沒有0X0C的定義,這個FAT32系統(tǒng),所以在識別的時候他返回錯誤,這里只需要給他加入一個宏即可

//unkonw FAT32 SDHC
#define PT_FAT32x 0x0C       

這樣系統(tǒng)就可以對啟動扇區(qū)進(jìn)行正常的加載了。
四、讀寫驅(qū)動
值得注意的是讀寫驅(qū)動核心的接口和MSD的一模一樣,只不過是在地址輸入的時候加了一個判斷,

SDHC的下發(fā)的直接是扇區(qū)地址,無需轉(zhuǎn)換。
完成這這些之后就可以成功的創(chuàng)建讀寫文件啦。


實際上大部分時間是用來閱讀源代碼上。因為拿來品不是簡單的只用才行,要看個差不多吧,否則這種問題根本解決不了。現(xiàn)在好了附加產(chǎn)品是對文件系統(tǒng)的作者書寫有了大概的了解,明白了里面很多原來以為晦澀的東西,以及他的構(gòu)架。

他的構(gòu)架也是分層的,最底層是硬件然后上來是硬件接口驅(qū)動,然后就是一個獨(dú)特的IO管理系統(tǒng),主要完成文件系統(tǒng)對內(nèi)存的需求而制定的。遵循類似memalloc的規(guī)則,有分配有釋放。單位是一個扇區(qū)的大小512字節(jié)。有棧記錄有計數(shù)器。就是一個小型的內(nèi)存管理。只是很小很簡單。他直接參與和驅(qū)動的數(shù)據(jù)交換,數(shù)據(jù)被放進(jìn)高速緩存中。然后在上面就是FAT的分區(qū)記錄,對FAT的分區(qū)進(jìn)行記錄最多4個只用1個嘛。在上面就是基于文件和簇的還有FAT表相文件屬性等等。最終留了UI接口。可以基本的按照unix那套進(jìn)行啦。當(dāng)然由于軟件時間久遠(yuǎn),有些地方難免有問題,F(xiàn)AT類型就是典型的。他只支持到0XB。FAT32的類型。現(xiàn)在是0XC。自己要fix.所以想要移植一個東西,也需要對他有充分的了解才可以。而且并非那么簡單。有許多東西一時半會根本看不懂。3層結(jié)構(gòu)那基本是開玩笑的。不過慶幸的是結(jié)構(gòu)里面基本都是不帶指針的,要是在來幾個指針函數(shù),小鏈表虎林的,還會暈菜更久


作者: benclee    時間: 2020-4-10 09:17
謝謝分享




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99资源站| 黄片毛片免费观看 | 久久久性色精品国产免费观看 | 毛片电影 | 国产91在线播放 | 日本激情视频网 | 亚洲精选一区 | 久久国际精品 | 亚洲狠狠 | 欧美精品在线一区 | 羞羞视频在线观看网站 | 国产精品视频久久 | 6080yy精品一区二区三区 | 黄色免费在线观看网站 | 伊人超碰在线 | 中文字幕动漫成人 | 久久精品久久久久久 | 国产成人精品区一区二区不卡 | 91精品国产乱码久久久久久久 | 久草视频观看 | 超碰一区二区 | 亚洲精品一区二区冲田杏梨 | 无人区国产成人久久三区 | 黄色网址在线免费观看 | 美女三区| 亚洲日本一区二区三区四区 | 尤物在线精品视频 | 天天操夜夜艹 | 精品免费视频 | 国产精品69毛片高清亚洲 | 亚洲一区二区三区免费 | 久久久久国产一区二区三区四区 | 精品国产欧美 | 成人亚洲网站 | 久久精品亚洲精品国产欧美 | 精品一区二区久久久久久久网精 | 日韩在线一区二区三区 | 在线观看av网站永久 | 成人网视频 | 国产成人精品一区二区 | 欧美一级免费看 |