<abbr id="kc8ii"><menu id="kc8ii"></menu></abbr>
  • <input id="kc8ii"><tbody id="kc8ii"></tbody></input><table id="kc8ii"><source id="kc8ii"></source></table><kbd id="kc8ii"></kbd>
    <center id="kc8ii"><table id="kc8ii"></table></center>
  • <input id="kc8ii"></input>
    <abbr id="kc8ii"></abbr>
  • <abbr id="kc8ii"></abbr>
  • <center id="kc8ii"><table id="kc8ii"></table></center>
    <abbr id="kc8ii"></abbr>
    你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文

    ARM菜鳥快速上手

    發(fā)布時(shí)間:2012-11-30 責(zé)任編輯:sherryyu

    【導(dǎo)讀】世界的多元化,造就我們要知識(shí)廣泛化,可能對(duì)于ARM有的人一無(wú)所知,還有的人一知半解,本文就一些知識(shí),幫忙大家很快的入門.


    我使用的是51eda 的44B0X 豪華板,用jtag 小板調(diào)試,編譯環(huán)境是ADS1.2,調(diào)試環(huán)境是SDT2.51,程序燒寫用FlashP,用其他燒寫工具也可以。

    1、 電源設(shè)定:拿到板,首先檢查電源的配置,我使用USB 供電,所以在電源插口附近的跳線要設(shè)定成USB 供電,而不是外部供電。

    2 、連接接口:關(guān)閉主機(jī),連接串口,主機(jī)端是COM0 口,開發(fā)板這端是靠近LCD口的COM1 口(另一個(gè)是COM2 口);連接網(wǎng)口,因?yàn)榫W(wǎng)線可以帶電插拔,所以現(xiàn)在不管;連接并口,將jtag小板接上,將一根20芯的排線插在jtag小板的SDT_JTAG 口上,(接在wiggler口上也行,跟開發(fā)工具的選擇有關(guān)),另一段插在開發(fā)板的jtag 口上。USB 也可以插上,注意在開發(fā)板有點(diǎn)之前把開發(fā)板的開關(guān)扳到下面,使開發(fā)板出于關(guān)停的狀態(tài)。至此,硬件連接結(jié)束,開主機(jī)時(shí)一定要保持開發(fā)板是關(guān)停狀態(tài)。

    3 、主機(jī)打開以后,運(yùn)行ADS 編譯開發(fā)環(huán)境:
    File->New,顯示對(duì)話框:

     

     

    1

    建立一個(gè) ARM 可執(zhí)行映像(ARM Executable Image)。

    2

    把左上角的下拉菜單改為 Debug 好了,軟件開發(fā)前期用這個(gè)選項(xiàng)。
    新建一個(gè)匯編源代碼文件,并加入工程,比如命名為44binit.s
    輸入以下代碼:
                   AREA Init, CODE, READONLY
           ENTRY
    LABEL
             ldr r0, =0x0
            ldr r1, =0x20
    LABEL_01
            add r0,r0,#1
            cmp r0,r1
            ldreq r0, =0x0
            beq LABEL
            bne LABEL_01
    注意AREA 不要頂格寫。這端代碼十分簡(jiǎn)單,大家一看就明白。
    保存文件

    下面這步比較重要,是程序編譯的設(shè)定。
    點(diǎn)點(diǎn)擊該工程上方的3按鈕,或者選擇Edit->DebugSetting…,如圖

    3

    有幾個(gè)地方要修改,在這個(gè)界面下,在 Post-linker 欄里選擇ARM fromELF,這是生成最后目標(biāo)的可選項(xiàng)目之一,也是比較常用的。
    在 Language Settings 里,要修改編譯器的設(shè)定,對(duì)本項(xiàng)目,默認(rèn)設(shè)定已經(jīng)可以,不需要改動(dòng),在實(shí)際的工作中,安自己的需要更改之。
    下面設(shè)定連接器 Linker,這是很重要的一步,由于ARM 開發(fā)模式和程序運(yùn)行的存儲(chǔ)器與DSP 不同,通常在Linker 環(huán)節(jié)的設(shè)定對(duì)ARM 開發(fā)來(lái)講很重要。

    5

    在 ARM Linker 的Output 標(biāo)簽里,設(shè)定如上圖,因?yàn)槲覀兊某绦蚴遣话琒DRAM 初始化代碼的,所以我的代碼無(wú)法初始化SDRAM,這意味這向SDRAM 寫入數(shù)據(jù)將是不可靠的,所以在SDRAM 初始化代碼運(yùn)行前,不要將代碼裝入SDRAM 中調(diào)試。這就要求我們的代碼要運(yùn)行在0x0 地址,所以我們將RO Base 欄填入0x0,RW Base 不填,表示RW 段緊跟著RO 段。
    選擇 Layout 標(biāo)簽,如圖:

    5

    在Place at beginning of image 域里,兩個(gè)欄分別填入,44binit.o 和Init,表示在初始地址放入44binit.o,這個(gè)目標(biāo)文件就是源文件編譯得來(lái)的,因?yàn)槲覀冎挥幸粋€(gè)文件要編譯,所以即使這里不如此設(shè)定,代碼一樣會(huì)定位到0x0 處,只是以后一個(gè)項(xiàng)目包含多個(gè)文件時(shí),一定要用這種方法指定0x0 開始時(shí)的代碼源于哪個(gè)文件的代碼。以后如果用Scatter 文件規(guī)定存儲(chǔ)器分布就不用這么設(shè)定了。
    選中左邊的 ARM fromELF 項(xiàng),如圖:

    6

    在這里選擇 Output format,一般選Plain binary,這是比較常用的格式,output 文件后綴是bin。好了,確認(rèn)設(shè)定無(wú)誤后可以編譯,在項(xiàng)目的文件夾里可以找到bin 后綴的文件,這就是我們要燒寫的文件。

    4、燒寫flash,我用“Flash 燒寫器2.1”燒寫程序,它的可執(zhí)行文件名是FlashP.exe。網(wǎng)上比較常見(jiàn),燒寫速度較快。運(yùn)行以后如圖:

    7

    在左邊的三個(gè)框里選擇 44b0x,SDT JTAG 和并口1。右邊4 個(gè)按鈕分別是:擦除芯片,保存存儲(chǔ)內(nèi)容,空白區(qū)檢測(cè)和燒寫。在燒寫前將開發(fā)板上電,清楚并檢測(cè)一下 flash 芯片,然后選擇剛剛編譯的bin 文件燒寫。

    5、 調(diào)試,現(xiàn)在我們僅能在flash 芯片里觀察程序運(yùn)行,因?yàn)槲覀兊腟DRAM 沒(méi)有正確初始化。調(diào)試前要運(yùn)行 JTAG2000 的后臺(tái)程序,如果第一次調(diào)試,JTAG2000 要求安裝GiveIO 軟件,安裝就是了。就像龔俊大哥寫的入門教程里提到的那樣,JTAG2000 將發(fā)往網(wǎng)口的調(diào)試命令和數(shù)據(jù)截住,改發(fā)給聯(lián)接jtag 小板的并口,所以在SDT 的debugger 里設(shè)定時(shí)要設(shè)定成網(wǎng)口調(diào)試。

    調(diào)試?yán)玻冗\(yùn)行JTAG2000,顯示一個(gè)DOS 運(yùn)行框,不管它了,最小化就好。運(yùn)行SDT的Debugger,他會(huì)問(wèn)你是否是遠(yuǎn)程調(diào)試,如果不問(wèn)就是因?yàn)樵瓉?lái)的設(shè)定是ARMulator 軟仿真調(diào)試。要在Options->Configure Debugger里改成遠(yuǎn)程調(diào)試,如圖:

    8

    點(diǎn)擊該對(duì)話框的 Configure 按鈕,如圖:

    9

    按照?qǐng)D中設(shè)定,注意把IP 換成你的IP,呵呵,我的是天津大學(xué)校園網(wǎng)的IP,你們要填寫你的電腦的IP,要保持此處的內(nèi)容和你的電腦的設(shè)定一致。OK,確定,保存你的配置。

    這時(shí) JTAG2000 的窗口里應(yīng)該有輸出,先不管,在SDT Debugger 里,選擇File->Load Image…,到你的工程目錄下選擇那個(gè)和BIN 同一文件夾下的AXF 文件,這是用來(lái)調(diào)試的文件,打開,SDT Debugger 的客戶區(qū)就會(huì)顯示你的代碼,和程序停止的位置,如圖:

    9

    接下來(lái)就是考驗(yàn)?zāi)阏{(diào)試的功夫了,當(dāng)然我的程序太短小,也沒(méi)有使用價(jià)值(其實(shí)也有,就是演示的價(jià)值),也沒(méi)有要調(diào)試的地方,我編寫這個(gè)程序僅僅是讓大家看看從買來(lái)板子到運(yùn)行第一個(gè)哪怕是最弱智的程序的全過(guò)程。

    好了,我們已經(jīng)能跑程序了,雖然這個(gè)程序太弱智了。但是它畢竟運(yùn)行了。好像有點(diǎn)慢,對(duì)了,他是在flash 里運(yùn)行,當(dāng)然要慢。以上面的方法調(diào)試程序,而且每發(fā)現(xiàn)一個(gè)bug 就要重新燒寫flash,會(huì)傷到芯片。把程序放在SDRAM 里運(yùn)行就好了。

    把程序請(qǐng)進(jìn) SDRAM 里,有幾個(gè)問(wèn)題,就是SDRAM 要求初始化,未初始化的SDRAM芯片和沒(méi)有焊在板子上一樣。再有就是編譯的時(shí)候,RO 的地址要設(shè)定在SDRAM 里。后者只是重新編譯的問(wèn)題,主要是前者,我在這里不講,這主要是軟件編制的問(wèn)題,開發(fā)板附帶的光盤的BIOS 代碼示例中有關(guān)于SDRAM 初始化的代碼,自己去看。

    要采購(gòu)開發(fā)板么,點(diǎn)這里了解一下價(jià)格!
    特別推薦
    技術(shù)文章更多>>
    技術(shù)白皮書下載更多>>
    熱門搜索
    ?

    關(guān)閉

    ?

    關(guān)閉

    无码精品国产dvd在线观看9久| 中文自拍日本综合| 一区二区三区人妻无码| 中文字幕亚洲欧美日韩2019| 无码国产伦一区二区三区视频| 最近免费中文字幕高清大全| 久久精品无码一区二区三区日韩 | 日韩人妻精品无码一区二区三区| 天堂资源8中文最新版| 蜜臀AV无码国产精品色午夜麻豆 | 少妇无码AV无码专区在线观看| 一级中文字幕免费乱码专区| 亚洲中文字幕无码日韩| 无码人妻丰满熟妇区五十路| 精品人妻大屁股白浆无码| 亚洲中文字幕无码一区二区三区 | 亚洲精品无码AV中文字幕电影网站| 无码日韩精品一区二区人妻| 久久精品aⅴ无码中文字字幕重口 久久精品国产亚洲AV无码娇色 | 乱人伦中文视频在线| 国产成人无码免费看片软件| 亚洲AV无码不卡在线播放| 国产AV无码专区亚洲AV手机麻豆| 欧美日韩中文字幕在线| 人妻AV中文字幕一区二区三区| 中文在线中文A| 亚洲一区无码精品色| 亚洲精品无码成人片在线观看 | 天天看高清无码一区二区三区| 国产精品亚洲专区无码WEB| 精品国产v无码大片在线观看| 日韩国产成人无码av毛片| 亚洲VA中文字幕不卡无码| 亚洲成AV人片在线观看无码| 亚洲国产精品无码专区在线观看 | 无码精品人妻一区二区三区漫画 | 精品欧洲av无码一区二区三区| 人妻丰满熟妇AV无码片| 精品欧洲av无码一区二区| 精品久久久久久无码中文字幕| 人妻少妇看A偷人无码精品|