本文使用的开发板是九鼎创展的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;
相关推荐
程序开发中的重定位过程涉及到将代码从IROM移动到DRAM(动态随机存取存储器),以及如何控制指令缓存(icache)。这些都是裸机程序开发中的核心知识点,需要开发者仔细研究和实践。 此外,教程还覆盖了S5PV210...
通过分析和学习这些源码,我们可以深入理解ARM处理器的工作原理以及如何编写高效的ARM汇编代码或者C/C++代码来利用其特性。 首先,ARM架构有多种不同的模式,包括用户模式(User)、系统模式(System)、中断模式...
内核初始化阶段,从执行实模式汇编代码开始,紧接着调用`init/main.c`中的`start_kernel()`函数。此函数负责CPU子系统的初始化,内存管理与进程管理系统的配置,以及对外部总线和I/O设备的启动。最终,激活init进程...
第一阶段的汇编代码:start.S** 由于系统上电或复位后,硬件环境尚未准备就绪,因此Bootloader的第一阶段通常采用汇编语言编写。这部分代码负责完成最基础的硬件初始化工作,如设置CPU模式、禁用中断等,并为后续...
### U-Boot 源码解析之ARM920T启动过程 #### 一、概述 U-Boot(Universal Boot Loader)是一个支持多种处理器架构的开源Bootloader项目,广泛应用于嵌入式系统的启动加载过程中。本文将根据提供的文档《U-Boot源码...