uboot分析之Makefile(一)

牢骚:

    嵌入式行业当中,大都以做产品和解决方案居多。对于做产品的公司,BSP相关的工作相对少些甚至没有直接让方案公司来搞定。其实底层工作是还可以细分的,比如BSP和内核驱动。过来的人都清楚,底层工作有模式,但是不像应用开发有太多的套路,没有一个明确的梯形上升空间,总之下面出了问题,都是你的事。由于基于产品为目的开发比比皆是,使得大家忽略的uboot的功效。其实uboot也是一个博大精深的领地。最近要开发一个项目,从硬件一点一点开始,其中涉及大量BSP内容,正好再从头整理一遍,回顾一下当年的初心从走路开始,废话不多说,下面go:

一、版本的选择:

下载地址:ftp://ftp.denx.de/pub/u-boot/

    并不是越新的越好,新版本和老板可能对于你的cpu和board内容都是一样的,增加的仅仅是新的cpu和评估板。我个人认为还有一个 比较关键的就是“目录结构”的改变。不仅仅是把文件调换的位置,而是新生一些文件将共性的东西抽象再一起,这个我们稍后以及在今后的连载中(我会强迫自己连载)详细的说。如今的uboot虽然逻辑功能没变但已经不是韦老师的那个时代(韦东山老师,业界大牛人现在依然活跃,当年一边工作一边学习老师的视频,得到了鱼也学到了渔)。我选用的版本是u-boot-2013.10.tar.bz2 没有具体的原因,公司的服务器上出现概率最高的版本,想必很多同事都弄过,便于交流而已。硬件用ARM Cortex A8。

二、Makefile分析


    目录展开入上图。

1、版本号

VERSION = 2013      //主版本号
PATCHLEVEL = 10     //补丁的等级
SUBLEVEL =          //次版本号
EXTRAVERSION =		//附加的信息,可以自己根据需要DIY
ifneq "$(SUBLEVEL)" "" //判断SUBLEVEL是否不为空
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
else
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif

其中要生成的版本号由U_BOOT_VERSION= 表示

TIMESTAMP_FILE = $(obj)include/generated/timestamp_autogenerated.h
VERSION_FILE = $(obj)include/generated/version_autogenerated.h
这两行是在编译的时候生成的现在去目录找是看不到的。
2、两个很重要的变量HOSTARCH HOSTOS

HOSTARCH := $(shell uname -m | \
	sed -e s/i.86/x86/ \
	    -e s/sun4u/sparc64/ \
	    -e s/arm.*/arm/ \
	    -e s/sa110/arm/ \
	    -e s/ppc64/powerpc/ \
	    -e s/ppc/powerpc/ \
	    -e s/macppc/powerpc/\
	    -e s/sh.*/sh/)

HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
	    sed -e 's/\(cygwin\).*/cygwin/')

export	HOSTARCH HOSTOS

HOSTARCH 的获得看起来貌似有些复杂静下心仔细看:

首先启用了一个shell命令 uname -m 获得本地计算机的体系结构,后面还有两个关键点 一个 “|” 管道,还有一个sed字符串替换命令。

实现了用后面的字符串替换前面的字符串实现体系结构命名统一。例:-e s/arm.*/arm/ \  -e s/sa110/arm/ \ 都是替换成“arm”

HOSTOS 得到主机的操作系统 uname -s 得到的是 Linux,自己可以尝试一下。

这两个环境变量主要是得到本地环境的操作系统cpu的信息。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值