總有一款合適你--ARM下裸機開(kāi)發(fā)環(huán)境大全

發(fā)布時(shí)間:2011-3-25 14:29    發(fā)布者:techshare
關(guān)鍵詞: arm , 開(kāi)發(fā)環(huán)境 , 裸機
一.什么是裸機開(kāi)發(fā)

裸機是一種通俗的講法,就是指ARM設備上沒(méi)有任何現成的程序來(lái)支持你的開(kāi)發(fā)的軟件運行。它是相對設備上有在操作系統的情況運行可執行程序而言的。

這兩種程序有很大區別。在操作系統環(huán)境下,基本上跟桌面程序開(kāi)發(fā)沒(méi)有太多區別,而裸機程序需要自己初始化硬件環(huán)境來(lái)運行。因為必須有一小段匯編寫(xiě)的引導代碼來(lái)初始化,并且直接操作硬件。

裸機程序一般采用少量匯編加C語(yǔ)言來(lái)編譯(理論上C++可以了,但比較少)主要用來(lái)ARM匯編,硬件控制教學(xué)。硬件驗證和驅動(dòng)開(kāi)發(fā)。

大型的程序bootloader,實(shí)時(shí)操作系統uCOS/Nclues嚴格講也是裸機程序。

而且ARM的CPU的都有JTAG的在線(xiàn)硬件調試接口,通過(guò)JTAG硬件調試器,可以直接運行和單步調試裸機程序

二.裸機開(kāi)發(fā)流程.

編碼-->編譯-->調試-->下載

1.編碼采用文本編輯器或相應IDE均可

2.編譯器目前主要是兩大類(lèi)

armcc (ARM出品的編譯器)

arm-linux-gcc (GNU ARM-Linux 編譯器,在非EABI的編譯器還分為arm-elf-gcc和arm-linux-gcc的區別現在基本不分了。)

arm-linux-gcc 編譯出來(lái)的可執行文件格式是ELF,除了常見(jiàn)的TEXT段,BSS/DATA段外,還有會(huì )有一些調試段..而armcc編譯出來(lái)的格式是AXF。但AXF本質(zhì)是仍然是ELF格式,只不過(guò)加一些特殊的調試段。

3.調試方法

如果用JTAG在線(xiàn)硬件調試的那種單步調試.有兩種接口。一種是ARM公司的RDI接口,另外一種硬件調試器虛擬的gdb接口。這個(gè)要使用ELF/或AXF格式

但很多程序會(huì )用直接讓程序輸出信息到串口方式進(jìn)行調試。這種速度比較快,可以理解是廣義上的調試。這個(gè)階段要使用BIN格式。

4.下載

下載是指把可執行的BIN文件下載到開(kāi)發(fā)板上的Flash之中。讓其完全脫離調試環(huán)境完全獨立運行。

如果一個(gè)空板,即Flash中沒(méi)有任何程序。這時(shí)需要一些特殊下載方式。比用JTAG燒錄工具下載到Flash之中。有一些CPU還有一些特殊的下載方式。比如S3C6410支持SD卡啟動(dòng)?梢园严螺d的文件放在SD卡上,由SD卡里的BOOTLOADER來(lái)下載。

還有一些CPU內部帶有ROM自行啟動(dòng)一個(gè)小程序,然后通過(guò)USB下載程序。比如JZ4740。

如果Flash上燒錄有bootloader,它往往自帶有燒錄功能。 可以通過(guò)TFTP/USB/串口方式從PC機下載到設備上。

可執行文件格式

Elf

Linux下標準可執行結構.還有一種out是早期的較為簡(jiǎn)單的可執行文件格式。但是在新版本里out就是ELF格式。

BIN

bin文件是由ELF轉化而來(lái),專(zhuān)門(mén)用下載到設備。相對于ELF它有兩個(gè)變化。第一BIN只有基本的text/bss/data段,沒(méi)有調試信息。第二。因為bin要下載到設備的。里面各段的地址是按相應地址對齊燒錄的。因為兩段之間很可能補一些空間的0空間。

ELF轉換為BIN用arm-linux-objcopy 以下語(yǔ)句把elf_name轉換成bin_name。

arm-linux-objcopy -O binary -S elf_name bin_name

HEX:

HEX主要是把BIN內容轉換成相應的ASCII的文本格式,并且每一行都帶下載地址。

HEX文件都是由記錄(RECORD)組成的。在HEX文件里面,每一行代表一個(gè)記錄。記錄的基本格式為:

+---------------------------------------------------------------+

| RECORD | RECLEN | LOAD | RECTYPE | INFO or DATA | CHKSUM |

| MARK ':' | | OFFSET | | | |

+---------------------------------------------------------------+

| 1-byte | 1-byte | 2-byte | 1-byte | n-byte | 1-byte |

+---------------------------------------------------------------+

關(guān)于HEX/BIN區別,參見(jiàn)

http://blog.ednchina.com/wwh_nuaa/74736/message.aspx

不同產(chǎn)家的HEX格式有細微的差別,比如MOTO的HEX格式稱(chēng)為S-Record格式,Intel格式稱(chēng)為 Intel-HEX ,兩者的差別參見(jiàn)

http://blog.chinaunix.net/u1/58640/showart_1864111.html

http://www.upsdn.net/html/2004-12/95.html

多用于可編程器的的離線(xiàn)下載或者單片機程序的下載。ARM開(kāi)發(fā)不常用。

三.裸機開(kāi)發(fā)環(huán)境.

常見(jiàn)的裸機開(kāi)發(fā)環(huán)境

3.1 ADS開(kāi)發(fā)環(huán)境 并口。

1.HOST操作系統: Windows

2.編譯器 : armcc

3.IDE : ADS

4.適用CPU :ARM7/ARM9

5.HOST硬件接口:并口JTAG調試板

6.調試軟件 :AXD+H-Jtag

特點(diǎn):硬件調試成本比較低,但是調試和下載速度慢。

3.2 ADS開(kāi)發(fā)環(huán)境 USB。

1.HOST操作系統: Windows

2.編譯器 : armcc

3.IDE : ADS

4.適用CPU :ARM7/ARM9

5.HOST硬件接口:USB接口的J-Link

6.調試軟件 : AXD+J-LinK RDI

3.3 arm-linux-gcc USB。

1.HOST操作系統: Linux

2.編譯器 : arm-elf-gcc /arm-linux-gcc

3.IDE : 任何支持GCC的IDE(如Eclipse等)

4.適用CPU :ARM7/ARM9/ARM11

5.HOST硬件接口:USB接口的OpenJtag

6.調試軟件 : OpenOCD/gdb

注:有WINDOWS相應版本

3.4 RVDS USB

1.HOST操作系統: Windowsj/Linux

2.編譯器 : armcc

3.IDE : RealView/Eclipse

4.適用CPU :ARM全系列

5.HOST硬件接口:USB接口的J-Link

6.調試軟件 : J-Link GDB

注:RVDS是RealView Developer Suite的縮寫(xiě)是,ARM開(kāi)發(fā)的ADS的升級版,在Eclipse基礎上改進(jìn)。因此可以在多個(gè)操作系統運行。

另外armcc可以直接在Makefile調用,不需要通IDE。這也是很多大型軟件編譯方法
本文地址:http://selenalain.com/thread-59924-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
初級工 發(fā)表于 2011-3-28 12:56:57
好文!
leeux 發(fā)表于 2011-4-1 07:17:51
謝謝。。。。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页