莉凡网

流水灯汇编程序(流水灯汇编程序怎么写)

放牛AI工具

  就不对着数据手册说有寄存器了,主要说说 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,#0x0 str r1,[r0] ldr r0,=GPBCON ;设置GPB5为输出 mov r1,#0x400 str r1,[r0] ldr r0,=GPBDAT ;设置GPB5为低 点亮LED1 mov r1,#0 str r1,[r0] LOOP b LOOP END

  改成GNU汇编是这样的:

  ;/ ;*实验要求:创建启动代码汇编文件 ;*功能描述:初始化一些必须的寄存器 ;*日 期:2013-04-07 ;*作 者:kangear ;/ . equWTCON, 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,#0x0 str r1,[r0] ldr r0,=GPBCON @设置GPB5为输出 mov r1,#0x400 str r1,[r0] ldr r0,=GPBDAT @设置GPB5为低 点亮LED1 mov r1,#0 str r1,[r0] LOOP: b LOOP .end

  EQU变成的.equ; AREA变成了.text; ";"变成了"@"; 裸机都GNU了。东西不多,调试的出现的问题说一下,单步调试到最后一句会出现如下提示:

流水灯汇编程序(流水灯汇编程序怎么写)

  

  这个不是什么错误,eclipse在说:这句是一个死循环!按照它的意思往下调试就没有意义了。这就相当于while(1);仅此而已。

  原文链接:http://www.eeworld.com.cn/mcu/article_2016060626794.html

放牛AI工具

本文链接:https://www.hello-linux.com/bcwd/411.html

版权声明:本网站内容均来源于网络,如涉及侵权,请联系作者!

发表评论

还没有评论,快来说点什么吧~

联系客服
公众号
公众号
公众号
返回顶部