SD卡的驅動

2021-07-31 02:21:52 字數 566 閱讀 1314

這幾天一直在調大容量sdhc卡的驅動,期間遇到一些問題,現在只調好一張4g容量的卡,8g容量的卡還不行。

不得不感嘆sd卡協議的混亂和相容性之差。特別是命令響應這部分,看了很多文件,還是雲裡霧裡。期間參考正點原子的spi驅動sdhc的例子,那例子裡判斷cmd17的正確響應應該是0x00,然而在verilog**裡一直不起作用,最後參考了特權的**應該為0xfe,我查了些文件,也沒查出個所以然。

還有sd卡的邏輯位址和實體地址一定要分清楚,而且2gb以內的標準卡和2gb以上的hc卡在位址訪問形式上是不同的。這一點很重要:標準卡在讀寫操作時,命令中的位址引數是以位元組為單位定址的,而hc則是以塊為單位進行定址的。

在spi模式crc校驗是被忽略的,但仍然要求主從機傳送crc碼,數值可以為任意值。讀多塊操作和寫多塊操作的傳輸停止形式也不一樣,讀多塊時用命令cmd12終止傳輸,寫多塊操作時用stop tran token(停止傳輸令牌,值為0xfd)來終止傳輸。

在acmd41命令響應無效時,應重複多次傳送cmd55+acmd41命令,直到響應超時(這時應該檢查硬體問題和之前的初始化步驟(比如上電等待sd卡就緒的延時是不是足夠等等,我這裡設定為2ms))。

sd卡,驅動學習

linux sd卡驅動開發 一 sd 相關基礎概念 linux sd卡驅動開發 二 sd 卡驅動分析host篇 linux sd卡驅動開發 三 sd 卡驅動分析core篇 linux sd卡驅動開發 四 sd 控制器之真正的硬體操作 linux sd卡驅動開發 五 sd 卡驅動分析core補充篇 l...

wince下SD卡驅動開發

如圖所示 最下面的是你的h w部分,其中sd host controller是你的sd硬體控制器部分,你寫驅動需要這部分的spec。接著上面的sd host controller driver就是你需要實現的部分了,直接和你的控制器打交道。而bus層則是位於host和client之間的一層,主要用來...

Linux驅動之掛在SD卡

講解之前我得說一下,現在有乙個新的技術在公司已經在用了,遠遠比你在學校學的東西要先進一點,我們燒寫u boot程式一般是在flash上,然後由flash中的程式來引導linux核心,但是flash成本遠遠比sd卡要高,現在公司很多都用sd卡來代替flash,這個具體怎麼實現,還得自己去學習,我目前也...