因爲沒有系統的學習shell,因此Makefile大多數看不懂,一個小小的細節,把我難住了幾天。如今開始分享個人操做過程linux
本文全部linux下的操做是root用戶,若是你使用普通用戶,請在命令前加上 $ sudo xxxxshell
全部Linux命令都是加粗,須要加入的文本是斜體bash
/*工具
* 2017年5月2日12:59:41學習
* Ubuntu 16.04測試
* u-boot-2016.05.tar.bz2flex
* arm-linux-gcc-4.4.3.tar.gzui
*/blog
準備工做ip
1.下載u-boot,我是用的u-boot-2016.05.tar.bz2,能夠本身去官網下載
下載地址, ftp://ftp.denx.de/pub/u-boot/
2.下載arm-linux-gcc,我使用的是友善之臂提供的arm-linux-gcc-4.4.3.tar.gz ,網上不少,注意低版本的arm-linux-gcc可能會出錯
3.安裝工具鏈
(1).解壓arm-linux-gcc-4.4.3.tar.gz
#tar xjf arm-linux-gcc-4.4.3.tar.gz -C / /* 安裝在根目錄下面 */
(2).配置環境變量
1.臨時 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
2,永久
#cd 切換到root用戶目錄
#vi .bashrc
在文件末尾加入:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
#source .bashrc 使配置生效
測試: #arm-linux-gcc -v 會輸出你的GCC 版本號
4.解壓u-boot
#tar xjf u-boot-2016.05.tar.bz2 //解壓在本目錄下
#cd u-boot-2016.05 //進入u-boot目錄
5.下載輔助工具(能夠忽略)
dd tree bison flex build-essential manpages-dev
前面準備工做作好以後,如今進入咱們的正題,開始添加單板
1. 進入uboot目錄下
首先咱們打開doc目錄,裏面是u-boot的官方文檔
打開READE.kconfig,找到下面這段話
Tips to add/remove boards
-------------------------
When adding a new board, the following steps are generally needed:
[1] Add a header file include/configs/<target>.h
[2] Make sure to define necessary CONFIG_SYS_* in Kconfig:
Define CONFIG_SYS_CPU="cpu" to compile arch/<arch>/cpu/<cpu>
Define CONFIG_SYS_SOC="soc" to compile arch/<arch>/cpu/<cpu>/<soc>
Define CONFIG_SYS_VENDOR="vendor" to compile board/<vendor>/common/*and board/<vendor>/<board>/*
Define CONFIG_SYS_BOARD="board" to compile board/<board>/*(or board/<vendor>/<board>/* if CONFIG_SYS_VENDOR is defined)
Define CONFIG_SYS_CONFIG_NAME="target" to include include/configs/<target>.h
[3] Add a new entry to the board select menu in Kconfig.
The board select menu is located in arch/<arch>/Kconfig or arch/<arch>/*/Kconfig.
[4] Add a MAINTAINERS file
It is generally placed at board/<board>/MAINTAINERS or board/<vendor>/<board>/MAINTAINERS
[5] Add configs/<target>_defconfig
這裏是官方給的建議
由於u-boot裏有2410的板子,因此咱們在它的基礎上添加單板
2 . 進入 /board/samsung目錄,複製smadk2410文件夾
#cp -rf smdk2410/ smdk2440/
#cd smdk2440/
#vi Kconfig //添加單板信息,修改以下,至於vi的使用請自行百度
# vi MAINTAINERS //添加路徑
# mv smdk2410.c smdk2440.c //修更名稱
# vi Makefile
board 目錄修改完畢
3.回到u-boot目錄下,進入arch/arm/目錄下
# cd arch/arm/
# vi Kconfig //添加本身的單板信息
修改完上面後,必定要修改文件末尾,下面的路徑,我就是由於這個細節煩惱幾天,找不到錯誤
你去查看 .config, 發現沒有單板信息,或者單板信息是錯的
4.如今增長頭文件
#cd include/configs
# cp smdk2410.h smdk2440.h
#vi smdk2440.h //修改頭文件,以下
5.添加默認的配置文件
# cd configs/
# cp smdk2410_defconfig smdk2440_defconfig
# vi smdk2440_defconfig
6.如今開始編譯
# make smdk2440_config
# make
出現錯誤,以下,這是沒有指定交叉工具鏈的緣由,若有其餘錯誤,請檢查是否操做失誤,或者工具鏈版本與u-boot不匹配
#vi Makefile
如今,在執行make命令,就會一直編譯生成u-boot。
總結:
本文修改部分
1. board/samsung/smdk2440/ 添加單板目錄,並修改相關文件
2. arch/arm/Kconfig 添加與單板相關的配置
3. include/configs/smdk2440.h 添加頭文件
4. configs/smdk2440_defconfig 添加默認的配置文件
5. Makefile(頂層目錄下的) 指定交叉工具鏈
若是本文有不足或者錯誤的地方,請在評論區寫出來,謝謝!
看完以後,若是感受不錯,請點個贊,謝謝!
本文容許轉載,但必須貼出原始地址,謝謝!