嵌入式linux開發 (二十三) 內存管理(5) s3c2440內存管理

之前想着s3c2440內存管理應該和imx6ull 是一樣的,目前看起來是不一樣
  • JZ2440 S3C2440 ARM920T ARMv5t
	-內置
		Steppingstone (4K-Byte SRAM)
		無rom
	-外擴
		EM63A165TS-6G:32MB/,SDRAM,共兩片
		MX29LV160DBTI:2MB,並口 NOR FLASH
		K9F2G08U0C: 256MB,NAND FLASH

硬件對內存的管理

  • soc
Supports various types of ROM for booting (NOR/NAND Flash, EEPROM, and others)

NAND Flash Boot Loader
· Supports booting from NAND flash memory.
· 4KB internal buffer for booting.
· Supports storage memory for NAND flash memory
after booting.
· Supports Advanced NAND flash

External memory controller (SDRAM Control and Chip Select logic)
  • sram
0x0000_0000 - 0x0000_1000 4KB
  • sdram
0x3000_0000 - 0x3800_0000  // 128MB // 一片DRAM芯片只有  (32MB) 0x3000 0000 0x3200 0000
0x3800_0000 - 0x4000_0000  // 128MB // 一片DRAM芯片只有  (32MB) 0x3800 0000 0x3A00 0000
  • boot配置及過程
    在這裏插入圖片描述
00 nand
01 nor 16bit
10 nor 32bit
11 test mode
----------------- 啓動流程
1. reset
2.0x0000 0000 啓動
	2.1 如果OM1 OM0 爲00 ,則爲nand啓動.
		//此時硬件做了一個映射 ,將nand 上的 前4KB的數據 映射到 SRAM (0x0000_0000 - 0x0000_1000)
		//即執行的是nand中的前4KB字節代碼(注意,是前4KB字節,如果nand中的代碼超過4KB,則需要用軟件處理)
	2.2 如果 爲01或者10 ,則從nor 啓動.
		//nor支持 xip ,則直接執行代碼.
		//(nor上的代碼都可以執行,最多支持128MB,0x0000_0000-0x0800_0000)
		//此時和sram沒有一點關係.

軟件對內存的管理

  • 硬件做了什麼
執行了用戶代碼
不管是從nand還是nor,都有問題
nand的話,只能執行4KB,所以sram不是長久之地.
nor的話,在nor上運行,一般nor很貴,所以nor也不是長久之地.
所以一般處理是
	用 nand 作爲最終的非易失性存儲器
	用 sdram 作爲最終的易失性存儲器.
另外還需要做
	1. 關看門狗
	2. 爲C代碼執行建設環境
  • 軟件還需要做什麼
可見,三星官方(三星只提供了硬件,不提供軟件)給做的起始很少.只做了執行了用戶代碼,其他完全沒做
然後 開發者 需要做的是
	關看門狗
	爲C代碼執行建設環境
	用 nand 作爲最終的非易失性存儲器,用 sdram 作爲最終的易失性存儲器.
		// 初始化sdram和nand
		// 讀取nand代碼到sdram.
		// 執行sdram代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章