日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

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

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

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

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

使用環(huán)境

PC:     Centos5.4


kernel: 3.0.1


corss:  arm-linux-gcc 4.4.1


arm:    s3c6410

uboot:  uboot-2010-03

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



開(kāi)始教程之前.你需要下載源碼,解壓....此處略過(guò)千萬(wàn)行~~源碼為uboot2010.03這個(gè)..別整錯(cuò)了.錯(cuò)了也沒(méi)事,都差不多~


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

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

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

下面先編譯試下...肯定很多錯(cuò)誤喔~~~

好了,那我這里就犯?jìng)€(gè)傻.來(lái)Make下,首先你得Make smdk6410_config

我這第一個(gè)錯(cuò)誤是如下:

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

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

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

$1 沒(méi)錯(cuò),就是我們板級(jí)的名字smdk6410 這樣uboot就有了未卜先知的能力...具體查看分析篇


好.我們復(fù)制smdk6400.h

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


好,我們繼續(xù)make,接著是我的第二個(gè)錯(cuò)誤.沒(méi)有smdk6410這個(gè)目錄...哎~~這里就不分析為什么會(huì)冒出來(lái)smdk6410這個(gè)目錄了..請(qǐng)看分析篇

make -C board/samsung/smdk6410/

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

make[1]: *** 沒(méi)有指明目標(biāo)并且找不到 makefile。 停止。

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

make: *** [board/samsung/smdk6410/libsmdk6410.a] 錯(cuò)誤 2


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

cd board/samsung/

cp smdk6400 smdk6410 -rf

cd smdk6410/

修改smdk6400.c 為smdk6410.c

打開(kāi)smdk6410.c 修改頭文件#include 為#include

沒(méi)錯(cuò),這個(gè)頭文件是沒(méi)有的,一會(huì)自己復(fù)制下....依舊是復(fù)制s3c6400.h

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

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

該目錄下的其他文件也得看看有沒(méi)有這個(gè)頭文件.需要修改呦~~~

好了.最后剩下Makefile需要修改了.在編譯錯(cuò)誤中說(shuō),libsmdk6410.a 這個(gè)沒(méi)有...對(duì)滴..需要把Makefile中的smdk6400.o 改成smkd6410.o

因?yàn)槲覀兊脑次募忠呀?jīng)改了...


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

哎呀媽呀..又是錯(cuò)...這又是啥呢?沒(méi)有cpu_init.o庫(kù)?

我們直接進(jìn)這個(gè)目錄下一看究竟

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

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

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

哈哈~~其實(shí)只要重新選擇板級(jí)make smdk6410_config 重新生成config.mk


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


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


Smdk6410.h


#define CONFIG_S3C6400  


)


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

make -C nand_spl/board/samsung/smdk6410 all

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

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

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

make: *** [nand_spl] 錯(cuò)誤 2

這個(gè)問(wèn)題簡(jiǎn)單了吧....當(dāng)然是沒(méi)有這個(gè)目錄了...咱們還是去復(fù)制吧

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

cd nand_spl/board/samsung/smdk6410/

繼續(xù)修改頭文件,還有Makefile 還有文件名字對(duì)吧...沒(méi)錯(cuò)...聰明~~~~

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


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


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

我這里總結(jié)下:

1:修改Makefile

->交叉編譯器

->添加smdk6410_config目標(biāo)

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目錄


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

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

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

