日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序片上(内)执行-nandFlash-norFlash

發布時間:2024/4/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序片上(内)执行-nandFlash-norFlash 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么程序不能直接在nandFlash上執行但可以在norFlash執行呢?


首先認識下nandflash和norflash:

NOR Flash 和 NAND Flash

  • 是現在市場上兩種主要的非易失閃存技術。Intel于1988年首先開發出NOR Flash 技術,徹底改變了原先由EPROM(Electrically Programmable Read-Only-Memory電可編程序只讀存儲器)和EEPROM(電可擦只讀存儲器Electrically Erasable Programmable Read - Only Memory)一統天下的局面。緊接著,1989年,東芝公司發表了NAND Flash 結構,強調降低每比特的成本,有更高的性能,并且像磁盤一樣可以通過接口輕松升級。NOR Flash 的特點是芯片內執行(XIP ,eXecute In Place),這樣應用程序可以直接在Flash閃存內運行,不必再把代碼讀到系統RAM中。NOR 的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響到它的性能。NAND的結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于Flash的管理和需要特殊的系統接口。通常讀取NOR的速度比NAND稍快一些,而NAND的寫入速度比NOR快很多。

片內執行-XIP

  • 這樣我們知道程序能直接在norlash執行的原因在XIP

XIP eXecute In Place

  • eXecute In Place,即芯片內執行,指應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中。flash內執行是指nor flash?不需要初始化,可以直接在flash內執行代碼。但往往只執行部分代碼,比如初始化RAM.
  • (注:片內執行不是說程序在存儲器內執行哦,CPU的基本功能就是取指、譯碼和執行。norflash能在芯片內執行,就是指CPU的取指模塊能夠直接從norflash中把指令取出來,供后面的譯碼和執行模塊使用)

NandFlash器件使用復雜的I/O口來串行地存取數據,8個引腳用來傳送控制、地址和數據信息。由于時序較為復雜,所以一般CPU最好集成NAND控制器。另外由于NandFlash沒有掛接在地址總線上,所以如果想用NandFlash作為系統的啟動盤,就需要CPU具備特殊的功能,如s3c2440在被選擇為NandFlash啟動方式時會在上電時自動讀取NandFlash的4k數據到地址0的SRAM中。如果CPU不具備這種特殊功能,用戶不能直接運行NandFlash上的代碼,那可以采取其他方式,比如好多使用NandFlash的開發板除了使用NandFlash以外,還用上了一塊小的NorFlash來運行啟動代碼。啟動代碼https://blog.csdn.net/qq_33726988/article/details/96478514norflash就不用了,因為它是片內執行的;

為什么nandFlash就不行?

  • 接著說為什么norflash可以實現XIP,而nandflash就不可以???
  • 解釋一:
    嵌入式系統中代碼的執行方式主要有3種:
  • ?完全映射(fully shadowed)。嵌入式系統程序運行時,將所有的代碼從非易失存儲器(Flash、ROM等)復制到RAM中運行。
  • 按需分頁(demand paging)。只復制部分代碼到RAM中。這種方法對RAM中的頁進行導入/導出管理,如果訪問位于虛存中但不在物理RAM中會產生頁錯誤,這時才將代碼和數據映射到RAM中。
  • eXecute In Place (XIP)。在系統啟動時,不將代碼復制到RAM,而是直接在非易失性存儲位置執行。RAM中只存放需要不斷變化的數據部分;
  • 虛擬內存-物理內存https://blog.csdn.net/lvyibin890/article/details/82217193

    如果非易失性存儲器的讀取速度與RAM相近,則XIP可以節省復制和解壓的時間。NOR Flash和ROM的讀取速度比較快(約100 ns),適合XIP;而NAND Flash的讀操作是基于扇區的,速度相對很慢(μs級),因此不宜實現XIP系統。而NAND閃存寫入速度比NOR快,更適合SND(存儲和下載)系統。

    • 解釋二:
      兩種芯片的結構不同
    • NOR flash之所以可以片內執行,就是因為他符合CPU去指令譯碼執行的要求。CPU送一個地址出來,NORflash就能給一個數據讓CPU執行,中間不需要額外的處理操作。
      NAND flash不一樣是因為nand flash有地址,數據,命令共用IO口的問題,cpu把地址發出來之后,并不能直接得到數據,還需要控制線的操作才能完成。就是他沒有專用的SRAM接口。
    • 解釋三:
    • 芯片內執行主要是是看芯片可不可以線性存儲代碼(假如硬件支持芯片接口),只要能保證芯片的存儲空間是線性的(也就是無壞塊),都可以片上執行在讀取Flash時候,容易出現“位翻轉(bitconvert)在Flash的位翻轉(一個bit位發生翻轉)現象上,NAND的出現幾率要比NorFlash大得多。這個問題在Flash存儲關鍵文件時是致命的,所以在使用NandFlash時建議同時使用EDC/ECC等校驗算法。?”

    • 但是,如果能保證不出錯,也還是可以進行XIP,可以在其上執行代碼的:“所謂XIP,就是CODE是在FLASH上直接運行. NANDFLASH只是不適合做XIP,但并不是不能做XIP“要一段CODE能夠正確的運行,要保證它的CODE是連續的,正確的.由于一些電氣特性的原因,NOR FLASH能夠做到這一點,不存在壞道或壞塊,所以能夠做XIP.而對于NAND FLASH,?它只保證它的BLOCK 0是好的,其他的塊并不保證,雖然出錯的幾率比較低,但還是有出錯的可能,所以CODE可能無法連續正確地執行.但只要你有額外的保障措施,比如說在執行CODE之前去做一次ECC校驗,來確保CODE是連續正確的.那你也可以做XIP.?有人這么做了,而且也證明是成功的

    總結

    以上是生活随笔為你收集整理的程序片上(内)执行-nandFlash-norFlash的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。