一、什么是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。
二、程序说明
完整代码见目录4_leds_c_icache。相比代码3_led_c_sp,代码4_leds_c_icache与其的唯一区别在于在start.S中增加了控制icache的代码。
相关代码如下:
mrc p15, 0, r0, c1, c0, 0
#ifdef CONFIG_SYS_ICACHE_OFF
bic r0, r0, #0x00001000 @ clear bit 12 (I) I-cache
#else
orr r0, r0, #0x00001000 @ set bit 12 (I) I-cache
#endif
mcr p15, 0, r0, c1, c0, 0
如果没有定义CONFIG_SYS_ICACHE_OFF则打开icache,否则关闭icache。至于协处理器的相关指令,可查阅ARM公司的相关手册,或者相关芯片手册或者《arm体系结构与编程》一书等。
三、完整的烧写过程
已将SD卡插入电脑,假设Linux识别了SD卡,其识别号为sdb。执行下面命令:
# chmod 777 –R 4_leds_c_icache
# cd 4_leds_c_icache
# make
# cd sd_fuse
# make
# ./ fast_fuse /dev/sdb
四、上电实验
将sd卡插入Tiny4412中,选择sd卡启动,然后上电,可以看到以下现象:
LED正常闪烁,只是闪烁得非常慢,这是因为代码里的延时时间相比以前被增大了10倍。我们知道IROM的固化代码已经帮我们启动了icache,如果要体验icache 的威力,只需通过定义宏CONFIG_SYS_ICACHE_OFF来关闭icache。经测试,当关闭icache时,LED闪烁一次的时间大约需要45秒,而打开icache时,LED闪烁一次则需要35秒左右,可见打开icache节省了10S左右的时间。
上一篇:tiny4412 裸机程序 三、关闭看门狗和调用C程序
下一篇:Tiny4412 开发板 编译环境搭建【转】
推荐阅读最新更新时间:2024-11-09 12:15
推荐帖子
- 一条疑惑的ARM 汇编语句
- 这条ARM汇编语句什么意思?movr4,%0上下文如下:__asm__(/*Loadpagetablepointer*/movr4,%0\\nmcrp15,0,r4,c2,c0,0\\n/*loadpagetablepointer*//*Writedomainid(cp15_r3)*/mvnr0,#0\\n/*Domain
- wx8028 ARM技术
- 哪位大神有STM8S00的库函数么,感激不尽感激不尽
- 找了好久都找不到8s的库函数,只能找到8L的,都不知道能不能用,好虐心哪位大神有STM8S00的库函数么,感激不尽感激不尽ST的官网有相关的固件库的,所以你按照如下的截图中的红色方框中的标识,作为关键字在官网搜索。然后下载。。。。。。。。。。。。。。。。。用寄存器吧~~~~~
- 文涛 stm32/stm8
- 请问一下各位,2.8寸320X240的TFT最便宜的多少钱一片
- 请问一下各位,2.8寸320X240的TFT最便宜的多少钱一片,谢谢!!请问一下各位,2.8寸320X240的TFT最便宜的多少钱一片不到100元,80元左右65元左右吧,看多少量了量多价格肯定会低点http://item.taobao.com/auction/i...f51f15f68cd8075.htm 这个好http://it
- zhou.63624 stm32/stm8
- MSP430的看门狗常见用法以及中断函数的书写方法
- 看了一下MSP430的看门狗的基本用法看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器,因此可以把他当作定时器来使用示例代码:用看门狗定时器使一个led闪烁#includemsp430x14x.hvoidmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDT_MDLY_32;//宏定义IE1|=WDTIE;//允许看门狗定时器中断P2DIR|=BI
- fish001 微控制器 MCU
- 干货分享 | 激光技术基础你知多少?
- 什么是激光?LASER是由LightAmplificationbyStimulatedEmissionofRadiation(光受激辐射放大)的各首字母组成的缩写词。Laser为人工光源,具有与自然光不同的特性,因此开发成实用技术被广泛应用于各种领域。激光的用途激光可直线传播到很远,并且可聚集在较小范围等,人们活用这些特性,广泛应用激光。激光市场不断扩大,正在帮助制造
- ohahaha RF/无线
- Direct polar modulation has the right stuff
- Drivenbytheneedforimprovedefficiencyandsupportformultiplecomplexstandards,polarmodulationsolutionsforcellularradiosareemergingasthedefactostandardmodulationtechniqueintheGSM/Edgemarket.Polartechniquesprovidesuperio
- fly RF/无线
设计资源 培训 开发板 精华推荐
- 中国面板设备需求旺盛,盟立借此纯利润年增207%!
- 苹果承认iPhone X存在屏幕触控问题,用户提出可免费更换
- 看我72变,倪飞盛赞努比亚X化身各大手机品牌
- 大兴区2018年年底前将建成8KM自动驾驶测试道路
- 都是第一?荣耀与小米都说自己是双十一手机冠军
- Silicon Labs获PSA Certified和ioXt 联盟关键性安全认可
- 什么是示波器的触发模式?在实际中该如何选择和使用呢?
- A FLASH Bootloader for PIC16 and PIC18 Devices--硬译(一)
- PIC18F66K80 Bootloader程序
- PIC24 通过USB在线升级 -- USB HID bootloader