这一段时间,在看U-BOOT的源代码,新手入手,很多问题困扰着我,其中最纳闷的一个就是针对于开发板的头文件的包含关系,我相信刚开始玩U-boot的菜鸟来说,这个问题很费解。我们知道,在include/configs/目录下面有很多针对于特定开发板的头文件(***.h),我是用的AM3517的开发板,按照logic公司给出的开发源代码,am3517_evm.h这个头文件,U-BOOT没有类似于内核一样的可视化界面,要手动修改配置上面所说的这个配置文件来剪裁U-BOOT,里面主要是存放了一些开关宏定义,和重要的硬件、软件参数。这里我们重点讲一些文件包含关系,让大家知道,这些宏定义是如何被我们的编译器发现和使用的。
我们从void start_armboot (void)这个最重要的跳转函数开始吧,他是位于/lib-arm/board.c文件中,它的头文件包含如下:
#include <common.h>
#include <command.h>
#include <malloc.h>
#include <stdio_dev.h>
#include <timestamp.h>
#include <version.h>
#include <net.h>
#include <serial.h>
#include <nand.h>
#include <onenand_uboot.h>
#include <mmc.h>
里面有很多开关宏,我就随便贴一段吧:
#ifndef CONFIG_SYS_NO_FLASH
/* configure available FLASH banks */
display_flash_config (flash_init ());
#endif /* CONFIG_SYS_NO_FLASH */