• 核心初始化基本介绍


    1.核心初始化主要工作

    2.设置中断向量表

     arm处理器支持7种类型的异常,如下表:

    异常向量:当一种异常发生的时候,ARM处理器会跳转到对应该异常的固定地址去执行异常处理程序,而这个固定的地址,就称之为异常向量。

    异常向量表:由七个异常向量及其处理函数跳转关系组成的表即为异常向量表。

    3.设置svc模式

     通过设置程序状态寄存器Current Program Status Register (CPSR) ,来设置模式。

     

    步骤:先利用mrs将cpsr的值保持到通用寄存器中,清零相应5位(bic),置1(orr);再利用msr将通用寄存器的值存回cpsr寄存器中。

    4.关闭看门狗

     Watchdog在硬件上实现了计时功能,启动计时后,用户(软件)必须在计时结束前重新开始计时,俗称“喂狗”,如果到超时的时候还没有重新开始计时,那么它就认为系统是死机了,就自动重启系统。
    通过设置WATCHDOG TIMER CONTROL (WTCON) REGISTER寄存器,来关闭看门狗。

    5.关闭中断

    步骤:

    1.CPSR寄存器的I,F位均设置为1(在设置svc模式可以设置)

    2.设置中断屏蔽寄存器

     6.关闭mmu与cach

    6.1 arm存储体系

    6.2 cache

    Cache是一种容量小但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝。对于程序员来说,Cache是透明的。它自动决定保存哪些数据、覆盖哪些数据。按照功能划分:
    I-Cache: 指令Cache,用于存放指令

    D-Cache: 数据Cache,用于存放数据

    6.3 虚拟地址

    虚拟地址:程序中使用的地址。
    物理地址:物理存储单元实际的地址

    使用虚拟地址的作用:

    可以让进程使用更大的空间(若物理地址为64MB,只能为64MB,访问较小,但当引入虚拟地址后,虚拟地址的空间一般为4G);
    可以解决地址冲突(多个应用程序访问同一个物理地址)。

    6.4 设置方法

    1. 设置Cache operations让cache无效 

    2. 根据arm11核的手册,设置Control Register 关闭I/D cache,mmu

    代码:http://www.cnblogs.com/boyiliushui/p/5766171.html

  • 相关阅读:
    面试-Hash是怎么实现的?
    教程-在Delphi中怎么查看是否有内存泄漏(Delphi2007)+WIN7
    面试-SizeOf一个对象会得到什么?
    Unity-Animator深入系列---录制与回放
    Animation.Sample用法介绍
    Unity-Animator深入系列---StateMachineBehaviour状态机脚本学习
    Unity-Animator深入系列---deltaPosition&deltaRotation
    Unity-Animato深入系列---FloatValue阻尼
    Animation在每一帧中的执行顺序测试
    Unity脚本在层级面板中的执行顺序测试2
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5765723.html
Copyright © 2020-2023  润新知