您的位置 首页 报告

Eclipse开发调试ARM裸机程序(二)LED_从ARM到GNU

就不对着数据手册说有寄存器了,主要说说ARM汇编和GNU汇编的区别,以前用RVDS2.2用的汇编程序都真ARM汇编。到用eclipse用的是编译u…

就不对着数据手册说有寄存器了,首要说说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汇编是这样的:

;/;*试验要求:创立发动代码汇编文件;*功用描绘:初始化一些有必要的寄存器;*日    期: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);仅此而已。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/265177.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部