我知道在ARM Cortex M3 / M4架构中,处理器使用代码和SRAM区域来执行程序 . 但有时它集成了Code和SRAM区域 . 任何人都可以向我解释这种集成的可行性和原因是什么?
请举例说明:为什么需要整合这两个区域?在架构上,代码区域是只读的ROM,而RAM提供读/写访问 . 如果我们尝试写入这个集成的代码区域,这种安排似乎可能导致分段错误 . 对于集成的代码区域,我们必须做些什么?
还有一个问题是,由于这些区域是通过某些特定的大小限制来定义的,那么架构如何处理这个问题呢?
参考:Joseph Yiu的ARM Cortex M3和Cortex M4 MCU的权威指南 . 主题编号:4.4.2
1 回答
来自ARMv7M架构,
代码区域在架构上不是只读的 . 关于何时将RAM映射到代码区域是有意义的几个例子是:
如果主闪存速度很慢,要实现更快访问内存的区域,而不是实现缓存,则选择将某些关键代码区域复制到更快的内存中 .
启用运行时代码修改/参数化(包括某些类型的调试)
这些可以通过运行来自SRAM或RAM区域的代码来实现,但是你失去了(在某些Cortex-M中)两个专用于代码区域指令和数据获取的附加硬件接口的好处 .
我没有你参考的书,但我怀疑它也说'通常'而不是'总是' .