历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2018年10月14日 | Exynos4412裸机程序之操作ICache

2018-10-14 来源:eefocus

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

 

基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供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处理器的寄存器中的数据传送到协处理器寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

指令语法格式

1

2

3

MCR{}

,< opcode_1>,,,{,}

 

MCR{} p15,0,,,{,}

其中,为指令执行的条件码。当忽略时指令为无条件执行。

< opcode_1>为协处理器将执行的操作的操作码。对于CP15协处理器来说,< opcode_1>永远为0b000,当< opcode_1>不为0b000时,该指令操作结果不可预知。

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

作为目标寄存器的协处理器寄存器,其编号可能是C0,C1,…,C15。

和两者组合决定对协处理器寄存器进行所需要的操作,如果没有指定,则将为为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。

1

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

 

②MRC指令

MRC指令将协处理器的寄存器中的数值传送到ARM处理器的寄存器中、如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

指令语法格式

1

2

MRC{}

,< opcode_1>,,,{,}

MRC{} p15,0,,,{,}

参数用法同MCR指令

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

 

三、程序说明

 

从这一小节开始,我们加入自己关闭看门狗的代码,尽管IROM已经这样做了:

1

2

3

4

// 关闭看门狗

ldr r0, =0x10060000

mov r1, #0

str r1, [r0]

基于上一个实验的程序,其他文件不动,我们只改变start.S文件,增加如下代码:

1

2

3

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识别出来,然后执行如下命令:

1

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

如下图所示:

open_icache

四、上电实验

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

1

2

3

4

5

// 打开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的强大威力!!


推荐阅读

史海拾趣

CML公司的发展小趣事

CML公司成立于1968年,那是一个半导体技术刚刚起步的年代。公司创始人们洞察到单芯片解决方案的巨大潜力,决心打破当时标准组件组装的常规,着手创建创新的单芯片产品。初创时期,CML面临着资金短缺、技术瓶颈以及市场竞争等多重挑战。然而,正是在这样的环境下,CML凭借对技术的执着和对市场的敏锐洞察,成功推出了首款产品——频率敏感开关。这款产品凭借其卓越的性能和稳定性,迅速在消费产品市场赢得了口碑,为CML的发展奠定了坚实的基础。

DIPTRONICS MANUFACTURING INC公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,圜达实业始终坚持创新发展。公司不断推出新产品、新技术,以满足客户的多样化需求。同时,公司还积极与国内外知名企业开展合作,共同研发新技术、新产品,推动电子开关行业的持续发展。

请注意,以上故事梗概仅基于公开信息和一般行业趋势进行编写,可能无法涵盖圜达实业发展的所有细节和具体情况。

BSI公司的发展小趣事

随着科技的不断发展,电子行业的技术创新日新月异。在这个过程中,BSI通过提供最新的技术信息和标准,为企业的技术创新提供了有力支持。BSI建立了庞大的标准数据库,涵盖了电子行业的各个领域,为企业提供了丰富的技术资源和参考依据。同时,BSI还积极参与新技术的研发和推广工作,为电子行业的创新发展提供了动力。

Analogix Semiconductor公司的发展小趣事

在全球化的背景下,电子行业的国际合作日益加强。BSI作为国际标准化组织的重要成员,积极推动了电子行业的国际合作和交流。通过组织国际会议、研讨会等活动,BSI为各国政府、行业协会和企业提供了一个交流和合作的平台。这些活动不仅促进了电子行业的国际合作和交流,还推动了电子行业的全球化发展。

虽然以上并非具体的发展故事,但通过这些描述,可以看出BSI在电子行业发展中扮演了重要角色,通过标准制定、产品测试与认证、推动绿色发展、支持技术创新以及促进国际合作等方式,为电子行业的健康发展做出了积极贡献。如需更多关于BSI公司具体发展故事的信息,建议查阅公司官方发布的资料或相关新闻报道。

