<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時(shí)間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          就不對(duì)著數(shù)據(jù)手冊(cè)說有寄存器了,主要說說ARM匯編和GNU匯編的區(qū)別,以前用RVDS2.2用的匯編程序都真ARM匯編。到用eclipse用的是編譯u-boot或者內(nèi)核的arm-linux-gcc,這次用的匯編要用GNU匯編,編譯時(shí)交給arm-linux-gcc來做剩下的工作。
          原來的一個(gè)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://www.ex-cimer.com/article/201611/318233.htm

          ;/;*實(shí)驗(yàn)要求:創(chuàng)建啟動(dò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)試到最后一句會(huì)出現(xiàn)如下提示:

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


          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();