加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[CortexM3--CC26XX]Memory系统VIMS

发布时间:2020-12-15 20:06:03 所属栏目:百科 来源:网络整理
导读:简述 TI的CC26XX的memory管理部分使用了Versatile Instruction Memory System–VIMS来实现。 如下是CC26XX的memory情况: 128kB的Flash主要是给用户开发自己的应用使用吧,但是编译TI的应用代码时,会发现有两份Flash image需要烧录的,一部分是完全客户自己

简述

TI的CC26XX的memory管理部分使用了Versatile Instruction Memory System–VIMS来实现。
如下是CC26XX的memory情况:

这里写图片描述


128kB的Flash主要是给用户开发自己的应用使用吧,但是编译TI的应用代码时,会发现有两份Flash image需要烧录的,一部分是完全客户自己的Application代码,而另一部分很可能是TI的对ROM部分的patch。
RAM部分还区分了cache,看来取data部分是效率相对比较高的。
115kB的ROM,这里面应当是TI实现的bootloader,还有部分RF Stack。

VIMS

这里来看下TI的VIMS到底是什么:

这里写图片描述


VIMS模块运行于48MHz的system clock下,其实它就是CPU和code/data之间的桥梁(包括在存取data时对bus的仲裁),CPU是从icode/dcode那里(哈佛架构),运行程序时获取到对应的instruction或data的,而VIMS就负责中间桥梁作用,将instruction(code)和data到对应的memory里去取。不过这里为何没有RAM?(看资料好像说这里的Cache就是RAM……)

VIMS模式

接上面的疑问,看看RAM和Cache是如何区分?按TI的资料,说RAM和Cache分为如下三种模式,这样看,应当可以根据应用或时机的需要,在这三个模式之间进行切换,以达到预期的作用。要么是作为通用的RAM,要么是作为Flash data的cache,要么直接关闭掉。

这里写图片描述

VIMS模式之间的切换

果然,三种模式之间的切换TI是做了固定的设定的:

这里写图片描述


该图中黑色部分是软件初始化来设定推进的,而棕色部分是硬件初始化来设定推进。
在system reset时,自然此时做invalidation,RAM中都是没有data的,reset后Hardware会自行初始化RAM的作用为GPRAM,然后GPRAM是否要切换到OFF or Cache,都是软件来做了。but where is Cache?

GPRAM mode

这里写图片描述


这时RAM都作为GPRAM来使用了,Flash没有cache咯,因为VIMS让CPU直接去access Flash区域了。OK。

OFF mode

这里写图片描述


OFF mode时,RAM直接不会使用了,当然Flash也不会有cache。这种方式会有什么用?有RAM速度会加快呀?为了省电?疑惑……

Cache mode

这就对应了Figure 7-2中的ENABLED的mode咯。

这里写图片描述


这时CPU来Access SYSCODE时,全部都会先访问cache,8K被分为4way,(当然cache虽然速度加快,但都会有cache命中和不命中的问题的),因此若cache不命中,还是会通过图中虚线去access Flash区域。其余的和非cache mode差不多。

Split mode

这里写图片描述


此时的8K RAM被分为两个4K,一个4K case for SYSCODE,一个4K case for USERCODE,每个4K都4way。因此此时CPU要去access Flash区域时,都必须先访问cache咯。其余的倒没什么变化。

至此,VIMS的模式以及TI对8K RAM的使用方式就都清楚了,RAM要么当做GPRAM来使用,要么都OFF掉,要么给CPU做Flash cache用(这种情况又分为了两种用法)。

VIMS Flash Line Buffering

TI CC26XX Flash字长是64bit的,而CortexM3是32bit的bus,因此Flash部分前面用了两个32 bit的Line Buffer来缓存下,这样在取Flash内容的时候,虽然Access Flash只做了一次,但两个32bit的Line Buffer应当都有data了,这时可以供CPU使用两次了。

VIMS仲裁

要仲裁CPU bus和System bus的访问,因为两者是可以同时来访问的。而VIMS有时是支持这种同时访问的(CPU cache命中,System bus去Access Flash)。具体如何实现的,Hardware级别了,TI估计也不会放出来资料吧。

ROM

CC26XX的ROM部分,实现了串行接口(SPI,UART)的bootloader支持,还有一个Driver Library,以及一个RF stack。

Flash

CC26XX的Flash是4kB一个page,每个page可以单独擦除,可以32bit字长的写(当然只能由1写0)。
而Flash提供的保护机制是,以8kB的block为单位保护的。大概就是将某两个page配起来,做一起保护(不太清楚配起来的那两个page是否要相邻哦……),而被保护起来的Flash可以配置为read-only或者是execute-only。
Flash是工作于48MHz的system clock下的。
Flash的处理TI也给出了不同的供电状态下数据的retension等状态图。

ROM的功能

看来前面的ROM部分仅是讲了ROM code所实现的功能,而这里其实实际应该是Flash的部分吧,用来保存一些配置信息用的。
包括eFuse,FCFG,Customer配置。

这部分其实主要还是介绍TI的CC26XX的VIMS模块的大致设计和实现。 关于memory map并未多涉及。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读