2440自帶的ram是:16k instruction cache + 16k data cache + 4k boot internal sram。但是我們能用到的只有4k boot internal sram;2440不自帶rom。
2440的啟動方式有兩種,norflash和nandflash,怎麼選擇?
om[1:0] = 01,10為norflash啟動,分別對應16bit和32bit,om[1:0] = 00為nandflash啟動。
兩種啟動方式:先貼張圖。
可以觀察到,s3c2440總共有8個記憶體banks,6個記憶體bank可以當作rom或者sram來使用,留下的2個bank除了當作rom 或者sram,還可以用sdram,7個bank的起始位址是固定的 還有乙個靈活的bank的記憶體位址,並且bank大小也可以改變。
norflash啟動:選擇從nor flash啟動,上電,ngcs0控制的bank0直接連線了nor flash,s3c2440晶元就會去執行nor flash上位址為0x0處的指令。讀nor flash可以像讀記憶體那樣讀,但是要用額外的命令向nor flash寫入資料。如果nor flash像記憶體那樣讀和那樣寫,那nor flash完全可以被記憶體所替代。
nandflash啟動:cpu上點後,首先會通過幾個引腳的電平確定nandflash的型別,從而讀取flash,cpu會自動從nand flash中讀取前4kb的資料放置在片內sram裡(s3c2440是soc),同時把這段片內sram對映到ngcs0片選的空間(即0x00000000)。cpu是從0x00000000開始執行,也就是nand flash裡的前4kb內容。因為nand flash連位址線都沒有,不能直接把nand對映到0x00000000,只好使用片內sram做乙個載體。通過這個載體把nandflash中大**複製到ram(一般是sdram)中去執行。
大概流程:
s3c2440啟動過程詳解
一 位址空間的分配 3 nandflash不用來執行 只用來儲存 norflash,sdram可以直接執行 4 s3c2440總共有8個記憶體banks 6個記憶體bank可以當作rom或者sram來使用 留下的2個bank除了當作rom 或者sram,還可以用sdram 各種記憶體的讀寫方式不一樣...
S3C2440框架與啟動過程
下面是s3c2440的簡單框圖。我們可以把程式燒寫到nandflash,然後設定為從nandflash啟動,也可以把程式燒寫到nroflash,然後設定為從norflash啟動。norflash啟動時片內ram位址為0x4000,0000.2.nandflash啟動,片內4k 的ram基位址為零,2...
S3C2440啟動檔案
啟動檔案包括軟體和硬體兩方面。1 設定棧sp。設定棧我們要初始化硬體,因為要訪問記憶體。如果板子上是sram可以直接使用,不需要初始化 如果是sdram,我們需要初始化硬體 1 關閉看門狗 2 初始化時鐘 3 初始化sdram 2 設定返回位址 3 呼叫main 3 清理工作 簡單的啟動檔案 如下 ...