扩大MCU程序地址空间的方法及装置与流程

文档序号:12040428阅读:419来源:国知局
扩大MCU程序地址空间的方法及装置与流程
本发明属于通信领域,尤其涉及一种扩大MCU程序地址空间的方法及装置。

背景技术:
通常MCU(MicroControlUnit,微控制单元)本身并没CACHE功能。芯片内部的程序存储器容量较小,通常由4Kbytes的PROM与4Kbytes的PRAM组成,共8Kbytes。在绝大多数应用中,8Kbytes的程序地址空间可以满足使用需求,但是在少数情况下,仍会出现无法满足实际需求的情况,而为了少数应用增大PRAM的大小,从芯片面积和成本考虑并不经济。

技术实现要素:
本发明实施例的目的在于提供一种扩大MCU程序地址空间的方法及装置,旨在解决现有的MCU程序地址空间较小无法满足需求的问题。本发明实施例是这样实现的,一种扩大MCU程序地址空间的装置,所述装置包括一缓存控制器以及分别与所述缓存控制器连接的 MCU、PRAM和EEPROM;所述EEPROM的空间分为Cacheable的空间和NonCacheable的空间;其中,所述缓存控制器,用于程序执行过程中,当所述MCU需要访问的程序地址不在所述PRAM中,且所述程序地址为Cacheable时,根据预设的所述EEPROM地址与所述PRAM地址的映射关系将所述MCU需要的程序地址从所述EEPROM搬至所述PRAM中,以便所述MCU从所述PRAM中读取需要访问的程序地址。进一步地,所述缓存控制器包括TAG存储器、命中仲裁器、DMA请求触发器、TAG更新模块,所述TAG存储器、命中仲裁器、DMA请求触发器依次连接,所述TAG更新模块分别连接所述TAG存储器和DMA请求触发器;其中,所述TAG存储器,用于存储所述EEPROM地址与所述PRAM地址的映射关系;所述命中仲裁器,用于判断所述MCU需要访问的程序地址是否在所述PRAM中;以及当所述MCU需要访问的程序地址不在所述PRAM中,且该程序地址为Cacheable时,根据所述EEPROM地址与所述PRAM地址的映射关系计算第一DMA请求信息,并发送至所述DMA请求触发器;所述DMA请求触发器,用于根据所述第一DMA请求信息从所述EEPROM中将所述MCU需要访问的程序地址搬运至所述PRAM;所述TAG更新模块,用于在DMA请求触发器结束搬运后更新所述TAG存储器中所述EEPROM地址与所述PRAM地址的映射关 系,并返回所述命中仲裁器继续判断所述MCU下一次需要访问的程序地址是否在所述PRAM中直到程序执行完毕。进一步地,所述缓存控制器还包括一内部寄存器,所述命中仲裁器还用于当所述MCU需要访问的程序地址不在所述PRAM和内部寄存器中,且该程序地址为NonCacheable时,计算第二DMA请求信息,并发送至所述DMA请求触发器;所述DMA请求触发器还用于根据所述第二DMA请求信息从所述EEPROM中将所述MCU需要访问的程序地址搬运至所述内部寄存器,以便所述MCU从所述内部寄存器中读取需要访问的程序地址。进一步地,所述缓存控制器通过I2C接口与所述EEPROM通信。本发明还提出一种扩大MCU程序地址空间的方法,用于上述扩大MCU程序地址空间的装置;所述方法包括步骤:程序执行过程中,当所述MCU需要访问的程序地址不在所述PRAM中,且所述程序地址为Cacheable时,所述缓存控制器根据预设的所述EEPROM地址与所述PRAM地址的映射关系,将所述MCU需要的程序地址从所述EEPROM搬至所述PRAM中,以便所述MCU从所述PRAM中读取需要访问的程序地址。进一步地,所述缓存控制器根据EEPROM地址与PRAM地址的映射关系,将MCU需要的程序地址从EEPROM搬至PRAM中包括:A1、所述缓存控制器根据所述EEPROM地址与所述PRAM地址的映射关系计算第一DMA请求信息;B1、根据所述第一DMA请求信息从所述EEPROM中将所述 MCU需要访问的程序地址搬运至所述PRAM;C1、更新所述EEPROM地址与所述PRAM地址的映射关系,并返回步骤A1直到程序执行完毕。进一步地,所述方法还包括:当所述MCU需要访问的程序地址在所述PRAM中,直接从所述PRAM中读取所述MCU需要访问的程序地址,并反馈至所述MCU。进一步地,所述方法还包括:当所述MCU需要访问的程序地址不在所述PRAM中,且所述MCU需要访问的程序地址为NonCacheable时,所述缓存控制器从所述EEPROM中将所述MCU需要访问的程序地址搬运至一预设的内部寄存器,以便所述MCU从所述内部寄存器中读取需要访问的程序地址。进一步地,所述缓存控制器从EEPROM中将MCU需要访问的程序地址搬运至一预设的内部寄存器包括:A2、判断所述MCU需要的程序地址是否在所述内部寄存器中;B2、当所述MCU需要访问的程序地址不在所述内部寄存器中,计算第二DMA请求信息;C2、根据所述第二DMA请求信息从所述EEPROM中将所述MCU需要访问的程序地址搬运至所述内部寄存器。进一步地,所述缓存控制器从EEPROM中将MCU需要访问的程序地址搬运至一预设的内部寄存器还包括:D2、当所述MCU需要访问的程序地址在所述内部寄存器中,直 接从所述内部寄存器中读取所述MCU需要访问的程序地址,并反馈至所述MCU。在本发明实施例中,通过PRAM与外部EEPROM的地址映射关系,使PRAM成为CACHE,EEPROM扩展成为程序地址空间。另外一方面,当EEPROM中的某段程序被执行的几率很低时,可将该段程序所在的地址空间设置为NonCacheable,当要执行该部分程序时,将这部分程序从外部EEPROM直接返回给MCU,如此可以使映射到PRAM中对应地址空间的程序不被替换,从而提高效率。本发明实施例的CACHE功能满足了对更大程序空间的需求。附图说明图1是本发明实施例一提供的扩大MCU程序地址空间的装置的结构图;图2是本发明实施例一提供的扩大MCU程序地址空间的装置中缓存控制器的结构图;图3是本发明实施例一提供的扩大MCU程序地址空间的装置中EEPROM和PRAM之间的地址映射关系示意图;图4是本发明实施例二提供的扩大MCU程序地址空间的方法的流程图;图5是本发明实施例二提供的扩大MCU程序地址空间的方法中步骤S4的流程图;图6是本发明实施例二提供的扩大MCU程序地址空间的方法中 步骤S5的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。实施例一本发明实施例一提出一种扩大MCU程序地址空间的装置。如图1所示,该装置包括缓存控制器10以及分别与缓存控制器10连接的MCU30、PRAM20和EEPROM40,上述缓存控制器10可通过I2C接口或FPI接口与EEPROM40通信。如图2所示,缓存控制器10包括依次连接的TAG存储器13、命中仲裁器11、DMA请求触发器12、TAG更新模块14,TAG更新模块14和TAG存储器13连接。缓存控制器还包括一与命中仲裁器11连接的内部寄存器15。本发明实施例一中,预先配置EEPROM40和PRAM20之间的地址映射关系并保存于TAG存储器13中,图3所示为本发明实施例一中EEPROM40和PRAM20之间的地址映射关系一示例。该示例以EEPROM40为32K(其中仅有28K可以使用),PRAM20为4K为例,以CacheLine为单位对EEPROM40和PRAM20的空间进行划分(每一CacheLine大小为32*16bits),如此,EEPROM40共448个CacheLine,PRAM20共64个CacheLine。其实应用中,并不以图3 所示之示例为限,EEPROM40、PRAM20及CacheLine的大小可根据需要进行设置。对某些EEPROM40中的CacheLine,可以将其设置为Cacheable(地址空间可搬运)或NonCacheable(地址空间不可搬运),NonCacheable的设置通过配置NonCacheablestartCacheLine与NonCacheableEndCacheLine的方式来实现的,配置之后,从NonCacheablestartCacheLine与NonCacheableEndCacheLine之间的所有CacheLine无法搬到PRAM20中,而只能MCU30访问相应长字地址时,从外部EEPROM40中通过DMA搬对应的长字到内部寄存器15,再返回给MCU30。当EEPROM40中的某段程序被执行的几率很低时,可以将该段程序所在的地址空间设置为NonCacheable,当要执行该部分程序时,将这部分程序逐个长字的从外部EEPROM40直接返回给MCU30,而不将其先搬到PRAM20的相应CacheLine中,这样可使映射到PRAM20中同样CacheLine的程序不被替换,从而提高效率。在MCU30执行程序过程中,命中仲裁器11判断当前MCU30要访问的程序空间地址是Cacheable还是NonCacheable。若当前MCU30要访问的程序空间地址是Cacheable,读取TAG存储器13中相应的数据判断命中与否,命中,则直接从PRAM20返回数据给MCU30;没有命中,则立刻通过ClockingGating停掉MCU30的时钟,计算出第一DMA请求信息送给DMA请求触发器12,在DMA请求结束并且TAG更新模块14更新TAG存储器13中 的EEPROM40和PRAM20之间的地址映射关系之后,再释放MCU的时钟。第一DMA请求信息包括DMA的源地址、目的地址以及请求长度(图3示例中以CacheLine为请求单位,因此长度为32个长字)。若当前MCU30要访问的程序空间地址是NonCacheable,判断上一次是否取出过该程序空间地址的数据,是,则直接由内部寄存器15返回给MCU30;否则立刻通过ClockingGating停掉MCU30的时钟,计算出第二DMA请求信息送给DMA请求触发器12,在DMA请求结束并且TAG更新模块14更新TAG存储器13之后,再释放MCU30的时钟。第二DMA请求信息包括DMA的源地址、目的地址以及请求长度(图3示例中以CacheLine为请求单位,因此长度为32个长字)。本发明实施例一在MCU30内部的程序存储器大小不变的情况下,利用外部的EEPROM,扩大程序的寻址空间。以图3所示为例,MCU30的程序地址空间由8K(其中,MCU30原有的PRAM204K,PROM4K)扩展到32K(其中,EEPROAM4028K,PROM4K),大大扩展了MCU30的程序地址空间。实施例二本发明实施例二提出一种扩大MCU程序地址空间的方法,应用于本发明实施例一的装置。如图4所示,本发明实施例二的方法包括如下步骤:步骤S1、程序执行过程中,判断MCU需要访问的程序地址在不 在PRAM中,在则进入步骤S2,否则进入步骤S3。步骤S2、当MCU需要访问的程序地址在PRAM中,直接从PRAM中读取MCU需要访问的程序地址,并反馈至MCU。步骤S3、判断MCU需要访问的程序地址是否为Cacheable,是则进入步骤S4,否则进入步骤S5。步骤S4、缓存控制器根据EEPROM地址与PRAM地址的映射关系,将MCU需要的程序地址从EEPROM搬至PRAM中,MCU再从PRAM中读取MCU需要的程序地址。如图5所示,步骤S4可包括:步骤S41、缓存控制器根据EEPROM地址与PRAM地址的映射关系计算第一DMA请求信息。缓存控制器在当前时钟周期通过ClockGating停掉MCU的时钟,保持住程序存储返回给MCU的总线上的数据,然后发起第一DMA请求,同时计算出第一DMA请求信息的源地址、目的地址、请求长度。步骤S42、根据第一DMA请求信息从EEPROM中将MCU需要访问的程序地址搬运至PRAM;步骤S43、更新EEPROM地址与PRAM地址的映射关系,并返回步骤A1直到程序执行完毕。等到DMA请求结束后,MCU需要访问的程序地址已被搬到了PRAM中,对EEPROM地址与PRAM地址的映射关系进行更新,接着,从PRAM中取出MCU所需要的程序地址,释放MCU的时钟,从而MCU得以正确的继续运行。步骤S5、缓存控制器从EEPROM中将MCU需要访问的程序地 址搬运至一预设的内部寄存器,MCU再从内部寄存器中读取MCU需要的程序地址。如图6所示,步骤S5可包括:步骤S51、判断MCU需要的程序地址是否在内部寄存器中;步骤S52、当MCU需要访问的程序地址不在内部寄存器中,计算第二DMA请求信息;缓存控制器在当前时钟周期通过ClockGating停掉MCU的时钟,保持住程序存储返回给MCU的总线上的数据,然后发起DMA请求,同时计算出第二DMA请求信息的源地址、目的地址、请求长度。步骤S53、根据第二DMA请求信息从EEPROM中将MCU需要访问的程序地址搬运至内部寄存器。等到DMA请求结束后,MCU需要访问的程序地址已经被存放在内部寄存器中,缓存控制器将该数据返回给MCU,然后释放MCU的时钟,从而MCU得以正确的继续运行。步骤S54、当MCU需要访问的程序地址在内部寄存器中,直接从内部寄存器中读取MCU需要访问的程序地址,并反馈至MCU,而不对MCU进行任何控制。这样可使映射到PRAM20中同样CacheLine的程序不被替换,从而提高效率。在本发明实施例二中,通过PRAM与外部EEPROM的地址映射关系,使PRAM成为CACHE,EEPROM扩展成为程序地址空间。另外一方面,当EEPROM中的某段程序被执行的几率很低时,可将该段程序所在的地址空间设置为NonCacheable,当要执行该部分程序 时,将这部分程序从外部EEPROM直接返回给MCU,如此可以使映射到PRAM中对应地址空间的程序不被替换,从而提高效率。本发明实施例的CACHE功能满足了对更大程序空间的需求。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1