`
jsntghf
  • 浏览: 2541582 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

汇编写启动代码之开iCache

阅读更多

本文使用的开发板是九鼎创展的X210 iNand版本。

 

一、iROM中BL0对cache的操作

 

(1)iCache的一切动作都是自动的,不需要人为干预,我们所需要做的仅仅是打开或者关闭iCache。

(2)X210的iROM中BL0默认已经打开了iCache。

 

二、查阅ARM手册中CP15寄存器的相关部分

 

ARM处理器中CP15协处理器的寄存器,如下图所示:

 

由上图可知,CP15包括了16个寄存器,其中C1寄存器是控制寄存器,主要用于:

(1)禁止/使能MMU以及其它与存储系统有关的功能

(2)配置存储系统以及ARM处理器相关的工作

 

C1寄存器的位定义,如下图所示:

 

由上图可知,bit12用于开关iCache,其中0代表关闭iCache,1代表开启iCache。

 

三、代码实现

 

(1)开启iCache

 

mrc p15,0,r0,c1,c0,0;			
orr r0, r0, #(1<<12)	// bit12置1
mcr p15,0,r0,c1,c0,0;

 

(2)关闭iCache

 

mrc p15,0,r0,c1,c0,0;			
bic r0, r0, #(1<<12)	// bit12置0
mcr p15,0,r0,c1,c0,0;

 

分享到:
评论

相关推荐

    Linux平台下Mini210S裸机程序开发指南.pdf

    程序开发中的重定位过程涉及到将代码从IROM移动到DRAM(动态随机存取存储器),以及如何控制指令缓存(icache)。这些都是裸机程序开发中的核心知识点,需要开发者仔细研究和实践。 此外,教程还覆盖了S5PV210...

    ARM例程源码

    通过分析和学习这些源码,我们可以深入理解ARM处理器的工作原理以及如何编写高效的ARM汇编代码或者C/C++代码来利用其特性。 首先,ARM架构有多种不同的模式,包括用户模式(User)、系统模式(System)、中断模式...

    精通Linux设备驱动程序开发第2章-内核一瞥.pdf

    内核初始化阶段,从执行实模式汇编代码开始,紧接着调用`init/main.c`中的`start_kernel()`函数。此函数负责CPU子系统的初始化,内存管理与进程管理系统的配置,以及对外部总线和I/O设备的启动。最终,激活init进程...

    编写2440bootload

    第一阶段的汇编代码:start.S** 由于系统上电或复位后,硬件环境尚未准备就绪,因此Bootloader的第一阶段通常采用汇编语言编写。这部分代码负责完成最基础的硬件初始化工作,如设置CPU模式、禁用中断等,并为后续...

    Uboot源码阅读笔记.pdf

    ### U-Boot 源码解析之ARM920T启动过程 #### 一、概述 U-Boot(Universal Boot Loader)是一个支持多种处理器架构的开源Bootloader项目,广泛应用于嵌入式系统的启动加载过程中。本文将根据提供的文档《U-Boot源码...

Global site tag (gtag.js) - Google Analytics