关闭中断

Posted 三石居士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关闭中断相关的知识,希望对你有一定的参考价值。

看芯片官方手册

找到中断这一章节

里面有详细的如何屏蔽中断

下面给出210的代码

.text
.global _start
_start:
    b reset
    ldr pc, _undefined_instruction
    ldr pc, _software_interrupt
    ldr pc, _prefetch_abort
    ldr pc, _data_abort
    ldr pc, _not_used
    ldr pc, _irq
    ldr pc, _fiq

_undefined_instruction: .word undefined_instruction
_software_interrupt:.word software_interrupt
_prefetch_abort:.word prefetch_abort
_data_abort:.word data_abort
_not_used:.word not_used
_irq:.word irq
_fiq:.word fiq

undefined_instruction:
    nop
    
software_interrupt:
    nop

prefetch_abort:
    nop
    
data_abort:
    nop
    
not_used:
    nop
    
irq:
    nop
    
fiq:
    nop

reset:
    bl set_svc
    bl disable_watchdog    
    bl diasble_interrupt
    
set_svc:
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0xd3
    msr cpsr, r0

#define pwTCON 0x53000000
disable_watchdog:
    ldr r0, =pwTCON
    mov r1, #0x0
    str r1, [r0]

disable_interrupt
    mvn r1, #0x0
    ldr r0, =0xf2000014
    str r1, [r0]

    ldr r0, =0xf2100014
    str r1, [r0]    

    ldr r0, =0xf2200014
    str r1, [r0]    

    ldr r0, =0xf2300014
    str r1, [r0]

2440

.text
.global _start
_start:
    b reset
    ldr pc, _undefined_instruction
    ldr pc, _software_interrupt
    ldr pc, _prefetch_abort
    ldr pc, _data_abort
    ldr pc, _not_used
    ldr pc, _irq
    ldr pc, _fiq

_undefined_instruction: .word undefined_instruction
_software_interrupt:.word software_interrupt
_prefetch_abort:.word prefetch_abort
_data_abort:.word data_abort
_not_used:.word not_used
_irq:.word irq
_fiq:.word fiq

undefined_instruction:
    nop
    
software_interrupt:
    nop

prefetch_abort:
    nop
    
data_abort:
    nop
    
not_used:
    nop
    
irq:
    nop
    
fiq:
    nop

reset:
    bl set_svc
    bl disable_watchdog    
    bl diasble_interrupt
    
set_svc:
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0xd3
    msr cpsr, r0

#define pwTCON 0x53000000
disable_watchdog:
    ldr r0, =pwTCON
    mov r1, #0x0
    str r1, [r0]

disable_interrupt
    mvn r1, #0x0
    ldr r0, =0x4a000008
    str r1,[r0]    

6410

.text
.global _start
_start:
    b reset
    ldr pc, _undefined_instruction
    ldr pc, _software_interrupt
    ldr pc, _prefetch_abort
    ldr pc, _data_abort
    ldr pc, _not_used
    ldr pc, _irq
    ldr pc, _fiq

_undefined_instruction: .word undefined_instruction
_software_interrupt:.word software_interrupt
_prefetch_abort:.word prefetch_abort
_data_abort:.word data_abort
_not_used:.word not_used
_irq:.word irq
_fiq:.word fiq

undefined_instruction:
    nop
    
software_interrupt:
    nop

prefetch_abort:
    nop
    
data_abort:
    nop
    
not_used:
    nop
    
irq:
    nop
    
fiq:
    nop

reset:
    bl set_svc
    bl disable_watchdog    
    bl diasble_interrupt
    
set_svc:
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0xd3
    msr cpsr, r0

#define pwTCON 0x53000000
disable_watchdog:
    ldr r0, =pwTCON
    mov r1, #0x0
    str r1, [r0]

disable_interrupt
    mvn r1, #0x0
    ldr r0, =0x71200014
    str r1, [r0]
    ldr r0, =0x71300014
    str r1, [r0]    

 

三者主要的不同就在屏蔽中断的代码不一样,2440只有一个寄存器管理中断的清除,6410有两个寄存器管理中断的清除,210有4个寄存器管理中断的清除。

以上是关于关闭中断的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法关闭代码片段中的命名建议?

为啥“继续”和“中断”会给出相同的结果? [关闭]

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

解决方案电影标题中缺少代码的片段,完成挑战更多[关闭]

我该如何做模态对话框片段(代码在我关闭之前不会执行)

为 Blogger 上的博客格式化代码片段 [关闭]