新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Eclipse開發調試ARM裸機程序(二)LED_從ARM到GNU

        Eclipse開發調試ARM裸機程序(二)LED_從ARM到GNU

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

        改成GNU匯編是這樣的:

        本文引用地址:http://www.104case.com/article/201611/318233.htm

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

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

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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宁河县| 丹东市| 芜湖市| 改则县| 昭觉县| 玉环县| 阳东县| 永善县| 海淀区| 故城县| 永定县| 南开区| 客服| 固原市| 志丹县| 冕宁县| 丰城市| 平遥县| 宣威市| 会同县| 三门峡市| 正安县| 淮南市| 称多县| 博爱县| 哈密市| 惠安县| 伽师县| 鄱阳县| 和平县| 张家川| 金寨县| 纳雍县| 墨玉县| 阜城县| 宁晋县| 衡东县| 青州市| 洪湖市| 石棉县| 富蕴县|