第二階段 可啟動uboot但是沒有nand命令
在cofig_cmd_all.h中新增
#define config_cmd_nand //nand
在config_cmd_default.h中新增
#define config_cmd_nand //nand
下面一段**是昨天移植拷貝**時改寫的,這時候就和cmd_nand.c中**衝突了,那就改回成原來的,只是在start.s中加入nand暫存器的定義。
把my2410.h中的
#define bnand_ctl(nb) __reg(0x4e000000 + (nb))
#define nfconf bnand_ctl(0x00)
#define nfcmd bnand_ctl(0x04)
#define nfaddr bnand_ctl(0x08)
#define nfdata bnand_ctl(0x0c)
#define nfstat bnand_ctl(0x10)
#define nfecc bnand_ctl(0x14)
移動到start.s中,
取消s3c2410.h和s3c24x0.h的注釋
在my2410.h中
新增#define nand_max_chips 1
#define cfg_max_nand_device 1
#define cfg_nand_base 0x33f80000
此時燒錄後可以操作nand的讀寫
但是還是不能設定環境變數
設定環境變數命令在cmd_nvedit.c中定義
然後呼叫env_nand.c中**,但是要實現這個功能必須修改my2410.h中巨集定義,預設選擇的是env_flash.c中的函式,
修改my2410.h中
//#define cfg_env_is_in_flash 1
#define cfg_env_is_in_nand 1
#define cfg_env_size 0x10000 /* total size of environment sector */
#define cfg_env_offset (0x80000-0x4000) /* total size of environment sector */
這是環境變數寫入的位置,對於這個offset的計算還不太明白
這時命令列表讀不出來了
分析start.s,最後進入c函式start_armboot(在lib_arm/board.c)中定義
函式中的nand_init()時呼叫的drives/mtd/nand.c中的函式列印nand的大小
設定環境變數在env_common.c中env_relocate
現在只要在my2410.h中加入了
//#define cfg_env_is_in_flash 1
#define cfg_env_is_in_nand 1
#define cfg_env_size 0x10000 /* total size of environment sector */
#define cfg_env_offset 0x40000 /* total size of environment sector */
最後發現編譯器不對,開始用的3.3.2,改為4.3.2就成功了。
uboot移植記錄
首先是uboot移植記錄系列。這系列文章適合於uboot移植的初學者,這裡基於常見的開發平台s3c2410。若需要移植uboot到乙個全新開發板,則需要參考更多的資料並對uboot有更深入的了解。本人對此也有所鑽研,也有個較牛的同事專門做這這個的,呵呵 若感興趣的朋友大家可以一起 因此關於新平台ub...
UBOOT的移植分析2
uboot的移植分析2 a uboot的編譯方式2 1 原地編譯 編譯複雜專案 makefile提供2種編譯管理的方法,預設情況下編譯出來的資料夾 的.c和.o檔案是存放在這些目錄裡面的,就是預設情況下編譯出來的情況,但是我們 有些時候並不希望生成的.o檔案把整個資料夾汙染了 壞處 1 汙染了原始檔...
MPC5125 uboot移植記錄 二
6.console init f 在環境變數裡對串列埠進行註冊。7.display options 至此將顯示uboot的版本號,也是在console中顯示的第一行,根據makefile自動獲取的新版本號,所以無需修改 8.checkboard 修改硬體板卡版本號,做一些io初始化。因為乙太網efc...