打印

请教如何禁止、启动IRQ FIQ?

[复制链接]
3827|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2010-5-27 21:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
TE, ST, se, AI, AC
本帖最后由 xlsbz 于 2010-5-27 22:09 编辑

弄的是AT91SAM7A3的。没有操作系统。
下面是启动代码关于设置模式的结尾部分

// Enter Supervisor Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_SVC|I_Bit|F_Bit
                MOV     SP, R0
                SUB     R0, R0, #SVC_Stack_Size

// Enter User Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_USR   //启动IRQ FIQ
                MOV     SP, R0
// Enter the C code
                LDR     R0,=?C?INIT
                TST     R0,#1       ; Bit-0 set: main is Thumb
                LDREQ   LR,=exit?A  ; ARM Mode
                LDRNE   LR,=exit?T  ; Thumb Mode
                BX      R0
                ENDP

然后进入main函数


void main (void)
{
//打算在这里禁止IRQ FIQ


//打算在这里初始化串口啊之类的

//打算在这里开启IRQ  FIQ

      while (1){
            代码
      }

}


我们知道  最主要是 要修改CPSR寄存器。并且一定要从特权模式修改。

请问大家关于模式转换有什么好的建议么?
====================================================
====================================================
比如说弄成这样行不行?(我对Supervisor不怎么了解)
// Enter Supervisor Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_SVC  //禁止IRQ FIQ
                MOV     SP, R0

// Enter the C code
                LDR     R0,=?C?INIT
                TST     R0,#1       ; Bit-0 set: main is Thumb
                LDREQ   LR,=exit?A  ; ARM Mode
                LDRNE   LR,=exit?T  ; Thumb Mode
                BX      R0
                ENDP
然后进入main函数

void main (void)
{
//设置为Supervisor并禁止IRQ FIQ

//打算在这里初始化串口啊之类的
//设置为user模式并开启IRQ  FIQ
      while (1){
            代码
      }
}
==========================================================================

大家都是怎么弄的?
多谢!!!

相关帖子

沙发
xlsbz|  楼主 | 2010-5-27 21:40 | 只看该作者
在特权模式下 改 CSPR,ARM手册给了个例子


然后 ARM手册又说if the ARM PROCESSOR starts in user mode,only the flag update has any effect。

使用特权

评论回复
板凳
tangwei039| | 2010-5-28 13:55 | 只看该作者
软件中断就行。看看周力功

使用特权

评论回复
地板
xlsbz|  楼主 | 2010-5-29 00:00 | 只看该作者
3# tangwei039

多谢楼上 ,

我一直在系统模式和超级用户模式徘徊

看样子还是用超级用户模式  我下载的最新的官方程序最后的模式就是超级用户模式

而超级用户模式几乎就是SWI的代名词

恩 很好 多谢!

看样子我还得多看看

本来以为自己比较懂这方面了

看来差得远啊

哈哈

使用特权

评论回复
5
xlsbz|  楼主 | 2010-5-31 19:11 | 只看该作者
弄了两天得出结论 :我比较菜!  等以后再说吧

C中嵌入汇编

不断改汇编 结果不断进入各种进去  abort Pabort Dabort undef

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