专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

Makefile与u-boot 分析

作者:佚名   来源:本站原创   点击数:  更新时间:2011年07月30日   【字体:

       解压u-boot后,u-boot下面有许多许多的目录,有成百上千个文件。想想都觉得恐怖,怎看这么多的文件。刚开始真的是没有办法,连程序的入口都不知道在哪,用些时间熟悉了它的目录结构,开始有些了解。

       u-boot支持很多的平台和板子,我们只关心的是ARM平台,我们可以把不相关的平台的内容删除,以免妨碍我们,看着文件少了看着也舒服点。既然要移植那就要分析它的代码,得弄明白我们需要改什么地方、怎么改,具体是要非常清楚cpu启动那部分的汇编和班子初始化那里,其它所有平台都通用的代码就没有必要去看了。

      我觉得在启动第一阶段,那些汇编部分更简单 很容易明白,用汇编它也复杂不到那里去。从start_armboot()开始的C代码就越看越复杂,那些太复杂了,数据类型定义又多,光是找这些数据类型的定义就已经晕了,有些地方又插入些别的,简直就混编了。

     对于Makefile,我打开u-boot的第一个主Makefile有2200多行,最初以为Makefile不会很复杂,现在什么都变得很复杂了。像u-boot和Linux系统这些大工程,面对它们需要的是更多的耐心和信心,比如Makefile的:
 

              objects = program.o foo.o utils.o
                program : $(objects)
                               cc -o program $(objects)

 这个很简单,一眼就看出来

 

         files = foo.elc bar.o lose.o
         $(filter %.o,$(files)): %.o: %.c
                      $(CC) -c $(CFLAGS) $< -o $@
        $(filter %.elc,$(files)): %.elc: %.el
                      emacs -f batch-byte-compile $<

那么这个复杂点,又多了变量,有函数和自动变量。仔细看看也不难

 

             %.d: %.c
                   @set -e; rm -f $@; \
                        $(CC) -M $(CPPFLAGS) $< >; $@.$$$$; \
                        sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ >; $@; \
                        rm -f $@.$$$$

这个呢??实在太难看了,................................

   就这样,这些内容就像我们画板子,刻电路板一样。即使要手动布线,一套常用的完整的规则我们很容易把握,可是总是有一些不怎么规则的东西,要我们去注意每一个细节。要你精疲力尽!!

       哥做嵌入式也不容易...........

关闭窗口

相关文章