Eclipse開發(fā)調(diào)試ARM裸機(jī)程序(二)LED_從ARM到GNU
原來的一個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);僅此而已。
評論