从官网下载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文件