首页 > 代码库 > u-boot-2014.10移植第13天----创建开发板

u-boot-2014.10移植第13天----创建开发板

board_init_r 函数在文件arch/arm/lib/board.c中,都是C挺复杂的,以后看情况,如果用到了就深入研究,这里就跳过了。

“通过上面的叙述,大家应该比较了解U-boot的大致情况,下面开始移植工作了。 
我们要做的工作是移植,就是根据不同的地方做修改。U-Boot一直都没有支持
S3C2440,移植仍是用 U-Boot支持的友善之臂 SBC2410的文件作蓝本来移植。所以移植所
要做的就是针对 S3C2440和S3C2410的不同,以及 SBC2410和 mini2440开发板的外设不
同作相应的修改,并增加新的功能。 
移植之前必须对 S3C2440和 S3C2410有所了解,移植过程和芯片关系紧密。特别是
Nandboot的原理和 Norboot的内部 ram映射原理必须搞清楚。 
S3C2440和S3C2410的区别主要是2440的主频更高,接口方面,增加了摄像头接口和
AC‘97音频接口;寄存器方面,除了新增模块的寄存器外, NAND FlASH控制器的寄存器有
较大的变化,芯片时钟频率控制寄存器有一定的变化,其他寄存器基本是兼容的。 
下面大部分以补丁的形式介绍移植过程:”

开始:

添加tq2440开发板:

u-boot-2014.10]$ mkdir -p board/samsung/tq2440/

选用board/smdk2410开发板作为tq2440开发板的模板,将board/smdk2410目录中的文件悉数拷贝到tq2440目录中:

samsung]$ cp -rf smdk2410/* tq2440/
修改主文件名:

tq2440]$ mv smdk2410.c tq2440.c

修改makefile文件:

[fulinux@ubuntu tq2440]$ vim Makefile 

obj-y   := tq2440.o
添加一个tq2440的configs/tq2440.h头文件:

u-boot-2014.10]$ cp include/configs/smdk2410.h include/configs/tq2440.h


与以往的版本不同,根目录下没有了boards.h文件,而是换成了类似内核配置的方式:

u-boot-2014.10]$ vt100
u-boot-2014.10]$ make menuconfig
你可以看到下面这个界面:

技术分享

修改tq2440目录下 的Kconfig文件:

[fulinux@ubuntu tq2440]$ vim Kconfig            
if TARGET_TQ2440

config SYS_CPU
    default "arm920t"

config SYS_BOARD
    default "tq2440"

config SYS_VENDOR
    default "samsung"

config SYS_SOC
    default "s3c24x0"

config SYS_CONFIG_NAME
    default "tq2440"
            
endif

修改arch/arm目录下的Kconfig文件:

u-boot-2014.10]$ vim arch/arm/Kconfig
...
config TARGET_SMDK2410
    bool "Support smdk2410"

config TARGET_TQ2440
    bool "Support tq2440"
...
source "board/samsung/smdk2410/Kconfig"
source "board/samsung/tq2440/Kconfig"
...


经过上面简单的修改就可以在配置界面上找到tq2440了
u-boot-2014.10]$ make menuconfig
界面中找到下面这个选项中找到ARM体系架构的选项
Architecture select (ARM architecture)

选中上面后,再在下面一个选项如下:

ARM architecture
进入该选项找到:

(X) Support tq2440

我们暂时就选中这两项,其他的先别动。保存退出。

会在根目录下生成.config(前面有一个点,隐藏文件)文件。

在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。

我们运行make命令:

[fulinux@ubuntu u-boot-2014.10]$ make
scripts/kconfig/conf --silentoldconfig Kconfig
  CHK     include/config.h
  GEN     include/autoconf.mk
cc1: error: bad value (armv4) for -march= switch
make[2]: *** [include/autoconf.mk] 错误 1
make[1]: *** [silentoldconfig] 错误 1
make: *** 没有规则可以创建“include/config/uboot.release”需要的目标“include/config/auto.conf”。 停

这里出现了错误,我们明天继续。



u-boot-2014.10移植第13天----创建开发板