国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

u-boot2010.03 移植篇(一) 建立編譯目標

發(fā)布者:EnchantedMagic最新更新時間:2024-11-06 來源: cnblogs關鍵字:u-boot  移植 手機看文章 掃描二維碼
隨時隨地手機看文章

移植篇(一)-----修改Makefile,生成編譯目標---S3C6410

----------------------------------------------------------

使用環(huán)境

PC:     Centos5.4


kernel: 3.0.1


corss:  arm-linux-gcc 4.4.1


arm:    s3c6410

uboot:  uboot-2010-03

----------------------------------------------------------



開始教程之前.你需要下載源碼,解壓....此處略過千萬行~~源碼為uboot2010.03這個..別整錯了.錯了也沒事,都差不多~


這里,我們直接打開Makefile,找到smdk6400_config,根據(jù)6400 添加6410 的目標......如下:

#########################################################################  

## ARM1176 Systems   

#########################################################################  

smdk6400_noUSB_config   

smdk6400_config : unconfig  

        @mkdir -p $(obj)include $(obj)board/samsung/smdk6400  

        @mkdir -p $(obj)nand_spl/board/samsung/smdk6400  

        @echo '#define CONFIG_NAND_U_BOOT' > $(obj)include/config.h  

        @if [ -z '$(findstring smdk6400_noUSB_config,$@)' ]; then   

            echo 'RAM_TEXT = 0x57e00000' >> $(obj)board/samsung/smdk6400/config.tmp;  

            $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx;   

        else   

            echo 'RAM_TEXT = 0xc7e00000' >> $(obj)board/samsung/smdk6400/config.tmp;  

            $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6400 samsung s3c64xx;   

        fi  

        @echo 'CONFIG_NAND_U_BOOT = y' >> $(obj)include/config.mk  

  

smdk6410_noUSB_config   

smdk6410_config : unconfig  

        @mkdir -p $(obj)include $(obj)board/samsung/smdk6410  

        @mkdir -p $(obj)nand_spl/board/samsung/smdk6410  

        @echo '#define CONFIG_NAND_U_BOOT' > $(obj)include/config.h  

        @if [ -z '$(findstring smdk6400_noUSB_config,$@)' ]; then   

            echo 'RAM_TEXT = 0x57e00000' >> $(obj)board/samsung/smdk6410/config.tmp;  

            $(MKCONFIG) $(@:_config=) arm arm1176 smdk6410 samsung s3c64xx;   

        else   

            echo 'RAM_TEXT = 0xc7e00000' >> $(obj)board/samsung/smdk6410/config.tmp;  

            $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6410 samsung s3c64xx;   

        fi  

        @echo 'CONFIG_NAND_U_BOOT = y' >> $(obj)include/config.mk  

接著修改交叉編譯器:

# set default to nothing for native builds  

ifeq ($(HOSTARCH),$(ARCH))  

    CROSS_COMPILE ?= arm-linux-  

endif  

下面先編譯試下...肯定很多錯誤喔~~~

好了,那我這里就犯個傻.來Make下,首先你得Make smdk6410_config

我這第一個錯誤是如下:

fatal error: configs/smdk6410.h: No such file or directory

為啥呢?為什么會出現(xiàn)這個文件沒有呢?到底哪個文件里面居然能未卜先知,知道我們要添加smdk6410.h呢?

我自問自答吧...你可以看分析篇中,mkconfig中最后有寫入config.h中的一句話,有這么一句#include

$1 沒錯,就是我們板級的名字smdk6410 這樣uboot就有了未卜先知的能力...具體查看分析篇


好.我們復制smdk6400.h

cp include/configs/smdk6400.h include/configs/smdk6410.h


好,我們繼續(xù)make,接著是我的第二個錯誤.沒有smdk6410這個目錄...哎~~這里就不分析為什么會冒出來smdk6410這個目錄了..請看分析篇

make -C board/samsung/smdk6410/

make[1]: 正在進入目錄 `/home/LinuxProject/u-boot/u-boot-2010.03/board/samsung/smdk6410'

make[1]: *** 沒有指明目標并且找不到 makefile。 停止。

make[1]:正在離開目錄 `/home/LinuxProject/u-boot/u-boot-2010.03/board/samsung/smdk6410'

make: *** [board/samsung/smdk6410/libsmdk6410.a] 錯誤 2


我們依舊復制smdk6400的.不過得稍微修改下里面的文件喔~~把smdk6400 都改成smdk6410

cd board/samsung/

cp smdk6400 smdk6410 -rf

cd smdk6410/

修改smdk6400.c 為smdk6410.c

打開smdk6410.c 修改頭文件#include 為#include

沒錯,這個頭文件是沒有的,一會自己復制下....依舊是復制s3c6400.h

