我最近用到汇编语言编辑一些ARM的指令。找了些例子来看看,有几个地方不太懂:
ARM指令中,开头写了个RESET是什么意思?
有这么一个语句:
ldr lr,=halt_loop
ldr pc,=main
halt_loop:
b halt_loop
我理解是在中断程序完了以后返回执行lr的地址 也就是halt_loop.但是 b不是跳转吗?下面两句会不会成了一个死循环!!????
百思不解 求助
Reset:
ldr sp, =4096 @ 设置栈指针,以下都是C函数,调用前需要设好栈
bl disable_watch_dog @ 关闭WATCHDOG,否则CPU会不断重启
msr cpsr_c, #0xd2 @ 进入中断模式
ldr sp, =3072 @ 设置中断模式栈指针
msr cpsr_c, #0xdf @ 进入系统模式
ldr sp, =4096 @ 设置系统模式栈指针,
@ 其实复位之后,CPU就处于系统模式,
@ 前面的“ldr sp, =4096”完成同样的功能,此句可省略
bl init_led @ 初始化LED的GPIO管脚
bl init_irq @ 调用中断初始化函数,在init.c中
msr cpsr_c, #0x5f @ 设置I-bit=0,开IRQ中断
ldr lr, =halt_loop @ 设置返回地址
ldr pc, =main @ 调用main函数
halt_loop:
b halt_loop
源代码是这样的 多谢
ARM编程的一些问题
答案:2 悬赏:10 手机版
解决时间 2021-02-19 02:22
- 提问者网友:浪荡绅士
- 2021-02-18 15:58
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-02-18 17:37
这个意思就是执行完主函数后进行死循环,你贴的程序太短了 前后文不知道
ARM指令中是没有RESET的,你看看是不是个标号什么的。发一个关于RESET的代码上来吧,要不实在不理解
ARM指令中是没有RESET的,你看看是不是个标号什么的。发一个关于RESET的代码上来吧,要不实在不理解
全部回答
- 1楼网友:不如潦草
- 2021-02-18 18:32
一样,一般也就是编程习惯问题,特别是你那个fcon控制寄存器,<<0表示第0个引脚,<<1表示第1个引脚
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