新闻中心

在晶心平台运行具 OSC 的 FreeRTOS

来源:Andes
发布时间:[2016-01-08]

晶心科技设计 IP 的目的,是满足客户实际需求,提供低功耗高效率的产品 给客户,让客户可以做出极具竞争力的 SoC,达到客户与晶心科技双赢的目的, 本文介绍具 OSC 的 FreeRTOS 产品,巧妙地与 AndesCore™结合,客户导入产品 后,具竞争力与实用性,本文的目的是期望能够让更多的读者清楚这个产品的特 性与优势进而使用此产品。

某些电子产品的应用是不同的时间需要运行不同的功能,这时需要大空间的 ROM 与 RAM 来存放在运行时会用到的各式各样的功能。因为 CPU 同时间只 会运行一种功能。所以在务实与经济的考虑下可以使用 overlay 的方式来满足此 类型产品的需求,将大幅降低 RAM 空间的使用,让硬件成本降低,使得产品竞 争力大大的提升。达成 overlay 的方式有两种,纯软件 overlay 与硬件加速 overlay。 纯软件的 overlay 不需增加硬件,但软件工程师写程序时需自己配置 functions 摆 放的位置,容易出错;呼叫 functions 时需要经过额外的处理,降低程序效能。 因此纯软件的方法多用于只需偶尔更换 overlay 的应用。例如 audio player,一条 歌播完,下一条开始前,才需要检查是否要用不同 decoder。我们有另一篇文章 针对软件 overlay 做介绍,本文不多加探讨。

硬件加速的 overlay 使用少许硬 件 , gate count < 2K (OSC, Overlay SRAM Controller),提供软件透明的 overlay 处理。软件工程师写程序时,可以假设有一 个很大的连续程序空间,完全不需配置 functions 摆放的位置,这大大增加开发 程序的效率;同时,呼叫 functions 时完全没有任何纯软件方式的 overhead。上 述之 OSC 优点可以符合客户这类的需求,如果客户系统复杂,要做的事比较多, 需要用到多任务(Multi-tasking),则晶心科技「支援 OSC 的 FreeRTOS 产品」 就是最佳解方案。

1. Andes OSC 工作原理

先设定AndesCore™ NCEOSC100 IP中寄存器,再与运行软件做整合搭配, 即可执行OSC的功能。

1.1 设定 OSC IP 的寄存器与动作解说

■ OSC Control Register, OSCCTRL (+0x00)

■ OVL_SZ: 3’h4 (16KB) RO/WI

■ OVL_VALID: 0

■ Fixed Region Size Register, OVLFS (+0x04)

■ OVL_FSZ: 8’h18 (96KB) RW

■ Overlay Region Base Register, OVLBASE (+0x08)

■ Overlay Region End Register, OVLEND (+0x0C)

在OSC设计中SRAM分为两个区域,一个是”fixed region” ,另一个是 “overlay region”,fixed region 为低地址的 SRAM ,其大小由OVLFS 寄存器设 定。 overlay region 是一个动态的区域,其地址由OVLBASE寄存器设定,大小 由 OVL_SZ 设定。当CPU运行时存取地址落在寄存器 OVLBASE与OVLEND之 间时OSC将自动转址到SRAM的overlay region内,如图1所示。

因应实际需求设定多个Overlay 区域,当发 生 ”Overlay Miss” 时 ,经由 Overlay Exception的机制与软件的搭配,可以将storage 中的 overlay page N 复 制到 SRAM 中的Overlay Region,如图1所示。关于overlay page 置换的工作原 理将于下两个章节中做说明。

图 1. Overlay 范例说明

CPU运行时存取地址不在fixed region 或是当时有效的 overlay page 时,会 发生 Overlay Miss 。当 Overlay Miss 发 生时 OSC 会产 生 illegal instruction (32’hcoddcodd)造成general exception。因为也有其他原因会产生general exception, 如何区分出overlay miss 与其他general exception,将于下个章节说明。

1.2 Overlay Exception 侦测

当进入 general exception 时可透过软件检验下列程序来判断是否为overlay miss:

Step 1 如果 interrupt level 已经到达最大值 (PSW.INTL == Max INTL) ,这是 fetal error 不是overlay miss。

Step 2 必须是ITYPE.EYPE==1,才有机会是overlay miss。

Step 3 检查IPC值,如果是落在fixed region 或是当时有效的 overlay page 时 这是真 正的 illegal exception case. 如果 不 是在这 两个 区域 则是 overlay miss。

经过前面3步骤验证,如果确定是overlay miss ,则可进行Overlay exception handling 的动作。

1.3 执行 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™时,设计出具有弹性且高附加价值之产品。