在μC/OS Ⅱ上实现动态电压调节技术
时间:03-24
来源:互联网
点击:
3 DVS在μC/OS—II上的详细实现
3.1 DVS在μC/OS—II上实现的整体结构
根据第2节的分析,一个完整的DVS模块应包括两大部分:一部分是更新DVS任务控制信息,另外一部分是可调度的最低频率的计算。其中,第二个部分又可以分为两个层次,即最低频率的计算和频率的硬件设置部分,这样分层之后有助于改进后μC/OS— II的移植。DVS功能在μC/0S—II的实现总体结构如图3所示,下面详细描述各个部分的实现过程。
3.2 更新DVS任务控制信息
为了让系统知道每个任务的详细情况,实现过程中建立如下结构体保存任务的信息:
该结构体作为任务控制块的一部分,在任务创建时,将μC/OS—II自身预留的任务扩展指针 OSTCBExtPtr指向该结构体。这些信息必须在每一个时钟节拍之后都有变化,因此它们必须在每一个时钟节拍进行更新。更新这部分信息的代码被放在 OSTimeTickHook()函数中。
3.3 计算可运行的最低电压和频率
计算可运行的最低电压和频率的算法是 DVS功能的核心部分。算法的基本思想是,将所有任务产生的松弛时间给当前任务使用,使当前就绪的任务集以尽量低的电压和频率运行。系统最开始运行在最高频率和电压下。该算法的伪代码如下:
//变量leastNxtSusTime表示距离最近一个任务就绪的时间
//变量 readyTaskRequireTime表示就绪任务共需要的执行时间获取任务TCB;
根据FlexibleRatio设置处理器的频率
由于系统并不是时刻都需要动态地去改变处理器的频率和电压,当且仅当系统中任务的就绪队列发生变化的时候才需要重新计算处理器的频率和电压。因此,这部分代码需要在任务的切换过程中和中断返回时执行。在本实验中,这部分代码写在μC/OS—II扩展文件os_cpu_c.c中的OSTaskSwHook()函数中,同时在 OSIntCtxSw()中也用了这个函数。
3.4 设置处理器的频率和电压
由于设置处理器的频率和电压是与操作系统所运行的硬件平台相关的,不同的处理器设置处理器频率和电压的方法不尽相同,所以本实验在改进μC/OS—II的时候并没有将这部分代码写入内核,而是提供了扩展接口setCPUAtSpecifledVolAndFreq(voltage,frequency)供移植时使用。该函数用于设置处理器的电压和频率为指定的电压和频率。其中,参数voltage和frequency分别表示电压和频率。
3.5 快速查询频率和电压
因为目前大多数的处理器并不支持连续地设置处理器的频率,它们仅支持离散地设置处理器的频率,所以按照公式(8)计算出来的频率处理器可能并不支持。本实验在实现过程引入了频率查询表快速查询高于计算结果的,且处理器支持的最低频率。它的结构如下:
根据计算出的FlexibleRatio,即可直接在查询表中查询到相应的频率值;但是计算出的 FlexibleRatio多为小数,故在实际应用时常将该表设计得比实际大10倍。查询的时候先将FlexibleRatio乘以10后取整,然后再查表。
3.6 可裁减设计
为保持与μC/0S—II本身可裁减特性的一致,新加入的DVS功能可以在os_cfg.h中通过宏定义变量0S_PM_DVS_EN来启用和关闭。OS_PM_DVS_EN为1表示开启DVS功能,为O表示关闭。
4 测试实验
改进后的μC/0S—II使用ARM Develop Suit V1.2编译后,在华邦的W90P710开发板上测试运行。W90P710开发板支持4个等级的频率调整。有关μC/OS-II在这块板子上的移植请查阅参考文献。
采用功率计HIOK13332测量改进前后μC/OS—II在板子上运行时的功耗。本测试案例创建了两个任务。这两个任务的属性如表1所列。
实验结果表明,使用DVS功能与不使用DVS功能相比,调节处理器的功耗下降41%。
5 结 论
本文的创新之处在于提出了一个DVS的实现模型,并在保持μC/OS—II原有的基于抢占的静态优先级调度基础上,在遵循可裁减、可移植的前提下,在其内核中加入了支持动态电压管理的代码配置和函数接口。经测试,改进后的μC/OS—II可以在W90P710上顺利运行。虽然本实验是针对离散的频率和电压进行的,但改进的μC/0S—II仍然可以支持连续电压和频率下的动态管理。通过以上改进,μC/0S—II在实际应用中可以节省更多的能耗,设备的使用时间会更加长久。
参考文献
1. Juha P Optimizing the Power for Multiple Voltage Domains 2006
2. Labrosse Jean J.邵贝贝 MicroC/OS-II The real-time Kernel 2006
3. Kim W.Shin D.Yun H S Performance Comparison of Dynamic Voltage Scaling Algorithms for Hard Real-Time Systems 2002
4. 罗刚.郭兵.沈艳 Winbod W90P710评估板上μC/OS-II RTOS的移植 2008(7)
5. 毛德梅.何建忠.汪明珠 μC/OS- II中任务切换机理及中断技术研究 2007(10)
6. 吴琦.熊光泽.廖勇 DVS 系统硬实时周期任务动态调度算法 [期刊论文] -电子科技大学学报2007(5)
作者:任磊,郭兵 (四川大学) 沈艳 (电子科技大学)
来源:单片机与嵌入式系统应用 2009 (4)
3.1 DVS在μC/OS—II上实现的整体结构
根据第2节的分析,一个完整的DVS模块应包括两大部分:一部分是更新DVS任务控制信息,另外一部分是可调度的最低频率的计算。其中,第二个部分又可以分为两个层次,即最低频率的计算和频率的硬件设置部分,这样分层之后有助于改进后μC/OS— II的移植。DVS功能在μC/0S—II的实现总体结构如图3所示,下面详细描述各个部分的实现过程。
3.2 更新DVS任务控制信息
为了让系统知道每个任务的详细情况,实现过程中建立如下结构体保存任务的信息:
该结构体作为任务控制块的一部分,在任务创建时,将μC/OS—II自身预留的任务扩展指针 OSTCBExtPtr指向该结构体。这些信息必须在每一个时钟节拍之后都有变化,因此它们必须在每一个时钟节拍进行更新。更新这部分信息的代码被放在 OSTimeTickHook()函数中。
3.3 计算可运行的最低电压和频率
计算可运行的最低电压和频率的算法是 DVS功能的核心部分。算法的基本思想是,将所有任务产生的松弛时间给当前任务使用,使当前就绪的任务集以尽量低的电压和频率运行。系统最开始运行在最高频率和电压下。该算法的伪代码如下:
//变量leastNxtSusTime表示距离最近一个任务就绪的时间
//变量 readyTaskRequireTime表示就绪任务共需要的执行时间获取任务TCB;
根据FlexibleRatio设置处理器的频率
由于系统并不是时刻都需要动态地去改变处理器的频率和电压,当且仅当系统中任务的就绪队列发生变化的时候才需要重新计算处理器的频率和电压。因此,这部分代码需要在任务的切换过程中和中断返回时执行。在本实验中,这部分代码写在μC/OS—II扩展文件os_cpu_c.c中的OSTaskSwHook()函数中,同时在 OSIntCtxSw()中也用了这个函数。
3.4 设置处理器的频率和电压
由于设置处理器的频率和电压是与操作系统所运行的硬件平台相关的,不同的处理器设置处理器频率和电压的方法不尽相同,所以本实验在改进μC/OS—II的时候并没有将这部分代码写入内核,而是提供了扩展接口setCPUAtSpecifledVolAndFreq(voltage,frequency)供移植时使用。该函数用于设置处理器的电压和频率为指定的电压和频率。其中,参数voltage和frequency分别表示电压和频率。
3.5 快速查询频率和电压
因为目前大多数的处理器并不支持连续地设置处理器的频率,它们仅支持离散地设置处理器的频率,所以按照公式(8)计算出来的频率处理器可能并不支持。本实验在实现过程引入了频率查询表快速查询高于计算结果的,且处理器支持的最低频率。它的结构如下:
根据计算出的FlexibleRatio,即可直接在查询表中查询到相应的频率值;但是计算出的 FlexibleRatio多为小数,故在实际应用时常将该表设计得比实际大10倍。查询的时候先将FlexibleRatio乘以10后取整,然后再查表。
3.6 可裁减设计
为保持与μC/0S—II本身可裁减特性的一致,新加入的DVS功能可以在os_cfg.h中通过宏定义变量0S_PM_DVS_EN来启用和关闭。OS_PM_DVS_EN为1表示开启DVS功能,为O表示关闭。
4 测试实验
改进后的μC/0S—II使用ARM Develop Suit V1.2编译后,在华邦的W90P710开发板上测试运行。W90P710开发板支持4个等级的频率调整。有关μC/OS-II在这块板子上的移植请查阅参考文献。
采用功率计HIOK13332测量改进前后μC/OS—II在板子上运行时的功耗。本测试案例创建了两个任务。这两个任务的属性如表1所列。
实验结果表明,使用DVS功能与不使用DVS功能相比,调节处理器的功耗下降41%。
5 结 论
本文的创新之处在于提出了一个DVS的实现模型,并在保持μC/OS—II原有的基于抢占的静态优先级调度基础上,在遵循可裁减、可移植的前提下,在其内核中加入了支持动态电压管理的代码配置和函数接口。经测试,改进后的μC/OS—II可以在W90P710上顺利运行。虽然本实验是针对离散的频率和电压进行的,但改进的μC/0S—II仍然可以支持连续电压和频率下的动态管理。通过以上改进,μC/0S—II在实际应用中可以节省更多的能耗,设备的使用时间会更加长久。
参考文献
1. Juha P Optimizing the Power for Multiple Voltage Domains 2006
2. Labrosse Jean J.邵贝贝 MicroC/OS-II The real-time Kernel 2006
3. Kim W.Shin D.Yun H S Performance Comparison of Dynamic Voltage Scaling Algorithms for Hard Real-Time Systems 2002
4. 罗刚.郭兵.沈艳 Winbod W90P710评估板上μC/OS-II RTOS的移植 2008(7)
5. 毛德梅.何建忠.汪明珠 μC/OS- II中任务切换机理及中断技术研究 2007(10)
6. 吴琦.熊光泽.廖勇 DVS 系统硬实时周期任务动态调度算法 [期刊论文] -电子科技大学学报2007(5)
作者:任磊,郭兵 (四川大学) 沈艳 (电子科技大学)
来源:单片机与嵌入式系统应用 2009 (4)
数字电视 嵌入式 C语言 电子 自动化 电压 电流 电路 ARM 单片机 相关文章:
- 高清晰度数字电视适配均衡器GS1504(08-18)
- 下一代数字电视解码方案的改进 (08-19)
- 高端彩电的分类定义及技术术语解释(08-25)
- 下一代机顶盒的技术趋势和解决方案(08-30)
- 数字电视的条件接收系统原理与应用(09-07)
- 数字电视条件接收系统的安全性研究(09-07)