www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]說 明:這是u-boot移植文檔,移植到實(shí)驗(yàn)室的遠(yuǎn)峰s3c2410開發(fā)板(YF2410, 無NOR flash)。當(dāng)時(shí)本來計(jì)劃細(xì)化后分幾部分貼在博客上,后來也沒做這項(xiàng)工作。正好前幾天轉(zhuǎn)了一篇在skyeye上運(yùn)行u-boot的文章,順便貼出自己這

說 明:這是u-boot移植文檔,移植到實(shí)驗(yàn)室的遠(yuǎn)峰s3c2410開發(fā)板(YF2410, 無NOR flash)。當(dāng)時(shí)本來計(jì)劃細(xì)化后分幾部分貼在博客上,后來也沒做這項(xiàng)工作。正好前幾天轉(zhuǎn)了一篇在skyeye上運(yùn)行u-boot的文章,順便貼出自己這 篇:)

1, 基本思路

==========

(1)思路

看參考資料(1),(2)對(duì)u-boot有了基本了解, 但沒有把握。嘗試進(jìn)行修改后,感覺不理解。于是嘗試u-boot在ram中運(yùn)行,當(dāng)時(shí)覺得使用ICE很沒有把握,畢竟沒怎么用過,上網(wǎng)查資料,在"ADS 調(diào)試經(jīng)驗(yàn)"文章中看到了方法,嘗試幾次后才成功。后來閱讀讀u-boot和vivi相關(guān)代碼,結(jié)合s3c2410文檔和"ARM SOC體系結(jié)構(gòu)"學(xué)習(xí)匯編語言,這樣對(duì)bootloader第一階段有了直接的了解,感覺心里有底了,這時(shí)"boot from nand flash"等文檔已經(jīng)找到,感覺如果第一階段成功,第二階段會(huì)更有把握"。最初的第一階段移植沒有遇到什么困難。

在第二階段一直中參考了vcam9開發(fā)板和"boot from nand flash",只是在"CFG_NO_FLASH"和"ENV"遇到些問題,認(rèn)真分析后隨即解決。

這時(shí)反過來再修改第一階段代碼,在"move r10, lr"等語句的修改后,u-boot啟動(dòng)失敗,第二天決定分析匯編語言,根據(jù)記憶查"skyeye"那本書,找到ojbectdump這個(gè)工具,反匯編后,問題解決。

總的來說,最大的問題就是基本工具的使用包括ICE,Makefile,binutils等。另外,高質(zhì)量的文檔不多。

(2)版本:arm-linux.gcc 3.3.2, u-boot 1.2.0。

(3) 與其它文檔的不同點(diǎn)

(3)-1,更注意將來的可移植性,u-boot第一階段從NAND flash到RAM的搬移代碼移植性更好,并且沒有加入mem_clear代碼。

(3)-2,更注意代碼是否清楚,nand_legacy_rw的cmd參數(shù)直接使用宏定義,而不是數(shù)字;

(3)-3,把內(nèi)容解釋清楚,不僅僅是操作文檔,

(4) 編譯器:3.3.2,使用3.4.1會(huì)出錯(cuò)。

2, 基礎(chǔ)

=======

(1)基礎(chǔ)知識(shí):

bootloader: 移植前要了解bootloader基本原理,看"嵌入式系統(tǒng)bootloader技術(shù)內(nèi)幕.pdf"

arm匯編:邊移植邊學(xué)習(xí),參考s3c2410手冊(cè)和ARM SOC體系結(jié)構(gòu)學(xué)習(xí),需要了解APCS(ARM過程調(diào)用標(biāo)準(zhǔn))

(2)u-boot使用說明:僅介紹引導(dǎo)內(nèi)核所需命令:

(2)-1打補(bǔ)?。?/p>

假設(shè)你已經(jīng)進(jìn)入要解壓縮u-boot的目錄,例如"/usr/src/s3c2410/"。且補(bǔ)丁文件"u-boot-1.2.0_patch_20070911_1317"位于該目錄。用管理員權(quán)限,因?yàn)榫幾gu-boot也需要管理員權(quán)限。

