在晶心平台运行具 OSC 的 FreeRTOS
Overlay Exception Handling 的动作
确定 overlay miss 后,做更新overlay region的动作。
Step 1 得到新的overlay region 地址:
- 从IPC得到更新overlay page的起始位置。
- 更新OVLBASE 寄存器。
Step 2 更新的overlay page内容复制到 SRAM 中的overlay region
Step 3 最后执行iret返回overlay miss发生时的地址。
2. 具 OSC 的 FreeRTOS 介绍
Andes 结合OSC 与 FreeRTOS设计出具 OSC的FreeRTOS ,OSC的功能与 原理已经于上个章节介绍,本章节将说明具 OSC的FreeRTOS与一般FreeRTOS 的差异处,并列举范例程序的运行,展现OSC与FreeRTOS的功能。
2.1 具OSC的FreeRTOS内存配置
具OSC的FreeRTOS其内存配置如图2,范例程序的linker script设定了LMA(系 统image)的内存配置模式,其中loverlay0, overlay1 与 overlay2是仿真 storage 的 地址。linker script 设定VMA(系统执行时)的内存配置模式,当系统运行进入 overlay1, 2... 时产生overlay miss 触发 exception 将overlayN 内的 数据复制到 overlay region 中,这样的设计达到一份Overlay Region 的SRAM空间可以在不同 时间执行对应不同的overlayN程序代码的目的。
图 2.具 OSC 的 FreeRTOS 内存配置图
2.2 osc_hisr task
从图2的overlay0, 1, 2 中可以发现系统会运行task1与task2。说明FreeRTOS 做overlay region置换时也会执行scheduler 做置换task 的工作。本范例程序设计 是在standard FreeRTOS 中增加一个 osc_hisr task 做overlay region 置换与管理 的工作。如何达到OSC 与 osc_hisr task的结合需从Overlay Exception Handling的 动作开始研讨:
● 当 overlay exception 被触发时,送 message 给 queue 启动 osc_hisr task。
● 因为 osc_hisr task 做 overlay region 资料的置换,所以 osc_hisr task 尚未执 行完成前,不可以执行 Overlay Exception Handling 的 iret.
osc_hisr task 的主要工作在:
● Map overlay region
● overlay region 数据的复制。
osc_hisr task 设计的原则:
● 此 task 必须是最高 priority task.
● 此 task 必须放在 fixed region.
2.3 范例程序运行
具 OSC 的 FreeRTOS 在 Andes EVB 上直接运行得到的结果如图 3,范例程 序中键入 3 时,是进行 task 转换,因为不同 task 运行相对应的 overlay function 从 console task 转成 task1 再转成 task2 也会产生相对应的 page fault 执行 osc_hisr task。由图 3 红色箭头与数字转变可以得知 task 转换启动 function overlay 运作, 从此范例程序中可同时验证 OSC 与 FreeRTOS 两者的功能。
图 3.范例程序执行结果
3. 结语
本文第一章说明 Andes OSC 的工作原理与功能,第二章说明 FreeRTOS 如何 与 Andes OSC 整合运作,在 OSC 的 FreeROTS 中也增加一个最高 priority task “osc_hisr” 来执行 OSC 相对应的功能,进而说明了具 OSC 的 FreeRTOS 需注意 的设计原则,具 OSC 之 FreeRTOS 是由软件与硬件单元所组成,兼具硬件的效 能与软件的弹性。
已经有业界客户取得 Andes 具 OSC 之 FreeRTOS,开发出具竞争力产品在市 面上销售,由此可知具 OSC 之 FreeRTOS 具有经济实用的价值,可以协助客户 在使用 AndesCore?时,设计出具有弹性且高附加价值之产品。
andescore soc 晶心科技 freertos 相关文章:
- EDM安全访问机制应用方案(02-12)
- 8051 与 AndesCoreTM 的软件差异与移植(07-29)
- IP核在SoC设计中的接口技术 (08-06)
- 视频跟踪算法在Davinci SOC上的实现与优化(10-06)
- 基于赛灵思Spartan-3A DSP的安全视频分析(02-17)
- Linux下Sniffer程序的实现(06-12)