nor flash之4字節地址模式


背景

容量低於 16M bytes 的 nor,一般使用 3 字節地址模式,即命令格式是 cmd + addr[2] + addr[1] + addr[0] + ...

使用超過 16M bytes 的 nor flash,則需要了解 4 字節地址模式, 即命令格式是 cmd + addr[3] + addr[2] + addr[1] + addr[0] + ...

原因

為什么呢, 因為用 3 個字節表示地址,則其范圍是 0x000000 - 0xffffff = 0 - 16M,超過 16M 的地址就無法表示了,那自然就得上 4 字節了。

驅動修改

新的 uboot, kernel 驅動中都是支持的,配置下就可以了,如配置上 SPI_NOR_4B_OPCODES 。

如果在用的 nor 驅動沒有支持,那可以自行根據 datasheet,在初始化的時候判斷下容量,加個切換到 4 字節地址模式的操作,后續的讀寫命令等,也改用 4 字節地址。

注意事項

需要注意的是,一些芯片的 boot rom 無法支持 4 字節地址模式,只會用 3 字節地址模式跟 nor 通信。

所以切換到 4 字節地址模式后會導致直接重啟無法正常啟動。需要徹底掉電后重新上電,讓 nor 因為重新上電默認回到 3 字節地址模式,才能正常啟動。

一種處理方式是,在 reboot 的流程中,增加軟件退出 4 字節地址模式 的操作。這樣正常的 reboot,會先退出 4 字節地址模式再重啟,boot rom 就能正常識別了。

但軟件退出的缺點是,只能解決正常重啟的情況,無法處理硬件 reset 主芯片的操作,因為 reset 主芯片並不會讓 nor 也 reset,那么 nor 就仍處於 4 字節地址模式,不響應 boot rom 的 3 字節地址命令。

另一種更好的處理方式是,硬件設計上支持讓主芯片和 nor 同步 reset。

其他

nor 在 16M 這個容量是個分界點,不僅驅動上因為 4 字節地址模式的引入而更加復雜,價格上也是差別巨大,32M nor 遠不止 16M nor 價格的兩倍。

從價格考慮,用一片 32M 的 nor 還不如用兩片 16M 並自行通過片選去分時復用。也不如直接上 128M 的 nand,不過上 nand 的話,軟件上就復雜很多了,這里不再展開。

更多參考

nor相關文章
nor flash之頻率限制
spinor/spinand flash之高頻通信延遲采樣
nor flash之寫保護
nor flash之擦除和寫入
nor flash之寫保護開銷

本文地址:https://www.cnblogs.com/zqb-all/p/12442578.html
公眾號:https://sourl.cn/CKWtQJ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM