移植篇(一)-----修改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 沒錯,這個頭文件是沒有的,一會自己復制下....依舊是復制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目錄
上一篇:TQQ2440第三節(jié):串口
下一篇:基于ok6410的韋東山驅動視頻簡要分析--USB驅動
推薦閱讀最新更新時間:2025-06-11 09:34

![[國嵌筆記][030][<font color='red'>U-Boot</font>工作流程分析]](https://6.eewimg.cn/news/statics/images/loading.gif)
設計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- GD32E231的熏香機控制板
- ±6kV-24VDC
- L6225 DMOS雙路全橋驅動器評估板
- DER-960 - 使用 InnoSwitch4-Pro PowiGaN、ClampZero、HiperPFS-5 和英集芯 USB Type-C PD 控制器的 100 W USB PD 3.0 + PPS 電源,帶 ZVS
- 數(shù)字時鐘
- LTC3401EMS 演示板、2 個電路、1W/3W 同步升壓穩(wěn)壓器、1V 至 4.5V 輸入、3.3V 或 5V @ 0.2A、3.3V 或 5V @ 0.6A
- AM20EW-2415DZ 雙路輸出、20 瓦 DC-DC 轉換器的典型應用
- Smarthome-dashbutton:智能家居控制按鈕
- LT1761-3.3、低噪聲、低壓差微功率穩(wěn)壓器
- Kinetis? KM3x_256 MCU三相電表參考設計
- 蘋果被判侵犯3G專利,需向西班牙公司TOT賠償1.1億美元
- 從設計概念到 FPGA 原型僅需數(shù)分鐘,印度 InCore 完成 SoC Generator 平臺硅驗證
- 消息稱因難尋客戶,三星推遲美國芯片工廠的完工時間
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領先LTPO技術打造行業(yè)新標桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動駕駛安全性
- 曉鶯說:線控制動變革風云
- 大眾商用車推出AirConsole 將其信息娛樂系統(tǒng)擴展為游戲機
- 福州大學發(fā)明新機器視覺傳感器 可使機器人對極端光照做出超快反應
- 蘋果獲沉浸式虛擬顯示器相關的專利
- 英特爾汽車“折戟”,十年布局一夜歸零