1. 程式人生 > >[初級教程]samsung s3c2416x 的啟動方式

[初級教程]samsung s3c2416x 的啟動方式

1.背景知識

s3c2416x這款晶片,官網宣稱是對s3c2440的完美替代,對比了這兩塊晶片,發現s3c2416只能說在手持PDA等方面確實比2440強,其他的部分,感覺都差不多。好了,話不多少,直接進入正題,今天要說的是改晶片的所支援的啟動方式。

根據三星提供的s3c2416x的datasheet來看,確切說,提供了3版的datasheet,分別是2008年的3月,2008年的09月第二次修訂版,2009年的04月第三次修訂版,這三個版本中對s3c2416x的啟動方式經歷兩次的修改,並最終提供了iROM的啟動方式,那我們先來看看提供了哪幾種啟動方式先:

  • Norflash啟動的方式
  • Nandflash啟動的方式
  • iROM的方式啟動,並從nand/sd/mmc/moviNand/iNand中載入啟動程式碼,比如Bootloader等

上面的幾種啟動方式,Samsung經過幾次對s3c2416x的datasheet修訂之後,現今,Samsung主推的啟動的方式即iROM的啟動方式,為主導的啟動方式,從nandflash啟動,已經被移到了iROM的啟動方式中,並支援了nand/iNand/moviNand/sd/mmc的多種啟動方式。

2.說說iROM啟動

iROM啟動的方式,Samsung為了對自家晶片的啟動方式做一個統一,在多年前,對自家產品的晶片的啟動方式發起了一次標準化推廣,即,推廣IROM的啟動。IROM啟動的意思即是,Samsung自己生產的晶片,在晶片的內部固化了一些引導程式碼,這些引導程式碼會做一引導啟動的操作,當然,只是簡單的引導,這段程式碼的存在也就是我們熟知的BL0

啟動階段。就s3c2416x這款晶片而言,以下幾個步驟是需要在BL0啟動階段做的事:

  • 設定系統進入svc32模式
  • 初始化系統時鐘
  • 遮蔽所有的中斷
  • 關閉MMU
  • 根據GPC5/GPC6/GPC7引腳的值來確定從哪一個儲存裝置中載入啟動程式碼到內部的Stepping stone中去執行

3.如何設定才能讓晶片從IROM啟動?

  • 首先要設定OM[4:0]位,依據資料手冊中的描述,進行如下設定:

圖 3-1-1

根據上圖中所描述的,將OM[4:0]設定成0100x (x, 0:x-tal, 1:extclk),比如我使用的是外部晶振,那麼最後一位設定成0,那麼整個OM[4:0]就是01000, 如果我使用外部時鐘,最後一位就設定成1,那整個OM[4:0]就變成了01001,這些位的設定依賴於你硬體的連線。

  • 其次,在來設定GPC5/GPC6/GPC7位,用來選擇我們IROM從哪個儲存裝置中載入引導程式碼,是Nand還是SD/MMC,還是MoviNand等
    圖 3-1-2
    比如說我們用的外設的nandflash的頁大小是2k,地址週期是5個地址週期(這個多少地址週期,在nandflash的datasheet中會給出的,看nand的datasheet就ok),那麼根據上圖的描述,GPC7:GPC5的值就設定成101

經過上述兩步驟的設定,我們的晶片將會從以IROM的方式啟動,並且,啟動後會從Nandflash中載入啟動程式碼到Stepping stone中執行,然後在Stepping stone中去載入剩下的程式碼到SDRAM中去執行。