zoukankan      html  css  js  c++  java
  • 核心初始化基本介绍

    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

  • 相关阅读:
    PE 合并节
    VirtualAddress与VirtualSize与SizeOfRawData与PointerToRawData的关系
    .net core publish 找不到视图
    c++ rc 文件内包含中文字符导致在unicod环境下编译乱码
    .net 5.0 ref文件夹的作用
    .net 5.0项目升级工具
    HttpWebRequest DNS缓存清理
    .net 5.0 发布命令总结
    关于dll not found 排查解决
    关于win7 无法识别sha256签名导致驱动无法安装的问题
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5765723.html
Copyright © 2011-2022 走看看