zoukankan      html  css  js  c++  java
  • 关闭看门狗

    看门狗的作用:在嵌入式领域,有些需要长期运营在无人看守的环境。在运营过程中,难免不出现系统死机的情况,这时就需要系统自身带有一

    种自动重启的功能。Watchdog一般是一个硬件模块,其作用就是在系统死机的时候,帮助系统实现自动重启。

    看门狗的工作方式:Watchdog在硬件上实现了计时功能,启动计时后,用户(软件)必须在计时结束前重新开始计时,俗称喂狗,如果到超过

    的时候还没有重新开始计时,那么他就认为是系统死机了,就自动重启系统。

     1 .text
     2 .global _start
     3 _start:
     4     b reset
     5     ldr pc, _undefined_instruction
     6     ldr pc, _software_interrupt
     7     ldr pc, _prefetch_abort
     8     ldr pc, _data_abort
     9     ldr pc, _not_used
    10     ldr pc, _irq
    11     ldr pc, _fiq
    12 
    13 _undefined_instruction: .word undefined_instruction
    14 _software_interrupt:.word software_interrupt
    15 _prefetch_abort:.word prefetch_abort
    16 _data_abort:.word data_abort
    17 _not_used:.word not_used
    18 _irq:.word irq
    19 _fiq:.word fiq
    20 
    21 undefined_instruction:
    22     nop
    23     
    24 software_interrupt:
    25     nop
    26 
    27 prefetch_abort:
    28     nop
    29     
    30 data_abort:
    31     nop
    32     
    33 not_used:
    34     nop
    35     
    36 irq:
    37     nop
    38     
    39 fiq:
    40     nop
    41 
    42 reset:
    43     bl set_svc
    44     bl disable_watchdog    
    45 
    46 set_svc:
    47     mrs r0, cpsr
    48     bic r0, r0, #0x1f
    49     orr r0, r0, #0xd3
    50     msr cpsr, r0
    51 
    52 #define pwTCON 0x53000000
    53 disable_watchdog:
    54     ldr r0, =pwTCON
    55     mov r1, #0x0
    56     str r1, [r0]

    黄色部分就是关闭看门狗

    LDR伪指令的形式是“LDR Rn,=expr”。作用是装在一个32bit常数和一个地址到寄存器。

    MOV  R0, #0x0是将立即数0放到R0中。

    STR   R1, [R0]  是一个典型的存储指令,将R1中的值放到以R0中的值为地址的存储单元去。

    可见这三条指令是对pwTCON变量进行赋值

    这set_svc和disable_watchdog之后,就需要加上 mov  pc  lr,这是把之前跳转的lr保存的pc地址给返回给pc。 

    到这里就介绍完毕,但是有必要说一下Arm中的ldr指令:

    比如想把数据从内存中某处读取到寄存器中,只能使用ldr
    比如:
    ldr r0, 0x12345678 ;就是把0x12345678这个地址中的值存放到r0中。

    而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中。

    MOV是从一个寄存器或者移位的寄存器或者立即数的值传递到另外一个寄存器。
    从本质上是寄存器到寄存器的传递,为什么会有立即数,其实也是有限制的立即数,不是所有立即数都可以传递的
    这个立即数要符合一个8位数循环右移偶数位的取值。

  • 相关阅读:
    表单小知识
    HTML列表,表格与媒体元素
    P1008 三连击
    打鱼晒网问题
    最小编辑距离算法
    算法设计与分析--01背包问题(动态规划法解决)
    文件读写函数
    C语言中数据输入输出到文件操作freopen()函数(1)
    输入输出框架(未完待续)
    阶乘1到阶乘n的和
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/8335277.html
Copyright © 2011-2022 走看看