诡计的英文译语怎么说-健身私教学校
2023年4月3日发(作者:苏州安伐檀原文 全教育平台)
NIOSIIfDataCacheandTightly-CoupledMemory
这个问题困扰了我n久n久了(2沥尽心血的拼音 天)...
上篇博⽂中我提出了问题,对于
#defineLED_DATA*(volatileunsignedchar*)LED_PIO_BASE
直接操作没有效果,但后⾯加⼀句printf()后可执⾏,⼀直想不通这个问题,现在终于解决了…
最后在⽛缝哥哥的“不情愿”的教导下,⼜baidugoogle了⼀下,加上⼿册和书,我终于悟出来了。。。。。
下⾯我图⽂并茂,handbook+ZLG_BOOK+BMP+txt来解决问题
在SOPC创建CPU的时候,nios/e、nios/s、nios/f有个地⽅有所不同:
下⾯是nios/e、nios/s的,
DataCache被屏蔽了,不存在DataCache(数据缓存)的问题
下⾯是nios/f的(可以在这⾥把它关掉,防⽌后⾯的⼀系列问题)
nios/f为CPU开辟了2KB的32字节的DateCache(数据缓存),问题就出在这⾥
DataCache数据缓存相当于电脑的⼀级缓存,⼆级缓存,是为了提⾼系统速度,因为这样就可以⼀直发送数据,⼀直接收数据了。
根据NiosIIProcessorHandbook上关于Cac观月记翻译 heandTightly-CoupledMemory的解说:
可见,ldio/stio类指令明确指明了第31位地址对旁路数据缓存提供了⼀个可选的⽅法
如果第31为地址被拉⾼-1-:数据缓存区被旁路
如果第31为地址被拉低-0-:数据缓存区被打开
因此在nios/f中⼜可以通过软件的⽅法吧DataCache关掉
第31位地址只能在处理器内部使⽤,所以最⼤的地址空间只有31位,及2G寻址空间
后⾯⼜说到,对于nios/e、nios/s也是31位及2G寻址空间,这田园风光诗词大全100首 样便于不同等级的NIOSII核之间的代码移植
下⾯摘录ZLG的《SOPC嵌⼊式系统基础教程》P68、P69中的⼏句话:
“NIOSII结构的指令主端⼝和数据主端⼝都⽀持⾼速缓存
⾼速缓存使⽤⽚内存储器
nios/f中指令和数据⾼速缓存在运⾏时移植使能,但可以使⽤软件⽅法来旁路数据⾼速缓存
NIOSII处理器出城部分的⾼速缓存在SOPCBulider中式可选的,取江山如画的意思 决于⽤户对系统欧冠存储性能的要求
NIOSII处理器数据指令缓存可有可⽆
NIOSII⾼速缓存改善⼼梗的功效基础
(1)常规存储器位于⽚外,⽅为时间>⽚内存储器
(2)循环执⾏的、最⼤的、关键性能的指令序列长度⼩于指令⾼速缓存
(3)关键性能数据的最⼤规模⼩于数据⾼速缓存
NIOSII⾼速缓存缺点
(1)只有⽚内存储器时,⾼速缓存没优势
(2)程序循环2KB,⾼速缓存1KB,没作⽤(上述(3))
(3)使得程序执⾏时间不可预测
NIOSII处理器内核⽀持⼀种称作31为⾼速缓存旁路的机制,根据最⾼有效位的值来旁路⾼速缓存
NIOSII内核地址都限制在31为,及2G地址空间
”
⾄此,我恍然⼤悟,记得当年我的另外⼀块开发板因为画的是在太戳了,nios/f跑步起来,所以⼀直⽤的是nios/e、nios/s,我⼀直这样写
以前这样写从没出现过问题是因为nios/e,nios/s不存在数据缓存区,Bit31⽆效
但nios/f存在数据缓存区,Bit31有效,所以如果要直接通过地址映射操作,必须把最⾼位屏蔽掉
#defineLED_DATA*(volatileunsignedint*)(LED_PIO_BASE|(1<<31))//把Bit31拉⾼
这样就能操作了
⽽上述我在LED_DATA=1;后⾯加了⼀句printf()就可以了原因,
因为把给LED_DATA发出的数据放在了数据缓存范成大的代表作 区,没有及时处理,
个⼈觉得printf是电脑在执⾏操作,这个同事刚好FPGACPU空闲,所以缓存区释放,IO有效(如果有不到之处,看到的⼈请提出,谢谢)
下⾯放映⼀下我Master的SPI寄存器映射⽅法
在nios/f中要寄存器映射都必须bypasscache,否则会出错,这个要铭记了。。。
。。。。。。。。。
#defineLED_DATA*(volatileunsignedint*)(LED_PIO_BASE|(1<<31))
intmain()
{
unsignedchartable[]={0x00,0x01,0x02,0x03};
unsignedchari;
printf(\"\");
printf(\"我要吐⾎了。。。n\");
while(1)
{
for(i=0;i<4;i++)
{
LED_DATA=table[i];
Delay_Ms(500);
}
}
return0;
}
但是Cache存在缺陷,就是不能及时处理数据,执⾏代码时间变的不可确定,降低了实时性
在此,有更好的解决⽅案,那就是Tigtly-CoupledMemory,紧耦合锁存器:是⼀种紧挨着内核的快速SRAM
(1)可以改善系统系能
(2)保证装在和存储指令或数据的时间确定
紧耦合所存器使NIOSII性能提⾼,⼜能获得可预测的实时响应,有以下特点:
(1)性能类似于⾼速缓存
(2)软件能够保存讲关键性能的代码或数据存谊拼音 放在紧耦合存储器中
(3)代码执⾏的叶绍翁的简介 确定性——装载和存储指令或者数据的时间是可预测的
NIOSII节后指令和数据访问都⽀持耦合存储器
如果应⽤程序和存储器需要组后⼩,能够完全在⽚内实现,可以使⽤专门针对代码和数据的紧耦合器,可是怎么⽤捏???
反正,问题都解决,静态地址主端塞上听吹笛高适翻译 和从端的地址映射也差不多知道了。。。。
养成对CacheBit31位操作的习沁园春雪朗诵比赛视频 惯,便于移植
总结出⼀点,好好看handbook
发现问题--问问题--⽆果--看handbook--while(1){冷静,问题总能被解决的………}
更多推荐
tightly是什么意思htly在线翻译读音例句
发布评论