- 1、本文档共69页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S3C2440移植uboot过程全解移植记录课案
Uboot移植前的准备
1、修改makefile、配置文件
在配置文件之前,需要修改makeflie相关内容:修改如下:
(1)修改编译器,这里我们的makefile已经设置为arm-linux-无需再修改,如下所示:
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
Endif
(2)添加fl2440的配置项,如下所示:
fl2440_config:unconfig
@$(MKCONFIG)?$(@:_config=)?arm?arm920t??fl2440?step?s3c24x0
注意:在添加的fl2440_config的第二行,必须以Table开头,不能有任何多余的符号,否则极易导致编译错误。
Uboot支持多种处理器和平台,在编译uboot之前需要对其进行配置,使其支持我们自己的开发平台。在执行编译make之前,需要进行配置即make fl2440_config。通过查看顶层目录的makeflie文件,通过以下语句:
MKCONFIG := $(SRCTREE)/mkconfig 得出实际执行的命令为:
./mkconfig fl2440 arm arm920t fl2440 step s3c24x0
执行完这句后,产生如下结果:
(1)开发板名称为fl2440;
(2)将include中的头文件连接到同平台相关的头文件中,这里的连接为:
asm-asm-arm
arch-arch-s3c24x0
proc-proc-armv
(3)创建顶层Makefile包含的文件inclued/config.mk,该文件内容如下
ARCH = arm
CPU = arm920t
BOARD = fl2440
VENDOR = step
SOC = s3c24x0
(4)创建开发板相关头文件include/config.h,该文件中包含了对开发板的相关配置,如下所示:
#include configs/fl2440.h
从上面可以知道,在将uboot配置为适合自己的平台的时候,需要在路径/include/configs下添加配置头文件fl2440.h。这里我们修改/include/configs /sbc2410x.h的文件名为fl2440.h,并在头文件中加入以下内容:
#define CONFIG_FL2440 1/* on a FL2440 Board */
#define CONFIG_S3C2440 1/* specifically a SAMSUNG S3C2440 SoC*/
打开fl2440.h,里面有两类宏,一类前缀应该是CONFIG_,这类宏用于选择CPU、SOC、系统时钟、选择设备驱动等;另一类前缀是CFG_,这类宏用于设置参数,例如malloc大小等。
2、创建board级文件
在Board目录中添加step目录,注意此step目录要和Makefile的fl2440_config下的step名字保持一致。在step中建立fl2440目录,并将Board目录中的sbc2410x目录中的所有文件复制到fl2440目录中。修改fl2440目录中sbc2410x.c为fl2440.c.
修改fl2440目录下的Makefile文件,将
COBJS:=?sbc2410x.o?flash.o
修改为:COBJS:=?fl2440.o?flash.o
至此??配置过程完成。配置的目的是通过设置相关参数、链接相关头文件,使得uboot适合我们的开发平台。
3、uboot编译、链接过程
Uboot的编译最终生成的u-boot.bin二进制文件,生成u-boot.bin的依赖关系由makefile指定,通过分析makefile可以得到两点:
(1)u-boot第一个执行的文件是start.s;
(2)如何链接各个文件生成的.o文件,由/board/step/fls2240中的U-boot.lds和config.mk决定。
U-Boot的编译流程为:首先编译cpu/$(CPU)/start.S,对于不同的CPU,还可能编译cpu/$(CPU)下的其他文件。然后,对于平台/开发板相关的每个目录、每个通用目录都使用它们各自的Makefile生成相应的库。将前面两步生成的.o、.a 文件按照board/$(BOARDDIR)/config.mk文件中指定的代码段起始地址、board/$(BOARDDIR)/U-Boot.lds连接脚本进行连接得到ELF格式的U-Boot,后面Makefile还会将它转换为二进制格式、S-Record格式。这部分具体可以参考《嵌入式linux应用开发完全手册》第十五章内容15.2.3。
到此修改构成一个段落,
文档评论(0)