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
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" ...
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”。 停
这里出现了错误,我们明天继续。