RKOS操作系统V0.91.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RKOS 操作系统 RKOS是Rockchip公司自主研发的一个实时抢占性多任务操作系统,主要支持信号量和消息(邮箱)两种通信方式。本文叙述的一些概念,和通用操作系统中的概念有所差异,因此涉及到RKOS上的众多概念时,以本文为依据。本文专题论述RK27平台操作系统部分,系统软件的其他模块在其他文档中描述。 RKOS中的任务(Task),线程(Thread)和应用模块(App) 任务的基本概念 RKOS的任务是一个具有独立堆栈的无限循环函数,每个任务都可以被内核或中断强占,一个任务可以不依赖其他任务单独运行。RKOS中任务的概念和通用操作系统一致. RKOS中具有五个基本任务:PriHighTask,PriMHighTask,PriNormalTask,PriLowTask和TimerTask,参与任务切换的还包括中断程序和IDLE任务,一个优先级只对应一个任务,这些任务均由内核启动时静态创建。所有任务一直驻留在内存之中,优先级不发生动态变化(优先级反转除外)。 一般地,用户不新创建任务。 如下图所示是一个基本任务: 用户在开发应用程序时,只需要了解优先级,基本不需要关心任务的运行。任务的基本状态见下图: 线程(Thread)的定义 RKOS的线程是包含在某个任务之内的一个可独立处理消息的程序,一个任务可以包含有多个线程。线程没有独立的堆栈,RKOS线程具有如下特性 ◆ 同一个任务内的所有线程共用该任务的堆栈。 ◆ 同一个任务内的所有线程按照注册次序顺序执行(串行),没有调度关系。 ◆ 不同任务内的线程并行执行。 ◆ 一个任务内的某个线程若一直等待一个条件,则此任务内的其他线程都得不到执行,但其他任务内的线程可以得到执行。 线程有少数几个是系统初始化时自建的,如GUI线程和刷屏线程,始终驻留在系统之中,用户的需要用到时,不需要再建立,只需要将代码嵌入在其中即可,如GUI系统。 使用RockAppCreateThread动态注册一个线程(关联到一个应用程序)。注册时给出线程名和所属任务的优先级,若注册成功,返回一个线程句柄。注销时只需要提供线程句柄。 创建线程的函数接口如下图, 下列两个接口获取到应用的handle ProcGetCurrentProc ——获取当前应用的handle ProcGetProcGuid ——通过GUID获取到应用的hanle 应用程序(App)的定义 RKOS上的应用程序是指一个独立完整的软件模块,成为应用程序或应用模块,如音频播放器、视频播放器、资源管理器、电子书、录象机、录音机、游戏等等。 应用程序设计时,根据自身需要,首先应确定本应用模块中有多少件事情需要并行完成,按照有限等级每一件事情创建一个线程,假设应用程序没有需要并行完成的事情,则该应用程序只需要一个线程(单线程的应用),因此一个应用程序至少包含一个线程,也可以有多个线程,按照优先级进行区分。 多个应用程序静态地存在于外存(如nand)之中,当需要启动某个应用时,由系统的Application Manager(桌面模块)进行动态加载管理。执行Load/Unload的操作。此部分程序由系统自动完成,用户不需要关心。 一般地,创建线程时,总是和某个应用程序进行关联,即一个线程属于一个应用程序时,不使用上述RockCreateThread方法创建,而使用RKProcSetMsgHandle或RockAppCreateThread(ProcHandle,thread,TaskPrio) 创建(见rk27.c)其意义是:在优先级为TaskPrio的任务中创建线程thread,该线程属于应用模块ProcHandle的一部分。当应用模块ProcHandle关闭时,关联在其上的所有线程将被系统自动关闭。 任务、线程和应用程序的关系 任务是RKOS操作系统内核调度的唯一元素和基本单位,线程和应用程序不参加内核调度,应用程序只参与应用程序载入载出管理(Overlay)的调度。同一时刻,整个软件系统中可能同时有多个任务、多个应用的多个线程同时存在,因此在设计应用模块时应充分考虑相互之间可能存在的各种复杂的关系。 任务、线程和应用程序总体的关系如下图 图:RKOS中任务、线程和应用程序的关系 例如,假设音频播放器模块在设计时,有三件事情需要并行处理,即音频解码、UI控制和刷屏,则需要三个线程(A2X, B3X D1X),其中解码线程在音频播放器模块加载时动态创建,由中断触发,中断服务程序ISR向解码线程所在的任务发送解码消息,UI控制作为GUI线程运行在另一个任务中,刷屏线程作为dispthread运行在另一个任务中。由于刷屏线程和GUI线程在系统初始化时即已建立,因此不需要用户进行动态创建。音频播放器中各线程按照优先级排列如下: 中断请求

文档评论(0)

feiyang66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档