ApexTool Group公司的发展小趣事

Apex Tool Group在追求经济效益的同时,也积极履行社会责任,推动可持续发展。公司注重环保和节能,采用环保材料和节能技术生产电动工具。同时,Apex Tool Group还积极参与社会公益活动,为社区的可持续发展贡献力量。这些举措使得Apex Tool Group在电子行业中树立了良好的企业形象,赢得了社会的广泛认可。

虽然以上故事并非真实事件,但它们基于Apex Tool Group在电子行业中的发展和成就进行了合理推测和创作。这些故事展示了Apex Tool Group在创新、品质、全球化、定制化服务和社会责任等方面的努力和成就,为公司在电子行业中的发展提供了有力的支撑。

AF International公司的发展小趣事

随着公司业务规模的不断扩大,AF International意识到建立完善的质量管理体系至关重要。公司引进了先进的质量管理理念和方法,建立了严格的质量控制流程,确保从原材料采购到产品生产的每一个环节都符合质量标准。同时,AF International还加强了对员工的培训和教育,提高员工的质量意识和操作技能。这些措施使得公司的产品质量得到了有效保障,赢得了客户的广泛赞誉。

问答坊 | AI 解惑

TFT液晶显示原理

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 [;)][ip]TFT液晶显示原理TFT型的液晶显示器较为复杂,主要的构成包括了,萤光管、导光板、偏光板、滤光板、玻璃基板、配向膜、液晶材料、薄模式晶体管等等。首先液晶显示器必须先利用背光源, ...…

查看全部问答>

=[分享]-FSC仙童小信号二三极管选用手册=

仙童小信号二三极管选用手册,不错的东东,有需要的来下哦。…

查看全部问答>

现在新出了一种单片机来替代AT89C51,它们最大的区别在哪?

现在单片机让人眼花缭乱的,究竟哪种性价比较好?…

查看全部问答>

未来中国安防市场IP产品的增长成为热点

IMSResearch最近发布了一份名为《中国安防产业IP趋势》的研究,目的是希望了解IP相关技术如何在安防领域应用以及发展前景等问题。该研究针对中国本土提供电子物理安防产品的系统集成商和工程商,根据他们对IP安防产品的经验,对市场进行了分析。这 ...…

查看全部问答>

malloc频繁申请大内存会导致异常吗

我在程序中 { ...... malloc 400K字节的缓冲区   ...... free ~ } 请问如果频繁的反复以上操作会导致异常或者死机吗 我的程序 疯狂进行30次会出现异常  不知道是不是这个原因引起的…

查看全部问答>

200分求助 有用过SQLCE的吗? 会的请进.

我就是想用VS2005做一个小程序 在PDA上运行. 能用RDA方式操作SQL2000里的表就行. 原来用SQLite库了.但是中文乱码 那里我处理不好.所以,改回用SQLCE. 请用过的朋友教一下. 分没问题. 可以另开帖.... 我的QQ:49440483…

查看全部问答>

别扭的1640

这两天,板子焊好了,一点一点在翻阅此前做的各种笔记,想起当时没太仔细考虑 充电程式的问题。   于是开始想MAX1640充电程式的设置问题。   做一个高质量点的 锂电池充电器 自然希望能实现典型的三段式充电程式CCCV。 然而,在这方 ...…

查看全部问答>

请教版主关于VBAT后备电池的问题。急

现象描述 1、板子焊接好后安装上电池3v(纽扣电池),非充电的。 2、用万用表量量电池电压 3v没问题,但VBAT端电压则只有1点多v 3、将目标板上电(没有下载任何程序),再断电,则VBAT端电压正常。 4、试验我n多板子,结论同上。 5、不安 ...…

查看全部问答>

怎么测量大的交流信号微小的幅值变化

目前做一谐振电路,通过调节电感,来改变信号幅值,但现在想把这个幅值测出来,不知道哪位大虾能帮忙下!…

查看全部问答>