omapl138移植uboot系列之添加属于我们自己的板卡(第四篇)

       在第一章节,我们已经编译好了一份uboot,但它是适用于TI自己的omapl138_lcdk开发板的,并不适用于我们的板卡,本章将带领大家在uboot中添加639A板卡。  

2.3.1 向board中添加属于自己的板卡

       board目录下每一个终极文件夹都是一块板卡的片上驱动程序,TI 工程师们移植过的omapl138_lcdk板卡位于board/davinci/da8xxevm目录下的omapl138_lcdk.c文件,你可能就要问了,board目录下的板卡成千上万,你是怎么万里挑一把TI移植的板卡挑出来的呢?

       还记得第一节我们进行板卡配置时执行过的make omapl138_lcdk_defconfig吗?如果你够细心,当时你会发现执行完这条命令以后,终端会显示一串信息,其中最后一条是:所示。

      这段英文就不用我来翻译了吧?其实,当我们make xxx_defconfig进行板卡配置的时候,在uboot顶级目录会生成一个名为“.config”的文件,这个文件是隐藏的,我们可以vi打开它。

      我们暂时只需要重点关注以上六个配置项的值,暂时先讲后三个,意思是供应商:davinci 板卡名称:da8xxevm  配置名:omapl138_lcdk。

      然后我们就在board/davinci/da8xxevm目录下找到了omapl138_lcdk.c文件,这种命名方式显然是TI工程师偷懒了,按照规则来说应该是:供应商:ti 板卡:davinci(或者是omapl138)配置名:omapl138_lcdk。

      我们就按照这个规则在board目录下建立一个属于639A的板卡文件夹(供应商:davinci板卡:hltborad配置名:omapl138_639),为了方便,我直接在davinci目录下拷贝一份da8xxevm文件夹,命名为“hltboard”,cd 进入hltboard目录,ls:

     将omapl138_lcdk.c重命名为omapl138_639.c: mv omapl138_lcdk.c omapl138_639.c

     打开Makefile:vi Makefile

全部删除,修改为如下图所示:

修改完成后保存退出,继续修改KConfig文件,修改前如下图所示,TI在该文件中定义了两块开发板的配置,我们将其全部删除。

添加我们为639A板卡描述的信息至KConfig文件,如下所示

以上操作完成后,我们的板卡就添加好了,但此时还不能编译,且看后续章节

 

2.3.2添加xxx_defconfig文件

       omapl138_lcdk_defconfig文件是TI为自己开发板添加的配置文件,位于configs目录下,我们拷贝一份命名为“omapl138_639_defconfig”作为我们的配置文件,接下来我们将639A板卡不存在的外设和没有用到的模块删除掉,不用纠结,这一步只是大概的进行配置,就算有所遗漏,我们还有第二步骤进行遗漏补充,修改后的配置文件内容如下

CONFIG_ARM=y

CONFIG_ARCH_DAVINCI=y

CONFIG_TARGET_OMAPL138_639=y

CONFIG_SPL_LIBCOMMON_SUPPORT=y

CONFIG_SPL_LIBGENERIC_SUPPORT=y

CONFIG_USE_BOOTARGS=y

CONFIG_BOOTARGS=console=ttyO0,115200

CONFIG_SYS_PROMPT="Hanc@639B=> "

CONFIG_SPL_SERIAL_SUPPORT=y

CONFIG_BOOTDELAY=3

CONFIG_VERSION_VARIABLE=y

CONFIG_DISPLAY_CPUINFO=n

CONFIG_DISPLAY_BOARDINFO=n

CONFIG_SPL=y

CONFIG_HUSH_PARSER=y

CONFIG_CMD_BOOTZ=y

CONFIG_CMD_ASKENV=y

CONFIG_CMD_DHCP=y

CONFIG_CMD_MII=y

CONFIG_CMD_PING=y

CONFIG_CMD_TIME=y

CONFIG_CMD_EXT2=y

CONFIG_CMD_FAT=y

CONFIG_CMD_SF=y

CONFIG_CMD_FS_GENERIC=y

CONFIG_SPI_FLASH=y

CONFIG_SPI_FLASH_GIGADEVICE=y

CONFIG_SPI_FLASH_STMICRO=y

CONFIG_SYS_NS16550=y

CONFIG_USE_SPIFLASH=y

CONFIG_SPL_SPI_SUPPORT=y

CONFIG_SPL_SPI_LOAD=y

CONFIG_SYS_SPI_U_BOOT_OFFS=0x10000

CONFIG_SPL_SPI_FLASH_SUPPORT=y

CONFIG_DM_SPI = y

在xxx_defconfig文件中配置一定不要有空格,比如

CONFIG_TARGET_OMAPL138_639=y

则配置无效!!!

注:omapl138_639_defconfig文件中的CONFIG_TARGET_OMAPL138_LCDK一定要修改为CONFIG_TARGET_OMAPL138_639,回顾下上节板卡的KConfig文件:

       你可能已经注意到omapl138_639_defconfig文件中的CONFIG_TARGET_OMAPL138_639和KConfig文件中的TARGET_OMAPL138_639只差一个“CONFIG_”字符串,它们是有关系的,Makefile在执行的时候会将“CONFIG_TARGET_OMAPL138_639”的“CONFIG_”处理掉,然后去所有子目录下的KConfig文件中去寻找“TARGET_OMAPL138_639”,从而找到配置的板卡。

      因为Makefile的这种特性,配置文件也是这个道理,所以以后配置文件的命名一定要遵循“xxx_defconfig”的格式,否则肯定会出错。

       以上文本中,每一个以“CONFIG”开头修饰的变量均代表uboot中的一个模块,将其在该文件中加入或删除即为uboot的裁剪,这样的语句有成百之多,这里仅将我们有用的留下,没有用到的全部删除。

       除了上述描述的一些模块会在编译时添加进来以外,还有一些模块默认就是已经添加进来的,如果我们无需使用,可以在图形界面配置阶段将其取消。

 

2.3.3添加板卡配置头文件

       board目录下的代码都是.c文件,与其对应的头文件位于include/configs目录下,TI开发板的配置头文件也在该目录下,名为“omapl138_lcdk.h”。

      拷贝一份“omapl138_lcdk.h”命名为“omapl138_639.h”,打开omapl138_639.h,将宏定义#define CONFIG_MACH_OMAPL138_LCDK修改为#define CONFIG_MACH_OMAPL138_639,为什么要这么做呢?

还是第一节,当时我们添加完“hltboard”后,不是修改过Makefile吗?再贴一次当时修改后的截图。

obj-$(CONFIG_MACH_OMAPL138_639) += omapl138_639.o是一条条件编译语句,即当宏定义CONFIG_MACH_OMAPL138_639存在时,才会编译omapl138_639.c文件。

以上操作都完成后,我们需要向以下代码添加进arch/arm/mach-davinci/Kconfig文件中。

config TARGET_OMAPL138_639

        bool "OMAPL138 639"

        select SUPPORT_SPL

        select SYS_DA850_PLL_INIT

        select SYS_DA850_DDR_INIT

source "board/davinci/hltboard/Kconfig"

 

这样,到此为止我们的板卡已经添加成功了,这时编译肯定是没问题了。

猜你喜欢

转载自blog.csdn.net/weixin_42314225/article/details/83240977