专利名称:媒体播放装置上实现多任务的方法
技术领域:
本发明涉及媒体播放领域,具体地说涉及在媒体播放装置上实现多任务的方法。
背景技术:
随着电子信息技术的迅猛发展,媒体播放器如MP3播放器的使用已日渐普及化,其发展日新月异,能为使用者提供的功能也越来越丰富,如音乐播放,图片浏览,文本阅读,游戏,FM收音机等。
然而,无论功能如何丰富,在同一时间,此类播放器能为用户提供的使用功能始终为单一功能。例如,在播放音乐的同时无法阅读文本、无法浏览图片、无法玩游戏;在播放FM收音节目的时候无法阅读文本、无法浏览图片、无法玩游戏等。
图1所示为传统的媒体播放器上的任务执行方法的流程图,由于没有采用多任务的开发机制,其应用程序只能以单任务的方式运行。当某一任务运行时,将独占系统的所有资源,如CPU控制权,堆栈、寄存器访问权、内存、外设等设备的控制权,一旦有新的任务需要运行,其通过终止当前任务而释放所有系统资源的方式,保证新任务的正常运行。
由于上述任务执行模式是通过不停地在系统外存和内存之间调入调出不同的执行代码,在调出前,保存当前任务的运行环境参数,在调入前,恢复系统运行环境参数为上次保存值;因此,其须频繁的在高速和低低速设备间保存和恢复运行环境,运行时的速度取决于低速设备的访问速度,故运行速度慢是这种方法的最大不足。
一种解决上述技术问题的现有多任务执行方法如图2所示,其通过在本任务中添加新任务的功能代码,使旧任务和新任务须实现的功能交替执行,对于使用者来说,看上去好像是多任务同时运行一样;即将所有须执行的代码放入到同一任务内,分时间片轮流运行。
但上述现有多任务执行方法存在以下缺陷其在统一任务中分时间片执行不同功能,没有优先级,须高速运行的代码也必须等待低速运行的代码执行完毕才能执行,尤其当两个功能需要对方功能执行到一定阶段才能继续运行时,将会产生死锁现象。
针对上述现状,本发明提出一种新的方法,实现媒体播放器上的多任务应用。
发明内容
本发明的目的在于提供一种可以实现多种任务于媒体播放装置上应用的方法。
本发明提供一种利用时间片轮转实现多种任务于媒体播放装置上应用的方法。该方法主要包括所述控制器单元的任务分解过程、定义优先级任务过程、创建任务描述符过程、初始化过程、时钟调度过程、执行任务过程、空闲任务过程、挂起任务调度过程、时钟中断任务过程。
其中,多个任务按照设置于控制器单元中特定的算法在一定时间内运行,各个任务轮流占有CPU及其它系统资源并相互交替运行。由于在短时间内各个任务均被执行,故从使用者的角度看,则是各个任务在同一时间内运行,从而实现多种任务于媒体播放装置上的应用。
附图的简要说明图1是现有的在媒体播放装置上的任务执行方法的流程图。
图2是另一种现有的在媒体播放装置上的任务执行方法的流程图。
图3是本发明实现多任务于媒体播放装置控制器单元创建任务描述符过程及初始化过程的流程图。
图4是本发明实现多任务于媒体播放装置控制器单元时钟调度过程的流程图。
图5是本发明执行音频播放任务及空闲任务过程的流程图。
图6是本发明执行挂起任务调度过程的流程图。
图7是本发明执行时钟中断服务过程的流程图。
具体实施例方式
本技术领域普通技术所知,媒体播放器均包括控制器单元、输入单元、显示单元及音频输出单元。控制器单元设置有用于实现媒体播放器的功能固化软件。
本发明提供一种利用时间片轮转实现多种任务于媒体播放装置上应用的方法。该方法主要包括所述控制器单元的任务分解过程、定义优先级任务过程、创建任务描述符过程、初始化过程、时钟调度过程、执行任务过程、空闲任务过程、挂起任务调度过程、时钟中断任务过程。
众所周知,媒体播放装置一般都会有多种不同的功能。所述控制器单元将媒体播放装置的各种功能分解成多个任务,如将音频播放、图像浏览、文本阅读、游戏、FM调频等分成多个不同的任务,这些任务由控制器单元控制并以其固化软件实现。而多个任务按照设置于控制器单元中特定的算法在一定时间内运行,各个任务轮流占有CPU及其它系统资源并相互交替运行。由于在短时间内各个任务均被执行,故从使用者的角度看,则是各个任务在同一时间内运行,从而实现多种任务于媒体播放装置上的应用。
其中,上述多任务执行方法通过设置于控制器单元中的特定算法给各个任务设置优先级。由于不同的任务需要消耗的CPU及其它系统资源可能不同,如MP3解码的运算量要大于图片解码;使用者对某个或某些任务的实时性要求较高,如MP3播放发生停顿,使用者会马上感知,而图片浏览任务发生一定延迟,使用者则可以接受;另外,使用者对某些功能的使用频率明显高于其它功能的使用频率,如MP3音乐播放可能明显要高于文本阅读。因此,通过给各个任务设置不同的优先级,当各个任务均处于就绪状态时,高优先级任务将优先执行;当高优先级任务没有结束挂起时,即没有主动放弃CPU系统资源时,低优先级任务将永远不会运行。这种采用优先级设置可以合理分配不同任务所需的运行时间片,不会造成系统资源无端的浪费,从而使系统运行效率更高,运行速度更快。
上述分解任务及定义任务优先级是控制器单元通过创建各个任务的任务描述符来实现的。控制器单元通过特定算法创建各个任务的任务描述符、定义各任务的优先级以及各任务的时钟节拍数;此时,各个任务均处于就绪状态。控制器单元的固化软件判断各个任务的优先级别,寻找优先级别被定义最高的任务,将该优先级别最高的任务的就绪状态修改为运行状态,并按照该任务的任务描述符中定义的时钟节拍数执行该任务。
在本发明技术方案中,通过定义各任务的任务描述符中的时钟节拍数确定各任务的运行时间,以各个任务被分配的不同时间片循环交替执行各任务,从而实现多种任务于媒体播放装置上的运行。在每个任务运行过程中,即在一个任务运行循环中,该任务处于运行状态,而其他任务均处于就绪状态,在该任务按照其时钟节拍数运行结束挂起后,其他任务才有可能被执行,其他就绪任务不可以打断系统当前执行的任务;此时,该任务的运行状态被修改为就绪状态,即所有的任务此时均处于就绪状态,需要再次进行优先级判断,根据优先级确定下一步执行的任务。如果当前被执行的任务在未运行完其时钟节拍数即主动放弃CPU资源挂起,则在控制器单元判断优先级时,仍会将其确定为优先级最高的任务继续执行。
例如,上述媒体播放装置包括音频播放、图像浏览、文本阅读、游戏、FM调频功能,这些功能以多个任务的方式运行。控制器单元将音频播放定义为最高优先级15、图像浏览定义为次优先级14、文本阅读定义为第三优先级13、由此类推,空闲状态的级别定义为最低优先级。在媒体播放装置开机并初始化后,控制器单元判断不同优先级的任务并将各个均设置为就绪状态,设其时间片为10ms,若干时间片分别按优先级依次对应不同的任务。当用户通过输入单元如操作按键、触摸输入等方式输入命令时,控制器单元根据预先设置执行其对应的任务,如音频播放,该任务处于运行状态,在其相对应的时间片中执行该任务,其他任务处于就绪状态。
当用户再次要求执行其他任务时,如图像浏览任务,控制器单元判断其优先级,如比此时运行状态的任务的优先级高,则立即执行此高优先级任务,按照此高优先级任务对应的时间片执行任务,该时间片的任务状态修改为运行状态。如此新任务的优先级比此时运行状态的任务的优先级低,则须在该优先级高的任务时间片执行完毕后,再执行此新任务时间片的任务。
图3所示为本发明实现多任务于媒体播放装置控制器单元创建任务描述符过程及初始化过程的流程图,其包括以下步骤S11-创建已分解任务的描述符,描述符包括为了描述每一任务的特征所必须的数据,须包括以下数据任务ID号、任务优先级、任务运行状态、任务的时钟节拍数、任务执行代码的首地址、任务栈首地址、任务栈大小;S12-创建任务描述符数组将所有任务的任务描述符地址存放在一个数组中,以方便管理;S13-任务初始化任务初始化时,配置每一个任务所须的堆栈大小,分配任务堆栈空间,分配系统唯一的任务ID号,设置任务优先级,设置任务运行状态为就绪状态,将任务的时钟数清零,记录任务执行代码的首地址,记录任务任务栈的首地址及大小;如此流程初始化每一个任务,直至所有任务初始化完毕;S14-跳转至时钟调度过程执行。
图4所示为本发明实现多任务于媒体播放装置控制器单元时钟调度过程的流程图,其包括以下步骤S21-判断是否有处于运行状态的任务,如有则将当前任务状态由运行状态修改为就绪状态,若无则直接进行步骤S022;S22-扫描整个任务状态描述符数组,找到优先级最高、任务状态为就绪状态的任务;S23-判断是否有存在符合条件的任务,若存在则执行步骤S24,若无则执行步骤S26;
S24-若符合条件的任务为当前任务,则修改当前任务的状态为运行状态,跳转至当前任务的当前代码地址运行,例如当前任务为任务音频播放,则跳转至音频播放过程处执行,当前任务为任务其他,则跳转至与该任务相对应的过程处执行;S25-若符合条件的任务非当前任务,则将当前的系统现场数据保存到当前任务的任务栈中,复制优先级最高的就绪任务的任务栈到当前现场,修改优先级最高的就绪任务状态为运行状态,跳转至该任务的当前代码地址运行,例如优先级最高的就绪任务为音频播放,则跳转至音频播放过程处执行,优先级最高的就绪任务为图像浏览,则跳转至图像浏览过程处执行;S26-若没有找到符合条件的任务,则跳转至空闲任务的当前代码地址处运行,即执行空闲任务过程。
图5是本发明执行音频播放任务及空闲任务过程的流程图,其步骤包括S31-执行音频播放任务的相关操作;S32-音频播放过程循环体执行1次,相关操作执行完毕;S33-跳转至挂起任务调度程序代码地址处运行,即执行步骤挂起任务调度过程。
图6是本发明执行挂起任务调度过程的流程图,其步骤包括S41-将当前任务状态由运行状态修改为挂起状态,将当前的系统现场数据保存到当前任务的任务栈中;S42-扫描整个任务状态描述符数组,找到优先级最高、任务状态为就绪状态的任务;S43-判断是否存在符合条件的任务,若存在则执行步骤S44,若无则执行步骤S46;
S44-复制优先级最高的就绪任务的任务栈到当前现场,修改优先级最高的就绪任务状态为运行状态,跳转至该任务的当前代码地址运行,例如优先级最高的就绪任务为音频播放,则跳转至音频播放过程处执行,若优先级最高的就绪任务为图像浏览,则跳转至图像浏览过程处执行;S45-若没有找到符合条件的任务,则跳转至空闲任务的当前代码地址处运行,即执行空闲任务过程。
图7是本发明执行时钟中断服务过程的流程图,其步骤包括S51-时钟中断请求;S52-跳转至时钟任务调度程序代码地址处执行,即执行时钟调度过程。
本发明技术方案将不同的任务分解成不同的模块,由统一的调度程序来统一调度,降低了系统的故障率;且是在多个模块内执行单个功能,故降低了应用软件和模块的复杂程度;对于开发人员而言,该技术方案是将多个复杂任务分解为单个简单的任务,代码的编写将更为简单,故提高了开发效率。
上述技术方案通过采用任务栈,将不同任务的现场数据保存到不同的堆栈内,减少了任务之间的耦合程度,提高了系统的可靠性。
以上为本发明的一种实施方式,在实践中,使用者可以通过修改控制器单元固化软件内的程序自行定义各任务的优先级别以及任务的时钟节拍数;各任务的优先级别可以是从0向上逐渐升高,也可以是从其他数字至0逐渐降低,同样可以达到多种任务于音频播放装置上应用的实施效果。
权利要求
1.一种在媒体播放装置上实现多任务的方法,其包括以下步骤控制器单元的任务分解过程、定义优先级任务过程、创建任务描述符过程、初始化过程、时钟调度过程、执行任务过程、空闲任务过程、挂起任务调度过程、时钟中断任务过程。
2.如权利要求1所述的在媒体播放装置上实现多任务的方法,其特征在于上述定义优先级任务过程通过设置于控制器单元中的特定算法给各个任务设置优先级。
3.如权利要求2所述的在媒体播放装置上实现多任务的方法,其特征在于各任务的优先级别可以是从0向上逐渐升高,也可以是从其他数字至0逐渐降低。
4.如权利要求3所述的在媒体播放装置上实现多任务的方法,其特征在于使用者可以自行定义各任务的优先级别。
5.如权利要求1所述的在媒体播放装置上实现多任务的方法,其特征在于上述控制器单元的任务分解过程将不同的任务分解为不同的模块,由统一的调度程序来统一调度。
6.如权利要求1所述的在媒体播放装置上实现多任务的方法,其特征在于上述在媒体播放装置上实现多任务的方法采用任务栈,将不同任务的现场数据保存到不同的堆栈内。
全文摘要
本发明提出一种利用时间片轮转实现多种任务于媒体播放装置上应用的方法。该方法主要包括所述控制器单元的任务分解过程、定义优先级任务过程、创建任务描述符过程、初始化过程、时钟调度过程、执行任务过程、空闲任务过程、挂起任务调度过程、时钟中断任务过程。其中,多个任务按照设置于控制器单元中特定的算法在一定时间内运行,各个任务轮流占有CPU及其它系统资源并相互交替运行。由于在短时间内各个任务均被执行,故从使用者的角度看,则是各个任务在同一时间内运行,从而实现多种任务于媒体播放装置上的应用。
文档编号G06F9/00GK1940858SQ20051010004
公开日2007年4月4日 申请日期2005年9月26日 优先权日2005年9月26日
发明者刘一宁 申请人:深圳市朗科科技有限公司