Overlay技术:
分类:大致分为软件操作系统硬件
本文主要介绍软件实现OVERLAY。 关于硬件的实现方法和战略,现在能找到的资源有限,自己还不知道,所以在现状中不介绍。
OVERLAY是指实现内存区域的再利用。 在SOC中,RAM是一个快速但单位面积的组件,这意味着每单位面积的成本很高。 降低成本的一种方法是将程序代码放在较慢但单位面积较小的flash或ROM中,只有在系统需要执行中的几个程序代码时才加载到内存中执行。
Overlay区域可以放置原始数据,也可以放置原始数据。
需要注意的前提是:
1、模块a和模块b不能同时使用。
2、替换OVERLAY区域内的数据时,请根据需要用软件保存。
3、实现重叠的RW、RO必须与位置无关。
4、OVERLAY相关区域的移动保存由软件负责。
下面以ARM M系列的 sct文件进行说明:
LR_IROM10x000000000x0000F000 {; 加载区域size _ region
er_irom10x0000000000x000000200{; load地址=execution地址
*.o (重置,第一个) )。
* (在根$ $ sections中) )
}
ER_IROM2 00x0000EE00 {
. any(ro ) )。
}
RW_IRAM10x200100000x00003FF0 {; 原始数据
. any(rwzi ) )。
}
rw _ iram 20x 20013 ff0uninit0x 000010 {
. any(rwzi ) )。
}
; ; ; ; ; ; overlayrawdatabuffer0andsomeoverlayfunction
rw _ ove lay _ ra w00 x 20020000 overlay0x 2000 {
touchdataprocesslib.o (原始数据0 ) )。
}
; ; ; ; ; ; overlayrawdatabuffer0andsomeoverlayfunction
}
LR_IROMX0x0000F0000x0000300 {; 加载区域size _ region
HD_IROMX0x20020000 OVERLAY {
板载func.o (funcinfohead ) )。
}
ER_IROMX0x20021000 OVERLAY {
Overlayfunc.o(ro ) )。
}
}
在上述文件中,RAM区域0x 20020000到0x 200220实现了OverLay机制。 其中,存在于初始化的是touchdataprocesslib.o(rawdata0)的内容。
如果需要OverLayFunc.o功能,软件会将相应的OverLayFunc.o(funcinfohead )、overlay func.o (ro )复制到
对应的OverLay区域。 这样,您就可以在0x 20020000到0x 200220之间访问OverLayFunc.o中的内容。