專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

Makefile與u-boot 分析

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年07月30日   【字體:

       解壓u-boot后,u-boot下面有許多許多的目錄,有成百上千個(gè)文件。想想都覺得恐怖,怎看這么多的文件。剛開始真的是沒有辦法,連程序的入口都不知道在哪,用些時(shí)間熟悉了它的目錄結(jié)構(gòu),開始有些了解。

       u-boot支持很多的平臺(tái)和板子,我們只關(guān)心的是ARM平臺(tái),我們可以把不相關(guān)的平臺(tái)的內(nèi)容刪除,以免妨礙我們,看著文件少了看著也舒服點(diǎn)。既然要移植那就要分析它的代碼,得弄明白我們需要改什么地方、怎么改,具體是要非常清楚cpu啟動(dòng)那部分的匯編和班子初始化那里,其它所有平臺(tái)都通用的代碼就沒有必要去看了。

      我覺得在啟動(dòng)第一階段,那些匯編部分更簡(jiǎn)單 很容易明白,用匯編它也復(fù)雜不到那里去。從start_armboot()開始的C代碼就越看越復(fù)雜,那些太復(fù)雜了,數(shù)據(jù)類型定義又多,光是找這些數(shù)據(jù)類型的定義就已經(jīng)暈了,有些地方又插入些別的,簡(jiǎn)直就混編了。

     對(duì)于Makefile,我打開u-boot的第一個(gè)主Makefile有2200多行,最初以為Makefile不會(huì)很復(fù)雜,現(xiàn)在什么都變得很復(fù)雜了。像u-boot和Linux系統(tǒng)這些大工程,面對(duì)它們需要的是更多的耐心和信心,比如Makefile的:
 

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

 這個(gè)很簡(jiǎn)單,一眼就看出來(lái)

 

         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 $<

那么這個(gè)復(fù)雜點(diǎn),又多了變量,有函數(shù)和自動(dòng)變量。仔細(xì)看看也不難

 

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

這個(gè)呢??實(shí)在太難看了,................................

   就這樣,這些內(nèi)容就像我們畫板子,刻電路板一樣。即使要手動(dòng)布線,一套常用的完整的規(guī)則我們很容易把握,可是總是有一些不怎么規(guī)則的東西,要我們?nèi)プ⒁饷恳粋(gè)細(xì)節(jié)。要你精疲力盡。

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

關(guān)閉窗口

相關(guān)文章