u-boot-2016.11移植到S3C2440之新建一個單板(1)

1、確定單板

下載並解壓u-boot-2016.11,查看一下board目錄下的這一u-boot版本支持的單板,尋找你的單板或者和你的單板相近的單板。對於S3C2440來說,u-boot沒有提供與之相對應的單板支持,但是S3C2410與S3C2440是十分相似的,在u-boot-2016.11\board\samsung目錄下有smdk2410的目錄,即支持smdk2410開發板,那我們的u-boot也就基於這一開發板來移植修改。

2、配置、編譯u-boot

首先就以smdk2410爲目標來配置編譯一下u-boot-2016.11,建議使用較高版本的交叉工具鏈,我使用的是arm-linux-gcc-4.3.3。

make smdk2410_config

make

發現編譯不能通過,沒有指定芯片架構與交叉編譯器,在頂層Makefile中添加:

ARCH=arm

CROSS_COMPILE=arm-linux-

再編譯就可以編譯通過了,我們反彙編一下u-boot,得到反彙編代碼用於分析:

arm-linux-objdump -D u-boot > u-boot.dis

3、新建一個S3C2440單板

在board\samsung目錄下拷貝smdk2410文件夾爲smdk2440,並在include/configs目錄下拷貝smdk2410.h爲smdk2440.h:

/board/samsung$ cp smdk2410 smdk2440 -rf

/include/configs$ cp smdk2410.h smdk2440.h

配置一下看能否配置成功:

make smdk2440_config

報錯,缺少對應的默認配置文件。該配置文件在configs目錄裏,進入該目錄拷貝smdk2410_defconfig爲smdk2440_defconfig:

cp smdk2410_defconfig smdk2440_defconfig

再執行一下默認配置,便可以執行成功了,再編譯一下也可以編譯成功了:

make smdk2440_config

make

4、完善單板配置

我們雖然編譯通過了,但是肯定還有其他很多地方是依賴於smdk2410目錄的。這自然是不可以的,因爲我們要的是一個完全獨立的單板,我們可以將smdk2410暫時移到別的文件夾去,再配置、編譯一下找出這些錯誤。(我這裏是爲了保留u-boot支持smdk2410單板的功能,在修改完成之後會移回來,如果不需要,也可以刪除smdk2410目錄)

sudo mv smdk2410 /tmp

make distclean

make smdk2410_config

make

錯誤!搜索一下和2410相關的地方,並把相關的地方都修改一下:

grep "2410" * -nR

/board/samsung/smdk2440/中的smdk2410.h改爲smdk2440.h,將Kconfig、Makefile文件中的2410替換爲2440,再編譯,還是不行。smdk2440_defconfig文件路徑有問題。將smdk2440_defconfig文件中的2410替換爲2440,再編譯,提示arch/arm/Kconfig存在問題。修改,仿照2410再添加一段。

還是不能編譯成功,還在試圖尋找board/samsung/smdk2410/Kconfig。因爲只要在arch/arm/Kconfig重定義了開發板的路徑,就必須要有對應的文件。所以,可以把之前的smdk2410文件夾拷貝回來,也可以屏蔽掉2410對應的開發板文件路徑:

make smdk2440_config

make

然後就可以make smdk2440_config成功,也可以make成功產生bin文件,接下來就進入下一階段了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章