NAND FLASH驅動注意事項

2021-05-01 04:36:21 字數 578 閱讀 6014

1.nand flash寫入只能由1寫為0,所以寫入前必須先擦除,擦除後所有資料為1.

2.2k大頁面的64位元組冗餘資料按照飛凌的定義為:第0位為壞塊標記,第1-4位為2k頁面的ecc校驗,其他為0xff。

3.k9f1g08u0b的位址線有28根,對應空間應該是256mb,而實際空間為128mb,我的理解為a11是選擇是資料區域還是擴充套件資料區域。高的16位正好是頁面的位址。

4.bootloader中nand flash驗證誤區,用axd寫入的與.axf檔案和.bin檔案的flash分布不同,故造成讀取驗證的錯誤,其實讀取是正確的。。。。

5.在寫驅動時,我寫的檔案沒有printf的定義,但是呼叫了printf,編譯器將其當成標準庫函式來編譯,故沒有報錯,但是bootloader卻無法正常啟動,而且程式大小突然增大了4k。

兩篇linux下nand flash很好的文章:

核心驅動開發注意事項

1 核心的棧空間非常小,可能只有4k大小,因此核心函式中盡量不要用遞迴,不要宣告大的臨時變數,盡量用堆空間 2 documentation changes中有構造核心模組之前需要的工具版本 3 函式前加上 init標記表示該函式僅在初始化器件使用,模組被裝載後,模組裝載器就會將初始化函式扔掉,這樣可...

驅動程式makefile注意事項

最近研究qq2440,想做水下機械人的位姿檢測,用linux需要對裝置驅動程式設計,學了學,挺麻煩的,麻煩在編譯和載入上,在網上找到乙個例子不錯,抄下來備用。pc機上的 obj m hello.o kerneldir lib modules shell uname r build default m...

Linux裝置驅動移植注意事項

s64只能在核心空間使用 u8 u16 u32 用來使用者空間 驅動中最好使用 int8 t int16 t int32 t uint8 t uint16 t uint32 t int64 t uint64 t 這些 c99 標準確定長度型別 預設情況下,編譯器為結構體的每個成員按其自然對界 nat...