tar jxvf u-boot-1.2.0.tar.bz2

cd u-boot-1.2.0

patch -p1 < ../u-boot-1.2.0_patch_20070911_1317

(2)-2編譯u-boot

(2)-3燒寫flash

(2)-4下載Linux內(nèi)核。

A,用mkimage生成u-boot引導(dǎo)所需映像:

[root@localhost tools]# ./mkimage -A arm -O Linux -T kernel -C none -a

0x30008000 -e 0x30008000 -n Linux2.6.14 -d zImage_2054 zImage_2054_mk

Image Name: Linux2.6.14

Created: Wed Sep 5 20:47:53 2007

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 976804 Bytes = 953.91 kB = 0.93 MB

Load Address: 0x30008000

Entry Point: 0x30008000

見"s3c2410/bootloader/u-boot/BootLinux",tftpboot是使用go啟動(dòng)失敗的例子;tftpboot_successful是使用bootm成功的例子。zImage_2054也在同一個(gè)目錄。

B, 下載Linux內(nèi)核,這里只說明windows下使用tftp的方法。Linux方法見"ARM_Yuanfenglog-20070313.txt"。

windows下是使用tftpd32提供tftp服務(wù),不需要設(shè)置,安裝后即可使用。

tftpboot 31000000 zImage_2054_mk

TFTP from server 172.23.19.132; our IP address is 172.23.19.60

Filename 'zImage_2054_mk'.

Load address: 0x31000000

Loading: *^H#################################################################

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

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

done

Bytes transferred = 976868 (ee7e4 hex)

設(shè)置環(huán)境變量:

setenv gatewayip 172.23.19.254

保存環(huán)境變量:

saveenv

注:根據(jù)代碼和文檔,當(dāng)環(huán)境變量"autostart=yes"時(shí),tftpboot會(huì)自動(dòng)引導(dǎo)下載的內(nèi)核。這個(gè)沒有試驗(yàn),待做。

C, 驗(yàn)證內(nèi)核是否正確:

YF2410 # bootm 31000000

## Booting image at 31000000 ...

Image Name: Linux2.6.14

Created: 2007-09-05 20:47:53 UTC

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 976804 Bytes = 953.9 kB

Load Address: 30008000

Entry Point: 30008000

Verifying Checksum ... OK

OK

Starting kernel ...

Uncompressing

Linux................................................................ done,

booting the kernel.

Linux version 2.6.14 (root@localhost.localdomain) (gcc version 3.4.1) #1 Wed

Aug 22 20:56:33 GMT 2007

......

D, 內(nèi)核啟動(dòng)正確,燒寫到flash中,并且設(shè)置啟動(dòng)參數(shù):

tftpboot 31000000 zImage_2054_mk

TFTP from server 172.23.19.132; our IP address is 172.23.19.60

Filename 'zImage_2054_mk'.

Load address: 0x31000000

Loading: *^H#####################################T############################

##########################################T #######################

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

done

Bytes transferred = 976868 (ee7e4 hex)

YF2410 # nand erase 40000 f0000

NAND erase: device 0 offset 262144, size 983040 ...

OK

YF2410 # nand write 31000000 40000 f0000

NAND write: device 0 offset 262144, size 983040 ...

983040 bytes written: OK

YF2410 # setenv bootcmd nand read 31000000 40000 f0000;bootm 31000000

YF2410 # saveenv

Saving Environment to NAND...

Erasing Nand...Writing to Nand... done

注意,這里的偏移設(shè)置要和Linux內(nèi)核中設(shè)置的NAND flash分區(qū)一致。這里對(duì)應(yīng)kernel分區(qū)。

(2)-5,重啟開發(fā)板:

U-Boot 1.2.0 (Sep 5 2007 - 10:08:14)

DRAM: 64 MB

