亲爱的朋友,你好,欢迎来到何平网络科技&织梦之家,你可以免费观看大量视频教程以及大量模板下载!

Tiny4412裸织梦网站仿制机措施之操纵ICache-织梦之家(dedehome.com)

时间:2019-01-20 18:00 来源:织梦之家作者:织梦之家 点击:
一、首先普及一下什么是Cache

一、首先普及一下什么是Cache

基于措施会见的范围性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,织梦CMS,把正在执行的指令地点附件的一部门指令或数据从主存调入这类存储器,供CPU在一段时间内利用,这对提高措施的运行速度有很大的浸染。这类介于主存和CPU之间的高速小容量存储器称作高速cache较量常见的cache包罗icache和dcache

icache的利用较量简朴,系统刚上电时,icache中的内容是无效的,而且icache的成果是封锁的,往CP15协处理惩罚器中的寄存器1的bit[12]写1可以启动icache,写0可以遏制icache。icache封锁时,CPU每次取指都要读主存,机能很是低。因为icache可随时启动,越早开icache越好。与icache相似,系统刚上电时, dcache中的内容是无效的,而且dcache的成果是封锁的,往CP15协处理惩罚器中的寄存器1的bit[2]写1可以启动dcache,写0可以遏制dcache。因为 dcache必需在启动mmu后才气被启动,而对付裸机而言,没须要开mmu,所以本教程的措施将不会启动dcache。

二、再先容一下ARM协处理惩罚器CP15及MCR和MRC指令

在基于ARM的嵌入式应用系统中,存储系统凡是是通过系统节制协处理惩罚器CP15完成的。CP15包括16个32位的寄存器,其编号为0~15。

会见CP15寄存器的指令

MCR ARM寄存器到协处理惩罚器寄存器的数据传送

MRC 协处理惩罚器寄存器到ARM寄存器的数据传送

MCR指令和MRC指令只能在处理惩罚器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未界说指令的异常间断。

①MCR指令

MCR指令将ARM处理惩罚器的寄存器中的数据传送到协处理惩罚器寄存器中。假如协处理惩罚器不能乐成地执行该操纵,将发生未界说的指令异常间断。

指令语法名目

MCR{<cond>} <p>,< opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>} MCR{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}

个中,<cond>为指令执行的条件码。当<cond>忽略时指令为无条件执行。

< opcode_1>为协处理惩罚器将执行的操纵的操纵码。对付CP15协处理惩罚器来说,< opcode_1>永远为0b000,当< opcode_1>不为0b000时,该指令操纵功效不行预知。

<Rd>作为源寄存器的ARM寄存器,其值将被传送到协处理惩罚器寄存器中。

<CRn>作为方针寄存器的协处理惩罚器寄存器,其编号大概是C0,C1,…,C15。

<CRm>和<opcode_2>两者组合抉择对协处理惩罚器寄存器举办所需要的操纵,假如没有指定,则将为<CRm>为C0,织梦模板,opcode_2为0,不然大概导致不行预知的功效。

The CRm field and opcode_2 field are used to specify a particular action when addressing registers.The opcode_1, opcode_2 and CRm fields should be zero, except when the values specified are used to select the desired operations, in all instructions which access CP15. Using other values will result in unpredictable behavior. Attempting to read from a non-readable register, or writing to a non-writable register will cause unpredictable results.

利用示例

下面的指令从ARM寄存器R4中中将数据传送到协处理惩罚器CP15的寄存器C1中。个中R4为ARM寄存器,存放源操纵数,C1、C0为协处理惩罚器寄存器,为方针寄存器,opcode_1为0,opcode_2为0。

MCR p15, 0, R4, C1, C0, 0

②MRC指令

MRC指令将协处理惩罚器的寄存器中的数值传送到ARM处理惩罚器的寄存器中、假如协处理惩罚器不能乐成地执行该操纵,将发生未界说的指令异常间断。

指令语法名目

MRC{<cond>} <p>,< opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>} MRC{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}

参数用法同MCR指令

先先容到这里,等着开一篇文章专门先容CP15协处理惩罚器的寄存器

三、措施说明

从这一小节开始,我们插手本身封锁看门狗的代码,尽量IROM已经这样做了:

// 封锁看门狗 ldr r0, =0x10060000 mov r1, #0 str r1, [r0]

基于上一个尝试的措施,其他文件不动,我们只改变start.S文件,增加如下代码:

mrc p15, 0, r0, c1, c0, 0 orr r0, r0, #0x00001000 mcr p15, 0, r0, c1, c0, 0

这样就打开了ICache

四、措施编译及烧写

1.编译

通过FTP可能其他东西将文件上传随处事器上去,输入make呼吁举办编译将获得open_ichche.bin文件。

2.烧写

将SD卡插入电脑,并让VmWare里的Ubuntu识别出来,然后执行如下呼吁:

sudo ./sd_fusing.sh /dev/sdb ../7_open_icache/open_icache.bin

如下图所示:

open_icache

四、上电尝试

你会发明LED闪动的频率和上一个尝试完全沟通,为什么呢?因为IROM的固化代码已经帮我们启动了icache,假如我们要想体验icache 的威力,只需修改start.S文件为以下即可:

// 打开icache可提高运行速度 mrc p15, 0, r0, c1, c0, 0 //orr r0, r0, #0x00001000 //打开ICache bic r0, r0, #0x00001000 //封锁ICache mcr p15, 0, r0, c1, c0, 0

然后从头编译、烧写、上电运行,你会发明LED的闪动频率慢了许多许多,由此就可以看到ICache的强大威力!!

完整的措施下载地点(解压暗码:):

感谢支持织梦之家,你的支持,我们的无限动力!!!
    “DEDECMS教程”欢迎分享!:

    相关标签:Tiny4412裸机程序(3)Tiny4412 ICa(1)

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%

    欢迎您报错,或提出宝贵建议,我们将第一时间处理,为大家营造一个良好网上交流平台,感谢支持织梦之家!