内容发布更新时间 : 2025/1/23 4:51:37星期一 下面是文章的全部内容请认真阅读。
Makefile与u-boot 分析
解压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) $;; $@.$$$$; \\
sed 's,\\($*\\)\\.o[ :]*,\\1.o $@ : ,g' ;; $@; \\ rm -f $@.$$$$ 这个呢??实在太难看
了,................................
就这样,这些内容就像我们画板子,刻电路板一样。即使要手动布线,一套常用的完整的规则我们很容易把握,可是总是有一些不怎么规则的东西,要我们去注意每一个细节。要你精疲力尽!! 哥做嵌入式也不容易...........