6410從SD卡啟動uboot
6410支援從SD卡啟動,是否可以在SD卡上燒寫一個UBOOT,開發板的跳線設定為SD卡啟動後,將UBOOT執行起來?
在UBOOT中可以操作網口(例如 tftp kernel 根檔案系統)、操作NANDFLASH,NORFALSH,方便的進行升級?
- 資料收集部分
參考 djyos 這哥們的一些文章 (都江堰OS,這哥們還是很強大、很給力的,贊一個,現在不知道為啥官網打不開了)
資料地址:
主版塊網址
資料彙總網址
6410相關資料地址
網上隨便搜尋“使uboot支援S3C6410的SD啟動”
可以找到相關文章,具體哪裡是原文出處,已無法考究,現給出一個可閱讀的地址
從這兩方面的文章,我們接著詳細分析
- 確定6410的啟動模式,選擇SD卡啟動
開啟6410DATASHEET(我這裡為s3c6410_rev12.pdf)
57頁 目錄 3-1 Device operating mode selection at boot-up ........................................ 3-4
125頁 3.3.3 CLOCK SOURCE SELECTION,有表如下
從上圖我們可以看到 SD卡的啟動,屬於IROM啟動
GPN[15:13] 設定為 000 則從 SD/MMC(CH0) 啟動
GPN[15:13] 設定為 000 則從 SD/MMC(CH1) 啟動
- IROM啟動過程
這部分在6410的文件中沒有介紹,參考DJYOS資料中的說明,找到相關資料如下
896554S3C2450_IROM_ApplicationNote_Rev003.pdf
下載地址:(迅雷好像下不成,用目標另存為好了)
BL1 : Its size should be under 8K because BL1 is located in Stepping Stone(8K)
BL2 : There is no limit in its size, so it can locate any place in SDRAM area
① IROM can do initial boot up : initialize system clock, device specific controller and booting device.
IROM啟動會先去執行BL0部分的32K的程式碼
② IROM boot codes can load 8KB of bootloader to stepping stone. The 8KB boot loader is called BL1.
將BL1部分(存在SDK上的)8K的內容,載入到 stepping stone 區域(這8K在後面將是UBOOT最開始的8K)
③ BL1 will do : BL1 can initialize system clock, UART, and SDRAM for user. Thereafter, BL1 will loadremained boot loader which is called BL2 on the SDRAM(這部分將是完整的UBOOT.BIN)
BL2部分的內容將被載入到記憶體
④ Finally, jump to start address of BL2. That will make good environment to use system.
- BL1、BL2在SDK上的儲存方式
SD卡有兩種:
SD/MMC Device 一般小於2G的卡是這種
SDHC Device 一般大於2G的卡是這種
分別對應的儲存規則如下
步驟一、找到可以從SD卡啟動的UBOOT
UBOOT的官方程式碼中有對6400的支援(跟6410差不多,只是少了3D的支援)
但程式碼中,啟動模式中沒有SD卡啟動模式(SD卡啟動模式在S3C-UBOOT中叫MOVINAND啟動)方式的支援
查閱資料,找到最原始的 S3C-UBOOT 版本為 1.1.6 (版本是老了點,夠用就行)
網上翻閱資料的時候,也能找到 Real(友堅恆天)的 S3C-UBOOT-1.1.6
友善之臂好像把這個支援SD卡啟動的UBOOT稱為SUPERUBOOT
都是支援SD卡啟動的UBOOT。
(我用的是飛凌的OK6410,不熟悉以上兩個開發板的情況如有說錯還請諒解)
(沒想到是在魅族手機論壇找到程式碼,汗。。。XXXX)
UBOOT
KERNEL