cp include/asm-arm/arch-s3c64xx/s3c6400.h include/asm-arm/arch-s3c64xx/s3c6410.h

這里為什么復制的路徑不是asm/arch請看分析篇,在make smdk6410_config的時候.會根據(jù)參數(shù)建立軟連接,最后就是這個目錄

該目錄下的其他文件也得看看有沒有這個頭文件.需要修改呦~~~

好了.最后剩下Makefile需要修改了.在編譯錯誤中說,libsmdk6410.a 這個沒有...對滴..需要把Makefile中的smdk6400.o 改成smkd6410.o

因為我們的源文件名字已經(jīng)改了...


咱們繼續(xù)編譯Make咯~~~

哎呀媽呀..又是錯...這又是啥呢?沒有cpu_init.o庫?

我們直接進這個目錄下一看究竟

arm-linux-ld: cannot find cpu/arm1176/s3c64xx/cpu_init.o

直接打開Makefile發(fā)現(xiàn)啥?COBJS-$(CONFIG_S3C6400) += cpu_init.o speed.o

居然跟我們玩條件編譯喔~~~但是不對啊...CONFIG_S3C6400是定義的啊,,在include/configs/smdk6410.h 中是有的.那為什么沒有編譯呢?

哈哈~~其實只要重新選擇板級make smdk6410_config 重新生成config.mk


(在下一篇修改/include/configs/smdk6410.h 的時候,


最后一步說要把所有的6400改為6410,其實不然,在下面這一步就不能改,否則會出現(xiàn)上面那個cpu_init.o not find 的現(xiàn)象,而且用上面的方法是行不通的。


Smdk6410.h


#define CONFIG_S3C6400  


)


繼續(xù)編譯....還是有錯~~~瘋了沒?別著急,快了哈~~~

make -C nand_spl/board/samsung/smdk6410 all

make[1]: 正在進入目錄 `/home/LinuxProject/u-boot/u-boot-2010.03/nand_spl/board/samsung/smdk6410'

make[1]: *** 沒有規(guī)則可以創(chuàng)建目標“all”。 停止。

make[1]:正在離開目錄 `/home/LinuxProject/u-boot/u-boot-2010.03/nand_spl/board/samsung/smdk6410'

make: *** [nand_spl] 錯誤 2

這個問題簡單了吧....當然是沒有這個目錄了...咱們還是去復制吧

cp nand_spl/board/samsung/smdk6400 nand_spl/board/samsung/smdk6410 -rf

cd nand_spl/board/samsung/smdk6410/

繼續(xù)修改頭文件,還有Makefile 還有文件名字對吧...沒錯...聰明~~~~

進去一看...傻了?沒什么好修改的嘛....那就不改唄~~~繼續(xù)編譯吧...


天哪~~好了....編譯出了uboot.bin 了


開心吧~~~今天教程就到這了...我們已經(jīng)達成目的了.到底怎么添加我們需要的目標,以及目標的編譯,需要修改哪些文件,需要添加哪些目錄..

我這里總結下:

1:修改Makefile

->交叉編譯器

->添加smdk6410_config目標

2:添加configs/smdk6410.h頭文件

3:添加board/samsung/smdk6410 目錄,并修改該目錄內(nèi)文件,以及Makefile

4:添加include/asm-arm/arch-s3c64xx/s3c6410.h頭文件

5:添加nand_spl/board/samsung/smdk6410目錄


關鍵字:u-boot  移植 引用地址:u-boot2010.03 移植篇(一) 建立編譯目標

上一篇:TQQ2440第三節(jié):串口
下一篇:基于ok6410的韋東山驅動視頻簡要分析--USB驅動

推薦閱讀最新更新時間:2025-06-11 09:34

