從官網下載u-boot的程序:ftp://ftp.denx.de/pub/u-boot/
1:添加與修改板級文件
所在目錄 board
例如對比:
u-boot-2016.11/board/samsung/smdk2410
1.1在board目錄下創建,廠商文件夾,芯片文件夾
/u-boot-2016.11/board/nuvoton/nuc970
將smdk2410內容複製到nuc970下進行修改
1.2 修改Makefie,把smdk2410.o 換成nuc970.o
#
# (C) Copyright 2000-2006
# Wolfgang Denk, DENX Software Engineering, [email protected].
#
# SPDX-License-Identifier: GPL-2.0+
#
obj-y := nuc970.o
#obj-y += lowlevel_init.o
~
1.3 修改Kconfig
if TARGET_NUC970
config SYS_BOARD
default "nuc970"
config SYS_VENDOR
default "nuvoton"
config SYS_SOC
default "nuc970"
config SYS_CONFIG_NAME
default "nuc970_evb"
config NUC970
bool
default y
endif
TARGET_NUC970:新的配置名稱,會在u-boot-2016.11/cofigs 下的配置文件重聲明。如果聲明瞭。下面的定義就起作用
SYS_BOARD:要和board目錄下的廠家文件夾名字一樣
SYS_VENDOR:要和廠家文件夾下芯片文件夾名字一樣
SYS_SOC:這個名稱是你cpu的對應型號下放的文件夾的名稱,u-boot-2016.11/arch/arm/cpu/armS926ejs/nuc970
SYS_CONFIG_NAME:這個時配置文件要i和iu-boot-2016.11/include/configs 存放的.h文件名稱一樣
2.添加配置文件
在u-boot-2016.11/configs,添加配置文件
這個配置文件的名字,在開始make時要使用 :
make nuc970_defconfig
這樣的話在這個裏面定義的宏就會生效
CONFIG_ARM=y //配置arm架構
CONFIG_NUC970=y
CONFIG_TARGET_NUC970=y //這個會讓板級文件的下的Kconfig生效
CONFIG_SYS_NO_FLASH=y
CONFIG_BOOTDELAY=3 //設置的u-boot下倒計時進內核的時間
CONFIG_SYS_HZ=1000
CONFIG_CMD_TIMER=y
CONFIG_CMD_PING=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_JFFS2=y
CONFIG_SPL=y
CONFIG_NAND_NUC970=y
CONFIG_CMD_NAND=y
CONFIG_CMD_UBI=y
#CONFIG_MMC=y
#CONFIG_GENERIC_MMC=y
#CONFIG_NUC970_MMC=y
#CONFIG_CMD_MMC=y
#CONFIG_NUC970_SD_PORT0=y
#CONFIG_NUC970_EMMC=y
CONFIG_NUC970_CONSOLE=y
CONFIG_HUSH_PARSER=y
CONFIG_NETDEVICES=y
CONFIG_NUC970_EMAC0=y
CONFIG_NUC970_ETH=y
CONFIG_NUC970_PHY_ADDR=1
CONFIG_NUC970_GPIO=y
CONFIG_LCD=y
CONFIG_NUC970_LCD=y
CONFIG_LCD_E50A2V1=y
CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
CONFIG_CONSOLE_SCROLL_LINES=1
#CONFIG_NUC970_SPI=y
3.添加芯片配置文件
目錄在:\u-boot-2016.11\include\configs\nuc970_evb.h
這個文件主要定義了一些,鏡像要下載的地址,外部晶振頻率,CPU信息, 串口波特率,網絡功能,環境變量空間等相關信息
4,添加CPU相關代碼
主要目錄u-boot-2016.11/arch/arm/
4.1 修改這個目錄下的Kconfig
添加配置CPU架構
包含板級下的Kconfig
4.2 添加CPU下的對應架構下的CPU目錄
例如:arm926ejs下添加的CPU文件加nuc970,這個和上面板級文件的Kconfig中的SYS_SOC的名字是一樣的。
這個目錄下一般有cpu的信息文件,重定位文件,reset和時鐘文件
添加上面的文件後,還要再arm926ejs文件下的Makefile中添加一行來編譯這個文件夾下的所有c文件