移植u-boot 1.1.6到TQ2440開(kāi)發(fā)板-第二階段
經(jīng)過(guò)了第一階段的修改,目前能夠編譯出uboot.bin文件,但是這個(gè)文件還不能支持TQ2440,因?yàn)槲覀兪窃趕mdk2410上移植,代碼還是支持smdk2410,因此要開(kāi)始第二階段的修改 移植u-boot 1.1.6到TQ2440開(kāi)發(fā)板-第二階段 增加uboot對(duì)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) #
[單片機(jī)]
u-boot啟動(dòng)過(guò)程分析——基于lpc2210的移植代碼
u-boot是一種普遍用于嵌入式系統(tǒng)中的Bootloader。 Bootloader介紹 Bootloader是進(jìn)行嵌入式開(kāi)發(fā)必然會(huì)接觸的一個(gè)概念,它是嵌入式學(xué)院 嵌入式工程師職業(yè)培訓(xùn)班 二期課程中嵌入式linux系統(tǒng)開(kāi)發(fā)方面的重要內(nèi)容。本篇文章主要講解Bootloader的基本概念以及內(nèi)部原理,這部分內(nèi)容的掌握將對(duì)嵌入式linux系統(tǒng)開(kāi)發(fā)的學(xué)習(xí)非常有幫助! Bootloader的定義:Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一小段程序,通過(guò)這一小段程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。意思就是說(shuō)如果我們要想讓一個(gè)操作系統(tǒng)在我們的板子上運(yùn)轉(zhuǎn)起來(lái)
[單片機(jī)]
<font color='red'>u-boot</font>啟動(dòng)過(guò)程分析——基于lpc2210的<font color='red'>移植</font>代碼
u-boot2010.03 配置編譯目標(biāo)分析
該系列教程會(huì)根據(jù)uboot的編譯過(guò)程進(jìn)程分析,如何編譯,那么將會(huì)如何分析這些流程 此處我還沒(méi)有增加6410的支持,先看6400 的過(guò)程,因?yàn)檫€沒(méi)有到增加的地方,分析完整個(gè)流程之后,會(huì)寫(xiě)如何移植uboot到s3c6410的。知道了工作的流程,再去移植會(huì)事半功倍的。 拿到uboot首先會(huì)修改編譯的目標(biāo): make smdk6400_config 對(duì)執(zhí)行如下的目標(biāo) ####################################################### ## ARM1176 Systems #######################################################
[單片機(jī)]
[國(guó)嵌筆記](méi)[030][U-Boot工作流程分析]
uboot工作流程分析 程序入口 1.打開(kāi)頂層目錄的Makefile,找到目標(biāo)smdk2440_config的命令中的第三項(xiàng)(smdk2440) 2.進(jìn)入目錄board/samsung/smdk2440/,找到u-boot.lds文件。uboot的鏈接都是由這個(gè)鏈接器腳本來(lái)控制的 3.打開(kāi)u-boot.lds文件,找到.text(代碼段)的第一個(gè)文件cup/s3c24xx/start.o,該文件就是uboot的入口代碼。鏈接器腳本中的ENTRY用來(lái)表明整個(gè)程序的入口,那么標(biāo)號(hào)_start就是整個(gè)程序的入口 4.第一階段入口在cup/s3c24xx/start.S文件的_start處 5.第二階段入口在lib_arm/board.c
[單片機(jī)]
[國(guó)嵌筆記](méi)[030][<font color='red'>U-Boot</font>工作流程分析]
OK6410A 開(kāi)發(fā)板 (三) 15 u-boot-2021.01 boot 解析 U-boot 鏡像編譯部分 Makefile解析
Makefile 分幾層 頂層 : Makefile 2層 : scripts/Makefile.build 2層 : scripts/Makefile.autoconf 2層 : scripts/Makefile.spl 當(dāng)然還有其他的Makefile , 不過(guò)編譯log 中沒(méi)提到 例如 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
[單片機(jī)]
rt-thread移植finSH控制臺(tái)中STM32 HAL庫(kù)的缺陷
小小的一個(gè)串口居然看了半天,原來(lái)對(duì)STM32系列的lib庫(kù),好像是1.x版本感覺(jué)還不錯(cuò)的。后來(lái)ST非要整個(gè)CUBEMx庫(kù),往一個(gè)中斷接受函數(shù)里丟了一堆東西。 在rt-thread官網(wǎng)中給出了nano版本增加控制臺(tái)的示范例程,主要是增加了一個(gè)接受隊(duì)列。(如果用rt-thread studio配置控制臺(tái),接受好像用的是查詢(xún)模式,如果只是單純一個(gè)控制臺(tái),不干其他事情好像也沒(méi)啥事) #ifdef RT_USING_FINSH char rt_hw_console_getchar(void) { int ch = -1; if (__HAL_UART_GET_FLAG(&handle, UART_FLAG_RXNE) !=
[單片機(jī)]
移植u-boot-2010.03問(wèn)題 --- raise: Signal # 8 caught
再次這里給自己強(qiáng)調(diào)一下,網(wǎng)上其他解決這個(gè)問(wèn)題的是基于u-boot其他版本,自己在試用了其他方法之后均未能解決這個(gè)問(wèn)題,可能是由于代碼不一樣,因此需要解決這個(gè)問(wèn)題時(shí),改動(dòng)的代碼當(dāng)然也不一樣。這里先按照這位朋友的方法解決,日后如果有能力,再回來(lái)補(bǔ)充這篇文章。 方法是:找到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
[單片機(jī)]
移植u-boot-2010.03問(wèn)題 --- 網(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
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

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