移植u-boot 1.1.6到TQ2440開發(fā)板-第二階段
經(jīng)過了第一階段的修改,目前能夠編譯出uboot.bin文件,但是這個文件還不能支持TQ2440,因為我們是在smdk2410上移植,代碼還是支持smdk2410,因此要開始第二階段的修改 移植u-boot 1.1.6到TQ2440開發(fā)板-第二階段 增加uboot對TQ2440的代碼支持 第一步:修改 SDRAM 配置,修改u-boot-1.1.6/board/TQ2440目錄lowlevel_init.S文件 第54行 #define B1_BWSCON (DW16) #define B2_BWSCON (DW16) #define B3_BWSCON (DW16 + WAIT + UBLB) #
[單片機]
u-boot啟動過程分析——基于lpc2210的移植代碼
u-boot是一種普遍用于嵌入式系統(tǒng)中的Bootloader。 Bootloader介紹 Bootloader是進行嵌入式開發(fā)必然會接觸的一個概念,它是嵌入式學院 嵌入式工程師職業(yè)培訓班 二期課程中嵌入式linux系統(tǒng)開發(fā)方面的重要內(nèi)容。本篇文章主要講解Bootloader的基本概念以及內(nèi)部原理,這部分內(nèi)容的掌握將對嵌入式linux系統(tǒng)開發(fā)的學習非常有幫助! Bootloader的定義:Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一小段程序,通過這一小段程序,我們可以初始化硬件設備、建立內(nèi)存空間的映射表,從而建立適當?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準備。意思就是說如果我們要想讓一個操作系統(tǒng)在我們的板子上運轉起來
[單片機]
<font color='red'>u-boot</font>啟動過程分析——基于lpc2210的<font color='red'>移植</font>代碼
u-boot2010.03 配置編譯目標分析
該系列教程會根據(jù)uboot的編譯過程進程分析,如何編譯,那么將會如何分析這些流程 此處我還沒有增加6410的支持,先看6400 的過程,因為還沒有到增加的地方,分析完整個流程之后,會寫如何移植uboot到s3c6410的。知道了工作的流程,再去移植會事半功倍的。 拿到uboot首先會修改編譯的目標: make smdk6400_config 對執(zhí)行如下的目標 ####################################################### ## ARM1176 Systems #######################################################
[單片機]
[國嵌筆記][030][U-Boot工作流程分析]
uboot工作流程分析 程序入口 1.打開頂層目錄的Makefile,找到目標smdk2440_config的命令中的第三項(smdk2440) 2.進入目錄board/samsung/smdk2440/,找到u-boot.lds文件。uboot的鏈接都是由這個鏈接器腳本來控制的 3.打開u-boot.lds文件,找到.text(代碼段)的第一個文件cup/s3c24xx/start.o,該文件就是uboot的入口代碼。鏈接器腳本中的ENTRY用來表明整個程序的入口,那么標號_start就是整個程序的入口 4.第一階段入口在cup/s3c24xx/start.S文件的_start處 5.第二階段入口在lib_arm/board.c
[單片機]
[國嵌筆記][030][<font color='red'>U-Boot</font>工作流程分析]
OK6410A 開發(fā)板 (三) 15 u-boot-2021.01 boot 解析 U-boot 鏡像編譯部分 Makefile解析
Makefile 分幾層 頂層 : Makefile 2層 : scripts/Makefile.build 2層 : scripts/Makefile.autoconf 2層 : scripts/Makefile.spl 當然還有其他的Makefile , 不過編譯log 中沒提到 例如 scripts/Kbuild.include 重要Makefile 以及變量 arm cc 的編譯 : rule_cc_o_c 與 cmd_cc_o_c cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $ # Built-in and composite module parts
[單片機]
rt-thread移植finSH控制臺中STM32 HAL庫的缺陷
小小的一個串口居然看了半天,原來對STM32系列的lib庫,好像是1.x版本感覺還不錯的。后來ST非要整個CUBEMx庫,往一個中斷接受函數(shù)里丟了一堆東西。 在rt-thread官網(wǎng)中給出了nano版本增加控制臺的示范例程,主要是增加了一個接受隊列。(如果用rt-thread studio配置控制臺,接受好像用的是查詢模式,如果只是單純一個控制臺,不干其他事情好像也沒啥事) #ifdef RT_USING_FINSH char rt_hw_console_getchar(void) { int ch = -1; if (__HAL_UART_GET_FLAG(&handle, UART_FLAG_RXNE) !=
[單片機]
移植u-boot-2010.03問題 --- raise: Signal # 8 caught
再次這里給自己強調(diào)一下,網(wǎng)上其他解決這個問題的是基于u-boot其他版本,自己在試用了其他方法之后均未能解決這個問題,可能是由于代碼不一樣,因此需要解決這個問題時,改動的代碼當然也不一樣。這里先按照這位朋友的方法解決,日后如果有能力,再回來補充這篇文章。 方法是:找到u-boot-2010.03/cpu/arm1176/s3c64xx/下的time.c文件。 ulong get_timer_masked(void) { unsigned long long res = get_ticks(); //do_div (res, (timer_load_val / (100 * CONFIG_SYS_HZ))); r
[單片機]
移植u-boot-2010.03問題 --- 網(wǎng)卡DM9000
1,找到u-boot-2010.03/include/configs/smdk6410.h //#define CONFIG_NET_MULTI //#define CONFIG_CS8900 /*we have aCS8900on-board*/ //#define CONFIG_CS8900_BASE 0x18800300 //#define CONFIG_CS8900_BUS16 /*follow the Linux driver*/ /**然后添加DM9000網(wǎng)卡的宏定義---ip以及子網(wǎng)掩碼等根據(jù)自己的需要修改***/ #defineCONFIG_NET_MULTI 1 #defineCONFIG_DM900
[單片機]
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved