天天看點

串行Norflash是如何實作XIP的?

先說問題:要想程式在串行的Norflash中運作,到底需要做哪些工作?

Norflash和Nandflash想必大家都知道。恕本人才學疏淺,最近突然發現Norflash可以并行連接配接實作XIP,竟然也可以串行通過SPI連接配接。然後查了幾款flash産品以及自己之前用的(之前用華邦的w25q32fv,一直當nandflash在用,慚愧),結合這些flash在IC設計中的應用,發現很多公司的IC産品(MV300,esp8266等等産品)都是通過串行Norflash實作XIP。

Norflash之是以可以片内執行,就是因為他符合CPU去指令譯碼執行的要求。CPU送一個位址出來,Norflash就能給一個資料讓CPU執行,中間不需要額外的處理操作。而Nandflash不是說不可以實作XIP,Nandflash不一樣是因為nandflash有位址,資料,指令共用IO口的問題,cpu把位址發出來之後,并不能直接得到資料,還需要控制線的操作才能完成。就是說他沒有專用的SRAM接口,另外還有nandflash與Norflash結構的差異導緻nandflash不太适合實作XIP。

那麼問題就來了,要想程式在串行的Norflash中運作,到底需要做哪些工作?

以華邦的w25q32fv為例,Dual Read、Quad Read和QPI都可以實作真正的XIP,把資料讀出來當然誰都會了,照着Spec上做就好了,關鍵是這個XIP,想不通是怎麼完成的。莫非在硬體連接配接上需要修改,增加SPI控制器之類的東西?

我是做軟體的,但是對底層的原理什麼的比較感興趣。希望可以和大家交流學習。

可能推測如下:

單純CPU的話需要相應的總線橋晶片支援,Soc的話可能内部已經內建了橋晶片,挂接到PCIE或者AMBA總線上,橋晶片的硬體邏輯已經實作串并轉換、總線仲裁、Cache結構、Burst等邏輯。另外Nor flash需要支援XIP模式,與普通讀寫稍有差異,但還是走SPI或QSPI