




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ReWorks嵌入式应用开发中国电子科技集团公司第三十二研究所自主可控计算研究院ReWorks实时操作系统核心功能分析第1页,共48页。4.ReWorks BSP示例分析2培训大纲5.ReWorks核心功能介绍2.ReDe开发环境介绍3.ReWorks BSP开发7.ReWorks扩展功能介绍9.ReWorks示例分析与实验1.ReWorks实时操作系统概述6.ReWorks核心功能示例分析与实验8.ReWorks设备驱动开发第2页,共48页。3培训大纲1.ReWorks实时操作系统概述2.ReWorks核心功能分析3.ReWorks扩展功能分析4.ReWorks图形系统分析5.ReWorks
2、板级支持包开发8.ReWorks综合实验7.ReDe开发环境功能分析6.ReWorks设备驱动开发ReWorks上层应用开发基础ReWorks底层驱动开发基础第3页,共48页。42.ReWorks核心功能分析培训大纲1.ReWorks实时操作系统概述3.ReWorks扩展功能分析4.ReWorks图形系统分析5.ReWorks板级支持包开发8.ReWorks综合实验7.ReDe开发环境功能分析6.ReWorks设备驱动开发ReWorks上层应用开发基础ReWorks底层驱动开发基础第4页,共48页。5培训大纲时钟/定时器管理:阐述ReWorks的系统时钟、时间、定时器等基本功能。中断/异常管理
3、:描述ReWorks对于外部事件的中断响应方式,以及对于CPU异常的处理机制。多任务管理 :讲述ReWorks中对于多任务的调度机制,以及任务间共享资源以及同步的手段。内存管理: 叙述实时系统中对于内存的管理方法,包括对于硬件MMU的支持。12345总结: 通过几个上机分组实验对培训内容进行归纳总结。第5页,共48页。6培训大纲时钟/定时器管理:阐述ReWorks的系统时钟、时间、定时器等基本功能。中断/异常管理:描述ReWorks对于外部事件的中断响应方式,以及对于CPU异常的处理机制。多任务管理 :讲述ReWorks中对于多任务的调度机制,以及任务间共享资源以及同步的手段。内存管理: 叙述
4、实时系统中对于内存的管理方法,包括对于硬件MMU的支持。12345总结: 通过几个上机分组实验对培训内容进行归纳总结。第6页,共48页。7系统时钟系统时钟是特定的周期性中断,该中断可以看做系统心脏的脉动。系统时钟提供计时功能,使内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。ReWorks中缺省的时钟频率为100 次/秒; 高精度时戳接口 sys_timestamp() 返回当前的时戳数; sys_timestamp_freq() 返回时戳频率。由于不同CPU时钟频率的差异,在调用thread_delay等系统延时函数时,函数的参数避免直接指定tick数,以
5、保证等待的时间一致。1.1系统时钟第7页,共48页。8实时时钟RTC时间的设置和获取 实时时钟是硬件提供的管理系统日历时间的功能,ReWorks核心针对系统日历时间的操作的标准接口有:rtc_read、rtc_write, 用户可以在这些接口里实现具体的RTC功能,从而可以实现设置、获取及维护系统的日历时间。实时时钟1.2第8页,共48页。9定时器通过定时器控制块管理,通过系统时钟的计时手段提供定时触发功能。 定时器状态转换图如下图所示:1.3定时器定时器管理第9页,共48页。10辅助时钟 为了提供更高精度的定时功能,硬件可以提供辅助时钟。主要接口函数(1)创建定时器 int utimer_c
6、reate(u32 *id);(2)删除定时器 int utimer_delete(u32 id) ;(3)启动定时器 int utimer_start ( u32 id, int ticks, void (*func)(void *), void *arg );(4)取消定时器 int utimer_cancel (u32 id );定时器(续)1.3定时器管理第10页,共48页。11培训大纲时钟/定时器管理:阐述ReWorks的系统时钟、时间、定时器等基本功能。中断/异常管理:描述ReWorks对于外部事件的中断响应方式,以及对于CPU异常的处理机制。多任务管理 :讲述ReWorks中对于
7、多任务的调度机制,以及任务间共享资源以及同步的手段。内存管理: 叙述实时系统中对于内存的管理方法,包括对于硬件MMU的支持。12345总结: 通过几个上机分组实验对培训内容进行归纳总结。第11页,共48页。12中断/异常管理异常是CPU所产生的非预料的事件,包括如:陷阱、中断指令、被零除、浮点指针或整数溢出、错误指令或地址错误。中断是一种硬件机制,用于通知CPU“有异步事件发生”。中断机制使CPU在事件发生时进行处理,而不必连续查询是否有事件发生。2.1中断/异常概述第12页,共48页。13中断/异常管理2.1异常号异常名称异常号异常名称0除零异常6无效指令异常4溢出异常7浮点异常5越界异常1
8、4非法地址异常x86常见异常号系统出现异常时,CPU通常通过异常号来反映具体的异常信息。以x86为例,常见的异常号如下表所示:第13页,共48页。14中断是一种硬件机制,用于通知CPU“有异步事件发生”。中断机制使CPU在事件发生时进行处理,而不必连续查询是否有事件发生。ReWorks采用中断处理和任务的关联机制,使主体的中断处理任务可运行于用户空间。2.1外部事件响应中断/异常管理第14页,共48页。15中断/异常管理作为其I/O处理的一部分。ISR 通常直接与一个或多个任务通信,这种通信的性质通常是驱使一个任务运行并处理中断条件。这类似于任务与任务的通信或同步。但有两点重要的差别。首先,中
9、断的优先级高于任务,即使ISR 发送一条消息和唤醒一个高优先级的任务使其就绪,ReWorks内核仍然必须先返回到ISR,让ISR完成。其次, ISR 通常是通信/同步源,它往往需要返回一个信号量,或者向任务发送一个消息或一个事件。ISR 很少会是通信汇点,它不能等待消息或事件。2.1中断/异常概述第15页,共48页。16中断服务程序(ISR)注意事项(1)ISR代码尽量短;(2)不能调用引起系统阻塞的函数,如semTake、malloc、printf等;(3)锁中断时间应尽量短,否则会引起中断丢失;(4)避免在中断服务程序中使用浮点指针操作;(5)可通过logMsg()或者轮询输出函数prin
10、tk打印调试信息;(6)不同中断不要使用相同的优先级。2.1外部事件响应(续)中断/异常管理第16页,共48页。17培训大纲时钟/定时器管理:阐述ReWorks的系统时钟、时间、定时器等基本功能。中断/异常管理:描述ReWorks对于外部事件的中断响应方式,以及对于CPU异常的处理机制。多任务管理 :讲述ReWorks中对于多任务的调度机制,以及任务间共享资源以及同步的手段。内存管理: 叙述实时系统中对于内存的管理方法,包括对于硬件MMU的支持。12345总结: 通过几个上机分组实验对培训内容进行归纳总结。第17页,共48页。18任务管理单任务系统vs多任务系统 以一款具有播放歌曲、阅读电子书
11、功能的多媒体电子设备为例,单任务系统中,两种功能只能顺序执行,不能同时进行;而多任务系统中,阅读电子书的同时可以播放歌曲,两个任务可以同时进行。3.1 单任务系统 多任务系统概述第18页,共48页。19任务管理实时操作系统中多任务的划分原则:(1)I/O原则:不同的外设执行不同任务,CPU的操作快于I/O操作,如果将I/O操作串行将会浪费CPU资源;(2)优先级原则:不同优先级处理不同的任务,对于突发事件的优先级等价于事件的时间耗尽线,不同优先级处理不同任务;(3)大量运算:归为一个任务; (4)功能耦合:归为一个任务;(5)偶然耦合:归为一个任务,举例:f1(),f2(),f3()。早晨起床
12、以后,刷牙、洗脸、吃早饭之间并没有必然的先后顺序,但由于习惯一直是按这个顺序做的;(6)频率组合:对于周期时间,不同任务处理不同的频率。 任务划分原则3.1第19页,共48页。20任务管理任务的组成 一个堆栈,用于程序执行时的局部变量存储和程序调用传送给程序的参数 一个TCB,用于操作系统控制,包括一个相关的名字、惟一的ID、优先级、信号掩码、堆栈、任务私有数据和相应的任务例程,这些信息都记录在由系统分配与维护的一个数据结构任务控制块中。 多个任务可以执行相同的应用执行代码提供任务创建、关闭、挂起、恢复以及获取任务信息等操作接口;任务状态 就绪、阻塞、运行、挂起、僵死ReWorks任务的优先级
13、:0255,0 最高,255最低。系统缺省的调度方法:基于优先级调度,关闭轮转调度。3.1任务基本概念第20页,共48页。213.1ReWorks系统任务ReWorks中的系统任务 任务名任务描述优先级任务名任务描述优先级wdg看门狗31ntwk网络70recycle任务回收32shellshell80log日志65ftpdftp95exc异常66init初始化100telnettelnet75idle空闲255任务管理第21页,共48页。223.1ReWorks中的任务类型中断任务ReWorks任务POSIX任务VxWorks任务优先级031322556425464254接口ithread_
14、createithread_closeuthread_create,uthread_closeuthread_lock,uthread_unlockuthread_pri_setuthread_pri_getuthread_suspenduthread_resumeuthread_is_suspendeduthread_selfuthread_id_verifyuthread_options_setuthread_options_getthread_name_to_idthread_name pthread_createpthread_selfpthread_once,pthread_exit
15、pthread_join,pthread_killpthread_detachpthread_equalpthread_cancelpthread_testcancelpthread_setcancelstatepthread_setcanceltypepthread_setschedparampthread_getschedparampthread_cleanup_pushpthread_cleanup_poptaskSpawn,sptaskTcb,taskActivatetaskDelete,taskDeleteForcetaskLock,taskUnlocktaskPrioritySet
16、,taskPriorityGettaskSuspend, taskResumetaskSafe,taskUnsafetaskDelayPeriod,repeattaskRestart,taskIsReadytaskIsSuspendedtaskIdSelf,taskIdVerifytaskNameToId,taskName任务管理第22页,共48页。23任务管理ReWorks内核缺省采用基于优先级的抢占调度算法可选择时间片轮转法以及先进先出算法调度相同优先级的任务;基于优先级的抢占调度算法指任何时刻都严格按照高优先级任务在处理器上运行的原则进行任务的调度;3.1基于优先级的抢占调度 基于优先级
17、的抢占调度第23页,共48页。24任务管理时间片轮转调度:当2个或2个以上任务有同样的优先级时,内核允许一个任务运行一段确定的时间后,切换到另外一个就绪态的任务。缺省系统关闭时间片轮转调度。时间片轮转任务调度 时间片轮转调度3.1第24页,共48页。25任务管理任务在执行过程中发生同步上下文切换任务自身发生阻塞、延时、挂起等状态变化当启动一个高优先级任务时减低当前任务的优先级任务自行运行完毕,退出执行当有中断发生时发生异步上下文切换使得一个高优先级任务准备运行挂起当前的任务或减低其优先级任务切换点3.1第25页,共48页。26任务管理代码重入是指同一段代码可以被多个任务同时调用访问重入代码内应
18、该无全局变量以及静态变量ReWorks使用以下的机制来实现重入动态堆栈变量,即局部变量,每个任务在自己的堆栈中进行操作资源共享机制,可以实现对于全局变量以及静态变量的共享访问,主要包括锁中断、锁任务、互斥信号量等任务变量,保存在任务的上下文中,每次上下文切换时保存变量值代码重入3.1第26页,共48页。27任务管理每个任务使用一个全局整数来保存错误标识号程序发生错误,可以设置相应错误号每个错误号有定义的详细错误信息可以通过查询错误号可以进行错误的定位和诊断相关函数:设置错误号errno_Set()、获取错误号errno_Get()、获取错误描述信息strerror用户自定义错误编码任务错误号3
19、.1第27页,共48页。28任务管理创建一个任务,ReWorks必须分配堆栈和TCB存储空间初始化堆栈和TCB初始化上下文,将任务放到就绪队列中uthread_create接口 u32uthread_create(char*name, void(*entry)(void*), void*argu, intstacksize, u32options, intpri);任务创建3.1第28页,共48页。2929任务管理任务创建3.1RE_FP_TASK指任务支持浮点运算,RE_NO_STACK_FILL指创建任务堆栈时,任务堆栈不需要填写0XEE,RE_NO_TIMESLICE指任务不支持时间片调
20、度。第29页,共48页。30实例描述:生产者-消费者问题一群生产者任务在生产消息,并将此消息提供给消费者任务去消费。为使生产者和消费者能并发执行,在它们之间设置一个具有N个缓冲区的缓冲池,生产者将生产的消息放入一个缓冲区,消费者从一个缓冲区取得一个消息消费。所有的生产者和消费者任务都是以异步方式运行,但它们之间必须保持同步。问题的提出3.2任务通信第30页,共48页。31 当生产者任务将生产的消息放到缓冲区后,要及时通知消费者任务消费消息,使得两个任务同步,实现同步的机制主要有:信号量:生产者通过获取和释放二进制信号量通知消费者任务消费消息。在多个任务需要同步情况下,可以通过计数信号量实现。事
21、件:生产者任务将消息放入缓冲区后,发送特定事件,消费者任务接收到该事件后开始运行。消息队列:生产者任务将生产的消息放到指定消息队列中,消费者任务接收消息,实现任务同步。 同时,生产者任务和消费者任务都会访问存放消息的缓冲区,为了保护缓冲区内容,只能让一个任务独占该资源,可以通过以下机制实现:互斥信号量:特殊的二进制信号量,它支持所有权、递归访问、任务删除安全和一个或多个协议,以避免互斥固有的问题。解决方法3.2任务通信第31页,共48页。32任务通信信号量是任务同步的最主要手段,在一定程度上亦可提供互斥功能。ReWorks下信号量被优化,是能够提供最快的任务间通信服务的机制。信号量分类二进制信
22、号量:最快和常用的信号量,提供阻塞方式,用于实现同步或互斥;计数信号量:类似于二进制信号量,记录信号量被释放的次数。适合于一个资源的多个实例需要保护的情况;互斥信号量:互斥量是保护临界区资源、实现任务间互斥通信的主要手段。保护临界区资源的主要措施锁中断锁任务,禁止任务调度互斥信号量信号量3.2第32页,共48页。33任务通信消息队列是应用动态创建的具有可变长度的缓冲区。消息的长度和存储在其中的内容都是用户定义的,可以是实际的数据、指针或空。通过它,任务和ISR发送和接收消息,实现带数据的通信和同步。消息队列是系统管理的机构。队列允许任务传递可变长的消息。可使用队列进行几个同种资源的互斥访问。队
23、列的长度相当于资源的数目,它决定了有多少个任务能够同时使用该资源。消息队列ReWorks的消息队列3.2第33页,共48页。34任务通信reworks内核提供一个特殊的寄存器作为每个任务控制块的一部分,即事件(event)寄存器。它是一个属于任务的对象,并由一组跟踪指定 事件值的二进制值事件标志组成。事件寄存器的长度为32bit,寄存器中每一位作为二进制标志(事件标志),并可以被设置或 删除。事件没有等待队列,每个事件只针对特定任务;事件接口:(1)发送事件 u32 event_send(u32 id, u32 event_in);(2)接收事件 u32 event_recv( u32 eve
24、nt_in,u32 option_set,u32 ticks,u32 *event_out);事件3.2第34页,共48页。35任务通信编程实例事件(续)事件(续)void task1() /*发送事件给指定任务*/event_send(task_id,OS_EVENT1);void task2()/*接收事件任务*/ /*接收指定事件*/event_recv(OS_EVENT1,OS_ANY_EVENT,NO_TIMEOUT,&events);/*如果接收到指定事件时,任务进入就绪状态,否则,继续等待*/3.2第35页,共48页。36任务通信信号是所谓的软件中断,在系统里经由一些软件的执行而
25、产生。例如,在shell中执行ctrl-c操作可以终止shell里某个操作的执行。信号3.2第36页,共48页。37371、当任务处于阻塞状态时收到信号;2、任务离开阻塞队列,进入就绪队列,准备运行;3、当任务成为就绪队列中的最高优先级任务时,执行信号处理程序;4、信号处理程序执行完后,任务返回阻塞状态,保持原始超时信息不变。信号处理流程阻塞队列就绪队列运行事件处理程序任务通信3.2第37页,共48页。38任务通信3.238信号不适合于实现普通的任务间通信信号处理程序的优先级太高,会阻塞其他任务的执行打断了任务的正常执行顺序。最好创建两个任务,而不是在一个任务中通过信号控制可能导致任务的重入问
26、题:例如,运行信号服务程序的任务和运行正常代码的相同任务可以用于告诉一个任务将其自身关闭信号使用注意事项第38页,共48页。39培训大纲时钟/定时器管理:阐述ReWorks的系统时钟、时间、定时器等基本功能。中断/异常管理:描述ReWorks对于外部事件的中断响应方式,以及对于CPU异常的处理机制。多任务管理 :讲述ReWorks中对于多任务的调度机制,以及任务间共享资源以及同步的手段。内存管理: 叙述实时系统中对于内存的管理方法,包括对于硬件MMU的支持。12345总结: 通过几个上机分组实验对培训内容进行归纳总结。第39页,共48页。40ReWorks内存地址分布结构(x86)4.1内存管理第40页,共48页。41MMU内存管理 MMU功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年碳纤维细编穿刺织物项目建议书
- 悬挑式脚手架荷载计算常用数据、材料力学特征、轴心受压构件的稳定系数、质量验收表、节点构造示意详图
- 2024年SCMP考试综合总结与试题及答案
- 仓储行政管理与协调能力试题及答案
- 生物技术在农业发展的应用试题及答案
- 应对CPMM挑战的策略与试题及答案
- 保洁人员疫情防控课件
- 陕西道路顶管施工方案
- 保护牙齿防龋齿课件
- 2025年不锈钢焊接管项目合作计划书
- 2024年黑龙江省哈尔滨市中考化学试卷(附答案)
- 电脑产品定价策略研究报告
- 2024安全生产法律法规知识培训
- 《健康住宅评价标准》
- 资源安全课件教学课件
- 占道施工安全培训
- 露天矿山开采施工组织方案
- 证券分析(第6版)上部
- 2024年中级电工考前必刷必练题库500题(含真题、必会题)
- DB11T 527-2021 配电室安全管理规范
- 学校校园安全隐患排查手册
评论
0/150
提交评论