iTop-4412 裸机程序(六)- 看门狗和 iCache

本文介绍了Exynos4412处理器中的看门狗和iCache的概念及操作。看门狗在程序异常时用于复位CPU,而iCache作为指令缓存提升CPU执行速度。通过控制CP15寄存器的位来开关iCache,实验发现开启iCache会加快程序执行。默认情况下,BL0已经启用了iCache。
摘要由CSDN通过智能技术生成


源码

GitHub:https://github.com/Kilento/4412NoOS

看门狗

用过单片机的人应该比较熟悉看门狗了,这是在程序异常时自动复位CPU的一个寄存器。在 Exynos 4412 同样有这样一个看门狗。查看数据手册可以得知它的地址:
在这里插入图片描述从前面的博文 Exynos4412 启动分析中我们知道在启动过程中一般首先要关闭看门狗。我们在不知道看门狗模式是否关闭的情况下,需要显示地关闭看门狗。关闭的汇编代码比较简单

#define WATCHDOG		  0x10060000

ldr r0, =WATCHDOG
ldr r1, =0x0
str r1, [r0]

iCache

我们知道 CPU 执行程序首先要从内存(DDR)中加载指令,而 CPU 的速度一般远远要快于 DDR,这回导致程序执行速度受限于 DDR。所以引入了 Cache的概念,Cache由SRAM 制作。有了 Cache 之后我们就可以提前将数据或者指令提前放到 Cache 之中。就可以大大提高 CPU 处理的速度。

开关 Cache 需要控制协处理器 CP15,这里我不对 CP15 作详细介绍,具体可以阅读参考资料[1]

控制 Cache 使用 CP15的寄存器
在这里插入图片描述Bit12 则控制 iCache 的使能与否
在这里插入图片描述
iCache 是指令缓存,相应的还有 dCache 数据缓存。我们这边尝试关闭或打开 iCache,查看实验现象。

/* 打开或者关闭 iCache */
mrc p15, 0, r0, c1, c0, 0  /* 将 CP15 寄存器 C1 的值读到 r0 中 */
//bic r0, r0, #(1<<12)	   /* bit12 置0 关闭 iCache */
orr r0, r0, #(1<<12)	   /* bit12 置1 开启 iCache */
mcr p15, 0, r0, c1, c0, 0  /* 将 r0 的值写到 CP15 寄存器 C1 中 */

查看现象发现,打开 iCache 比 关闭 iCache 情况下灯的闪烁要稍快一些。上述代码不执行时,灯的闪烁和打开 iCache 相同,可知默认情况下 BL0 已经打开了 iCache。

参考资料

[1]ARM协处理器CP15寄存器详解

2021年8月29日

Kilento

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值