【嵌入式】飞凌ok335x board之uboot编译初体验

飞凌官方对其提供的uboot的介绍少之又少。
前天在西安诺瓦电子科技听过一场关于嵌入式bootloader的交流会,总算对arm uboot增加了一定了解。回来针对自己手头飞凌的板子,体验一番~

  1. ok335x board介绍
    ok335x board上核心处理器采用的是TI德州仪器AM3354,属于Cortex-A8架构。性能中等,主要应用于高端玩具,家用电子设备,电力网关等设备。

  2. uboot介绍
    这里研究飞凌厂商只提供了2011-09版本的uboot。源码从二手网站获得。嵌入式中使用最广泛的引导程序就是uboot,一般位于FLASH中较为靠前的分区。

  3. 实践
    进入根目录,查看到相关文件:
    【嵌入式】飞凌ok335x board之uboot编译初体验
    显然,compile.sh用于按照Makefile的规则编译生成镜像文件或二进制文件。还有几个重要的文件夹,它们分别是arch,board,common,drivers。

arch文件夹里重点在于arm中cpu目录:
【嵌入式】飞凌ok335x board之uboot编译初体验
可以看到支持armv7架构,当然armv7包括cortex-A8。

board文件夹下支持ti的AM335x系列:
【嵌入式】飞凌ok335x board之uboot编译初体验

uboot中常用的命令是如何生成的呢,且看common目录:
【嵌入式】飞凌ok335x board之uboot编译初体验
这些C文件中均包含了一个通用的宏定义UBOOT_CMD,命令格式如下:

U_BOOT_CMD(name,maxargs,repeatable,command,“usage”,“help”)
引用一下大神的解释:

   name:命令名,非字符串,但在U_BOOT_CMD中用“#”符号转化为字符串
   maxargs:命令的最大参数个数
   repeatable:是否自动重复(按Enter键是否会重复执行)
   command:该命令对应的响应函数指针
   usage:简短的使用说明(字符串)
   help:较详细的使用说明(字符串)

这样就把命令名name和函数名command联系在一起了。

再看下drivers dir:
【嵌入式】飞凌ok335x board之uboot编译初体验
处理器上电加载uboot开始就支持这些设备了。

最后不要忘记configs配置信息,飞凌写在了makefile中:
【嵌入式】飞凌ok335x board之uboot编译初体验

在make之后,叮咚,编译完成:
【嵌入式】飞凌ok335x board之uboot编译初体验
可以看到生成了一个uboot文件夹以及u-boot.bin, u-boot.img, u-boot.lds, u-boot.map, u-boot.srec五个文件。
编译过程背后的细节还请研究下makefile吧