大於16MB的QSPI存放程序引起的ZYNQ重啟風險


  ZYNQ芯片是近兩年比較流行的片子,雙ARM+FPGA,在使用分立FPGA和CPU的場合很容易替代原來的分立器件。

  ZYNQ可以外接QSPI FLASH作為程序的存儲介質。

  QSPI和SPI flash是串行接口的NOR FLASH,在設計支持,容量都比較小,所以協議中只留了3Bytes尋址,也就是最大16MB空間。但是隨着工藝和技術的提升,現在32MB、64MB,甚至128MB和更大容量的SPI/QSPI flash都出現了。

  

  以32MB為例,當需要訪問大於16MB的地址是,新的器件提供了兩種方法:

  1. 切換bank,每個bank 16MB,地址扔采用3Byte模式,只能訪問此bank,需要訪問高地址時,切換到高bank;

  2. 切換到4Btyes地址模式,通過命令,可以把flash從3Bytes傳統模式切換到4Bytes新模式

 

  以上方法都可以實現大於16MB地址的訪問,軟件可以隨便玩。但是,ZYNQ有個設計問題,固化到片子內部的bootrom,“固執”得認為外面接的qpsi flash是16MB的,只能訪問這16MB:

  如果cold reset,flash自然會處於BOOTROM認識的狀態;

  但是warm reset時,如果之前切換到別的bank或者進入4Bytes模式,就會導致BOOTROM找不到正確的景象,從而啟動失敗。這是由血淚教訓驗證出來的。所以軟件在主動復位之前,一定要把flash設置為默認的模式;如果系統外接了硬件看門狗,看門狗也reset要一並拉到flash的reset引腳上!!!

 

 

  


免責聲明!

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



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