NAND: 64 MB

In: serial

Out: serial

Err: serial

Hit any key to stop autoboot: 2 ^H^H^H 1 ^H^H^H 0

NAND read: device 0 offset 262144, size 983040 ...

983040 bytes read: OK

## Booting image at 31000000 ...

Image Name: Linux2.6.14

Created: 2007-09-05 20:47:53 UTC

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 976804 Bytes = 953.9 kB

Load Address: 30008000

Entry Point: 30008000

Verifying Checksum ... OK

OK

Starting kernel ...

Uncompressing

Linux................................................................ done,

booting the kernel.

......

3, u-boot移植過程:

=================

本 次移植使用u-boot1.2.0,還不會(huì)用git,如果進(jìn)一步做移植還是使用最新版比較好。整個(gè)的u-boot移植完成了兩部分:(1)u-boot第 一階段移植,完成從flash到sdram的復(fù)制;(2)u-boot第二階段移植,完成nand legacy操作函數(shù),saveenv函數(shù);

(1)u-boot在ram中運(yùn)行

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

目的:驗(yàn)證u-boot能否正常啟動(dòng),為下一步工作打基礎(chǔ);

編譯方法:

make distclean #徹底刪除make產(chǎn)生的文件中間文件,如果開發(fā)過程中修改了目錄,需要

#distclean,否則依賴關(guān)系是舊的,無法編譯。一般下使用"make

# clean"刪除中間文件即可。

make smdk2410_config #配置u-boot為smdk2410配置文件,待做結(jié)合此看懂

#"mkconfig"文件

make ARCH=arm #編譯u-boot,執(zhí)行體系結(jié)構(gòu)是ARM

u- boot在ram中運(yùn)行成功,日志見"s3c2410/bootloader/u-boot/in_ram",具體過程見"AXD_u- boot_ram_log",起始地址是從include/configs/smdf2410.h文件CFG_LOAD_ADDR宏看到的 (0x33000000)。

第一次做loadbinary(lb)時(shí),System Output Monitor的Debog Log選項(xiàng)卡會(huì)顯示W(wǎng)arning,>說映象有錯(cuò),沒管它,繼續(xù)進(jìn)行,可以啟動(dòng)u-boot。后來這個(gè)Warning也不出出現(xiàn)了。這樣>對(duì) flash的移植就有了基礎(chǔ)。繼續(xù)加油!

AXD運(yùn)行bin文件的方法參考了"ARM ADS中的AXD 調(diào)試經(jīng)驗(yàn)集錦",axf文件與bin文件的區(qū)別>見"ARM映象文件及執(zhí)行機(jī)理001"。

運(yùn)行: AXD操作日志和u-boot啟動(dòng)日志以及u-boot.bin見"s3c2410/bootloader/u-boot/in_ram"

注:如果鏈接出錯(cuò),可能是編譯器的問題,用3.4.1不行,3.3.2就可以,很奇怪。這和注>釋里面提到的需要用3.4以上編譯起矛盾(待做,查那個(gè)文檔的名字),下面是當(dāng)時(shí)錯(cuò)誤的記錄:

cd /usr/src/s3c2420-linux/bootloader/u-boot-1.2.0 && arm-linux-ld -Bstatic -T

/usr/src/s3c2420-linux/bootloader/u-boot-1.2.0/board/YF2410/u-boot.lds -Ttext

0x33F80000 $UNDEF_SYM cpu/arm920t/start.o

--start-group lib_generic/libgeneric.a

board/YF2410/libYF2410.a cpu/arm920t/libarm920t.a

cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a

fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a

fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a

rtc/librtc.a dtt/libdtt.a drivers/libdrivers.a drivers/nand/libnand.a

drivers/nand_legacy/libnand_legacy.a drivers/sk98lin/libsk98lin.a

post/libpost.a post/cpu/libcpu.a common/libcommon.a --end-group -L

/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1 -lgcc

-Map u-boot.map -o u-boot

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