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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4299|回復: 1
打印 上一主題 下一主題
收起左側(cè)

eFAT32文件系統(tǒng)對4G以上的miniSD卡支持

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-10-30 11:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
   最近用eFAT32讀寫操作時發(fā)現(xiàn)文件系統(tǒng)只能對2G的卡進行讀寫,換成4G死活不行,于是乎開始搜了一下資料,原來是2G一下的是普通卡,上面沒有HC標示,4G-32G是大容量的上面有HC字樣如圖:


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

自然是上網(wǎng)找代碼了,“偷”了RT的代碼回來。回來看了一下代碼,代碼比較簡單,就是他做了個I驅(qū)動封裝結(jié)構(gòu)而已剝掉他不管就好了。 然后開始移植,把和硬件無關的全部拿來,然后修改代碼為我自己的style。換上自己的底層驅(qū)動。只保留他的運算和判斷部分。交付文件系統(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命令的正確響應
區(qū)別是否是SDHC的一個重要節(jié)點是給他發(fā)送CMD8命令,如果是SDHC的都會響應的,在程序中對這兩者的區(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ù)會被記錄進mydis的分區(qū)結(jié)構(gòu)體中,這個結(jié)構(gòu)體返回的數(shù)據(jù)正確,在對結(jié)構(gòu)進行判別的時候發(fā)現(xiàn)沒有這一項,也就是SD卡文件系統(tǒng)的類型這項,如圖

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

//unkonw FAT32 SDHC
#define PT_FAT32x 0x0C       

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

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


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

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:70069 發(fā)表于 2020-4-10 09:17 | 只看該作者
謝謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品18久久久久久久 | 亚洲三区在线 | 国产欧美日韩一区二区三区在线观看 | 精品一区二区三区在线观看 | 欧美xxxⅹ性欧美大片 | 九九热免费在线观看 | 亚洲欧美在线一区 | 国内久久 | 欧美视频日韩 | 国产精品亚洲综合 | 亚洲一区二区中文字幕在线观看 | 亚洲精品一区二区三区中文字幕 | 久久久性色精品国产免费观看 | 日韩三片| 欧美美女爱爱视频 | 九九久久免费视频 | 成人av在线大片 | 久久精品亚洲一区二区三区浴池 | 毛片com| 白浆在线 | 一片毛片 | 亚洲精品高清视频 | 国产福利视频网站 | 欧美精品在线免费观看 | 国产农村妇女毛片精品久久麻豆 | 免费精品 | 99精品福利视频 | 久久久91精品国产一区二区三区 | 麻豆精品一区二区三区在线观看 | 色婷婷国产精品综合在线观看 | 欧美一区二区三区精品 | 超碰免费在线 | aaaa一级毛片| 国产精品久久久久久久毛片 | 日日淫| 正在播放国产精品 | 久久精品国产亚洲一区二区三区 | 久久亚洲一区 | 久久久九九九九 | 婷婷久久五月天 | 亚洲欧美精品 |