现在的位置: 首页 > 综合 > 正文

移植u-boot-1.3.4到qq2440开发板(1)

2013年10月02日 ⁄ 综合 ⁄ 共 1319字 ⁄ 字号 评论关闭

                                       移植u-boot-1.3.4到qq2440开发板(1)

                                       作者:makethyme

 

以前曾经将u-boot-1.1.6移植到QQ2440 (cpuS3c2440)开发板,前几天有空闲时,计划重新将新的u-boot-1.3.4移植到开发板上,cross toolchain就用ELDK(Embedded Linux Development Kit)

经过一通merge后,编译时发现qq2440.h提示包含的头文件<cmd_confdefs.h>找不到。在u-boot-1.1.6中,头文件<cmd_confefs.h>定义了一些command,如下所示:

     #define CFG_CMD_BDI              0x00000001ULL    /* bdinfo               */

     #define CFG_CMD_LOADS        0x00000002ULL    /* loads                 */

然后将需要支持的command通过逻辑或( | )的形式汇聚在CONFIG_COMMANDS中,如下:

     #define CONFIG_COMMANDS /

                     (CONFIG_CMD_DFL   | /

                     CFG_CMD_CACHE      | /

            …

 

而最后在源文件中,通过逻辑与(&)判断CONFIG_COMMANDS是否包含某个命令,从而决定是否编译该命令相关的代码。例如在common/cmd_bdinfo.c中:

     #if (CONFIG_COMMANDS & CFG_CMD_BDI)

     static void print_num(const char *, ulong);

     …

     #endif

 

u-boot-1.3.4中,采用了另一种策略。不再有头文件cmd_confdefs.h,取而代之的是config_cmd_all.hconfig_cmd_default.h。而CONFIG_CMD_XXXX也不定义成具体的值,只需要用define定义即可。

     #define CONFIG_CMD_BDI             /* bdinfo               */

在源文件中则根本不对CONFIG_CMD_XXXX是否存在进行判断,转而通过对Makefile进行控制,来决定CONFIG_CMD_XXXX对应的代码是否链接进库中。例如在common/Makefile中,

    COBJS-y += cmd_autoscript.o

    COBJS-$(CONFIG_CMD_BDI) += cmd_bdinfo.o

    COBJS-$(CONFIG_CMD_BEDBUG) += cmd_bedbug.o

    COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o

    COBJS-y += image.o

这样就能决定该相应代码是否链接进库中。

 

抱歉!评论已关闭.