新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Eclipse開發(fā)調(diào)試ARM裸機(jī)程序(二)LED_從ARM到GNU

Eclipse開發(fā)調(diào)試ARM裸機(jī)程序(二)LED_從ARM到GNU

作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
就不對著數(shù)據(jù)手冊說有寄存器了,主要說說ARM匯編和GNU匯編的區(qū)別,以前用RVDS2.2用的匯編程序都真ARM匯編。到用eclipse用的是編譯u-boot或者內(nèi)核的arm-linux-gcc,這次用的匯編要用GNU匯編,編譯時交給arm-linux-gcc來做剩下的工作。
原來的一個RVDS2.2下的匯編LED程序是這樣的:
WTCON	EQU 	0x53000000		;看門狗控制寄存器地址GPBCON	EQU		0x56000010		;GPB控制寄存器GPBDAT	EQU		0x56000014 		;GPB數(shù)據(jù)寄存器AREA    Init,CODE,READONLY 	;聲明代碼段ENTRY  						;表示程序入口CODE32						;聲明32位ARM指令START	ldr	 r0,=WTCON			;關(guān)掉看門狗mov  r1,#0x0str	 r1,[r0]ldr	 r0,=GPBCON			;設(shè)置GPB5為輸出mov  r1,#0x400			str	 r1,[r0]ldr  r0,=GPBDAT			;設(shè)置GPB5為低 點(diǎn)亮LED1mov  r1,#0str  r1,[r0] 			LOOP b		LOOPEND

改成GNU匯編是這樣的:

本文引用地址:http://m.butianyuan.cn/article/201611/318233.htm

;/;*實(shí)驗(yàn)要求:創(chuàng)建啟動代碼匯編文件;*功能描述:初始化一些必須的寄存器;*日    期:2013-04-07;*作    者:kangear;/.equ	WTCON,	0x53000000	@看門狗控制寄存器地址.equ	GPBCON,	0x56000010	@GPB控制寄存器.equ	GPBDAT,	0x56000014 	@GPB數(shù)據(jù)寄存器@		AREA    Init,CODE,READONLY 	@聲明代碼段@		ENTRY  						@表示程序入口@		CODE32						@聲明32位ARM指令.text.global _start_start:ldr	 r0,=WTCON			@關(guān)掉看門狗mov  r1,#0x0str	 r1,[r0]ldr	 r0,=GPBCON			@設(shè)置GPB5為輸出mov  r1,#0x400			str	 r1,[r0]ldr  r0,=GPBDAT			@設(shè)置GPB5為低 點(diǎn)亮LED1mov  r1,#0str  r1,[r0] 			LOOP:b		LOOP.end

EQU變成的.equ; AREA變成了.text; ";"變成了"@"; 裸機(jī)都GNU了。東西不多,調(diào)試的出現(xiàn)的問題說一下,單步調(diào)試到最后一句會出現(xiàn)如下提示:

這個不是什么錯誤,eclipse在說:這句是一個死循環(huán)!按照它的意思往下調(diào)試就沒有意義了。這就相當(dāng)于while(1);僅此而已。


評論


技術(shù)專區(qū)

關(guān)閉