ReWorks培训-核心功能分析

上传人:痛*** 文档编号:242496441 上传时间:2024-08-25 格式:PPTX 页数:47 大小:992.68KB
返回 下载 相关 举报
ReWorks培训-核心功能分析_第1页
第1页 / 共47页
ReWorks培训-核心功能分析_第2页
第2页 / 共47页
ReWorks培训-核心功能分析_第3页
第3页 / 共47页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,ReWorks,嵌入式应用开发,中国电子科技集团公司第三十二研究所,自主可控计算研究院,ReWorks,实时操作系统核心功能分析,4.ReWorks BSP,示例分析,2,培训大纲,5.ReWorks,核心功能介绍,2.ReDe,开发环境介绍,3.ReWorks BSP,开发,7.ReWorks,扩展功能介绍,9.ReWorks,示例分析与实验,1.ReWorks,实时操作系统概述,6.ReWorks,核心功能示例分析与实验,8.ReWorks,设备驱动开发,3,培训大纲,1.ReWorks,实时操作系统概述,2.ReWorks,核心功能分析,3.ReWorks,扩展功能分析,4.ReWorks,图形系统分析,5.ReWorks,板级支持包开发,8.ReWorks,综合实验,7.ReDe,开发环境功能分析,6.ReWorks,设备驱动开发,ReWorks,上层应用开发基础,ReWorks,底层驱动开发基础,4,2.ReWorks,核心功能分析,培训大纲,1.ReWorks,实时操作系统概述,3.ReWorks,扩展功能分析,4.ReWorks,图形系统分析,5.ReWorks,板级支持包开发,8.ReWorks,综合实验,7.ReDe,开发环境功能分析,6.ReWorks,设备驱动开发,ReWorks,上层应用开发基础,ReWorks,底层驱动开发基础,5,培训大纲,时钟,/,定时器管理,:,阐述,ReWorks,的系统时钟、时间、定时器等基本功能。,中断,/,异常管理,:,描述,ReWorks,对于外部事件的中断响应方式,以及对于,CPU,异常的处理机制。,多任务管理,:,讲述,ReWorks,中对于多任务的调度机制,以及任务间共享资源以及同步的手段。,内存管理:,叙述实时系统中对于内存的管理方法,包括对于硬件,MMU,的支持。,1,2,3,4,5,总结:,通过几个上机分组实验对培训内容进行归纳总结。,6,培训大纲,时钟,/,定时器管理,:,阐述,ReWorks,的系统时钟、时间、定时器等基本功能。,中断,/,异常管理,:,描述,ReWorks,对于外部事件的中断响应方式,以及对于,CPU,异常的处理机制。,多任务管理,:,讲述,ReWorks,中对于多任务的调度机制,以及任务间共享资源以及同步的手段。,内存管理:,叙述实时系统中对于内存的管理方法,包括对于硬件,MMU,的支持。,1,2,3,4,5,总结:,通过几个上机分组实验对培训内容进行归纳总结。,7,系统时钟,系统时钟是特定的周期性中断,该中断可以看做系统心脏的脉动,。,系统时钟提供计时功能,使内核可以将任务延时若干个整数时钟节拍,,以及当任务等待事件发生时,提供等待超时的依据。,ReWorks,中缺省的时钟频率为,100,次,/,秒;,高精度时戳接口,sys_timestamp(),返回当前的时戳数;,sys_timestamp_freq(),返回时戳频率。,由于不同,CPU,时钟频率的差异,在调用,thread_delay,等系统延时函数时,,函数的参数避免直接指定,tick,数,以保证等待的时间一致。,1.1,系统时钟,8,实时时钟,RTC,时间的设置和获取,实时时钟是硬件提供的管理系统日历时间的功能,,ReWorks,核心针对,系统日历时间的操作的标准接口有:,rtc_read,、,rtc_write,用户可以在这些,接口里实现具体的,RTC,功能,从而可以实现设置、获取及维护系统的日,历时间。,实时时钟,1.2,9,定时器通过定时器控制块管理,通过系统时钟的计时手段提供定时触发功能。,定时器状态转换图如下图所示:,1.3,定时器,定时器管理,10,辅助时钟,为了提供更高精度的定时功能,硬件可以提供辅助时钟。,主要接口函数,(,1,)创建定时器,int utimer_create(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,定时器管理,11,培训大纲,时钟,/,定时器管理,:,阐述,ReWorks,的系统时钟、时间、定时器等基本功能。,中断,/,异常管理,:,描述,ReWorks,对于外部事件的中断响应方式,以及对于,CPU,异常的处理机制。,多任务管理,:,讲述,ReWorks,中对于多任务的调度机制,以及任务间共享资源以及同步的手段。,内存管理:,叙述实时系统中对于内存的管理方法,包括对于硬件,MMU,的支持。,1,2,3,4,5,总结:,通过几个上机分组实验对培训内容进行归纳总结。,12,中断,/,异常管理,异常,是,CPU,所产生的非预料的事件,包括如:陷阱、中断指令、被零除、浮点指针或整数溢出、错误指令或地址错误。,中断,是一种硬件机制,用于通知,CPU,“,有异步事件发生”。中断机制使,CPU,在事件发生时进行处理,而不必连续查询是否有事件发生。,2.1,中断,/,异常概述,13,中断,/,异常管理,2.1,异常号,异常名称,异常号,异常名称,0,除零异常,6,无效指令异常,4,溢出异常,7,浮点异常,5,越界异常,14,非法地址异常,x86,常见异常号,系统出现异常时,,CPU,通常通过异常号来反映具体的异常信息。以,x86,为例,常见的异常号如下表所示:,14,中断是一种硬件机制,用于通,知,CPU“,有异步事件发生”。中断,机制使,CPU,在事件发生时进行处理,,而不必连续查询是否有事件发生。,ReWorks采用中断处理和任务,的关联机制,,使主体的中断处理任,务可,运行于用户空间。,2.1,外部事件响应,中断,/,异常管理,15,中断,/,异常管理,作为其,I/O,处理的一部分。,ISR,通常直接与一个或多个任务通信,这种通信的性质通常是驱使一个任务运行并处理中断条件。这类似于任务与任务的通信或同步。但有两点重要的差别。,首先,中断的优先级高于任务,即使,ISR,发送一条消息和唤醒一个高优先级的任务使其就绪,,ReWorks,内核仍然必须先返回到,ISR,,让,ISR,完成。,其次, ISR,通常是通信,/,同步源,它往往需要返回一个信号量,或者向任务发送一个消息或一个事件。,ISR,很少会是通信汇点,它不能等待消息或事件。,2.1,中断,/,异常概述,16,中断服务程序(,ISR,)注意事项,(,1,),ISR,代码,尽量短;,(,2,)不能调用引起系统阻塞的函数,如,semTake,、,malloc,、,printf,等;,(,3,)锁中断时间应尽量短,否则会引起中断丢失,;,(,4,)避免在,中断服务程序,中使用浮点指针操作,;,(,5,)可通过,logMsg(),或者轮询输出函数,printk,打印调试信息,;,(,6,)不同中断不要使用相同的优先级。,2.1,外部事件响应(续),中断,/,异常管理,17,培训大纲,时钟,/,定时器管理,:,阐述,ReWorks,的系统时钟、时间、定时器等基本功能。,中断,/,异常管理,:,描述,ReWorks,对于外部事件的中断响应方式,以及对于,CPU,异常的处理机制。,多任务管理,:,讲述,ReWorks,中对于多任务的调度机制,以及任务间共享资源以及同步的手段。,内存管理:,叙述实时系统中对于内存的管理方法,包括对于硬件,MMU,的支持。,1,2,3,4,5,总结:,通过几个上机分组实验对培训内容进行归纳总结。,18,任务管理,单任务系统,vs,多任务系统,以一款具有播放歌曲、阅读电子书功能的多媒体电子设备为例,单,任务系统中,两种功能只能顺序执行,不能同时进行;而多任务系统,中,阅读电子书的同时可以播放歌曲,两个任务可以同时进行。,3.1,单任务系统 多任务系统,概述,19,任务管理,实时操作系统中多任务的划分原则,:,(,1,),I/O,原则,:不同的外设执行不同任务,,CPU,的操作快于,I/O,操作,如果将,I/O,操作串行将会浪费,CPU,资源;,(,2,),优先级原则,:不同优先级处理不同的任务,对于突发事件的优先级等价于事件的时间耗尽线,不同优先级处理不同任务;,(,3,),大量运算,:归为一个任务;,(,4,),功能耦合,:归为一个任务;,(,5,),偶然耦合,:归为一个任务,举例:,f1,(),,,f2,(),,,f3,(),。早晨起床以后,刷牙、洗脸、吃早饭之间并没有必然的先后顺序,但由于习惯一直是按这个顺序做的;,(,6,),频率组合,:对于周期时间,不同任务处理不同的频率。,任务划分原则,3.1,20,任务管理,任务的组成,一个堆栈,用于程序执行时的局部变量存储和程序调用传送给程序的参数,一个,TCB,,用于操作系统控制,包括一个相关的名字、惟一的,ID,、优先级、信号掩码、堆栈、任务私有数据和相应的任务例程,这些信息都记录在由系统分配与维护的一个数据结构任务控制块中。,多个任务可以执行相同的应用执行代码,提供任务,创建,、,关闭,、,挂起,、,恢复,以及,获取任务信息,等操作接口;,任务状态,就绪、阻塞、运行、挂起、僵死,ReWorks,任务的优先级:,0255,,,0,最高,,255,最低。,系统缺省的调度方法:基于优先级调度,关闭轮转调度。,3.1,任务基本概念,21,3.1,ReWorks,系统任务,ReWorks,中的系统任务,任务名,任务描述,优先级,任务名,任务描述,优先级,wdg,看门狗,31,ntwk,网络,70,recycle,任务回收,32,shell,shell,80,log,日志,65,ftpd,ftp,95,exc,异常,66,init,初始化,100,telnet,telnet,75,idle,空闲,255,任务管理,22,3.1,ReWorks,中的任务类型,中断任务,ReWorks,任务,POSIX,任务,VxWorks,任务,优先级,031,32255,64254,64254,接口,ithread_create,ithread_close,uthread_create,uthread_close,uthread_lock,uthread_unlock,uthread_pri_set,uthread_pri_get,uthread_suspend,uthread_resume,uthread_is_suspended,uthread_self,uthread_id_verify,uthread_options_set,uthread_options_get,thread_name_to_id,thread_name,pthread_create,pthread_self,pthread_once,pthread_exit,pthread_join,pthread_kill,pthread_detach,pthread_equal,pthread_cancel,pthread_testcancel,pthread_setcancelstate,pthread_setcanceltype,pthread_setschedparam,pthread_getschedparam,pthread_cleanup_push,pthread_cleanup_pop,taskSpawn,,,sp,taskTcb,taskActivate,taskDelete,taskDeleteForce,taskLock,taskUnlock,taskPrioritySet,taskPriorityGet,taskSuspend, taskResume,taskSafe,taskUnsafe,taskDelay,Period,,,repeat,taskRestart,taskIsReady,taskIsSuspended,taskIdSelf,taskIdVerify,taskNameToId,taskName,任务管理,23,任务管理,ReWorks,内核缺省采用,基于优先级的抢占调度算法,可选择,时间片轮转法,以及,先进先出,算法调度相同优先级的任务;,基于优先级的抢占调度算法,指任何时刻都严格按照高优先级任务在处理器上运行的原则进行任务的调度;,3.1,基于优先级的抢占调度,基于优先级的抢占调度,24,任务管理,时间片轮转调度,:当,2,个或,2,个以上任务有同样的优先级时,内核允许一个任务运行一段确定的时间后,切换到另外一个就绪态的任务。,缺省系统关闭时间片轮转调度。,时间片轮转任务调度,时间片轮转调度,3.1,25,任务管理,任务在执行过程中发生同步上下文切换,任务自身发生阻塞、延时、挂起等状态变化,当启动一个高优先级任务时,减低当前任务的优先级,任务自行运行完毕,退出执行,当有中断发生时发生异步上下文切换,使得一个高优先级任务准备运行,挂起当前的任务或减低其优先级,任务切换点,3.1,26,任务管理,代码重入是指同一段代码可以被多个任务同时调用访问,重入代码内应该无全局变量以及静态变量,ReWorks,使用以下的机制来实现重入,动态堆栈变量,即局部变量,每个任务在自己的堆栈中进行操作,资源共享机制,可以实现对于全局变量以及静态变量的共享访问,主要包括锁中断、锁任务、互斥信号量等,任务变量,保存在任务的上下文中,每次上下文切换时保存变量值,代码重入,3.1,27,任务管理,每个任务使用一个全局整数来保存错误标识号,程序发生错误,可以设置相应错误号,每个错误号有定义的详细错误信息,可以通过查询错误号可以进行错误的定位和诊断,相关函数:,设置错误号,errno,_,Set,(),、获取错误号,errno_Get,(),、获取错误描述信息,strerror,用户自定义错误编码,任务错误号,3.1,28,任务管理,创建一个任务,,ReWorks,必须,分配堆栈和,TCB,存储空间,初始化堆栈和,TCB,初始化上下文,将任务放到就绪队列中,uthread_create,接口,u32uthread_create(char*name, void(*entry)(void*), void*argu, intstacksize, u32options, intpri);,任务创建,3.1,29,29,任务管理,任务创建,3.1,RE_FP_TASK,指任务支持浮点运算,,RE_NO_STACK_FILL,指创建任务堆栈时,任务堆栈不需要填写,0XEE,RE_NO_TIMESLICE,指任务不支持时间片调度。,30,实例描述:生产者,-,消费者问题,一群生产者任务在生产消息,并将此消息提供给消费者任务去消费。,为使生产者和消费者能并发执行,在它们之间设置一个具有,N,个缓冲区的缓冲池,生产者将生产的消息放入一个缓冲区,消费者从一个缓冲区取得一个消息消费。,所有的生产者和消费者任务都是以异步方式运行,但它们之间必须保持同步。,问题的提出,3.2,任务通信,31,当生产者任务将生产的消息放到缓冲区后,要及时通知消费者任务,消费消息,使得两个任务同步,实现同步的机制主要有:,信号量,:生产者通过获取和释放,二进制信号量,通知消费者任务消费消息。在多个任务需要同步情况下,可以通过,计数信号量,实现。,事件,:生产者任务将消息放入缓冲区后,发送特定,事件,,消费者任务接收到该事件后开始运行。,消息队列,:生产者任务将生产的消息放到指定消息队列中,消费者任务接收消息,实现任务同步。,同时,生产者任务和消费者任务都会访问存放消息的缓冲区,为了保,护缓冲区内容,只能让一个任务独占该资源,可以通过以下机制实现:,互斥信号量,:特殊的二进制信号量,它支持所有权、递归访问、任务删除安全和一个或多个协议,以避免互斥固有的问题。,解决方法,3.2,任务通信,32,任务通信,信号量是任务同步的最主要手段,在一定程度上亦可提供互斥功能。,ReWorks,下信号量被优化,是能够提供最快的任务间通信服务的机制。,信号量分类,二进制信号量:最快和常用的信号量,提供阻塞方式,用于实现同步或互斥;,计数信号量:类似于二进制信号量,记录信号量被释放的次数。适合于一个资源的多个实例需要保护的情况;,互斥信号量:互斥量是保护临界区资源、实现任务间互斥通信的主要手段。,保护临界区资源的主要措施,锁中断,锁任务,禁止任务调度,互斥信号量,信号量,3.2,33,任务通信,消息队列是应用动态创建的具有可变长度的缓冲区,。消息的长度和存储在其中的内容都是用户定义的,可以是实际的数据、指针或空。通过它,任务和,ISR,发送和接收消息,实现带数据的通信和同步。,消息队列是系统管理的机构。,队列允许任务传递可变长的消息。可使用队列进行几个同种资源的互斥访问。队列的长度相当于资源的数目,它决定了有多少个任务能够同时使用该资源。,消息队列,ReWorks,的消息队列,3.2,34,任务通信,reworks,内核提供一个特殊的寄存器作为每个任务控制块的一部分,,即事件(,event,)寄存器。它是一个属于任务的对象,并由一组跟踪指,定 事件值的二进制值事件标志组成。事件寄存器的长度为,32bit,,寄存器,中每一位作为二进制标志(事件标志),并可以被设置或 删除。,事件没有等待队列,每个事件只针对特定任务;,事件接口:,(,1,)发送事件,u32 event_send(u32 id, u32 event_in);,(,2,)接收事件,u32 event_recv( u32 event_in,u32 option_set,u32 ticks,u32 *event_out),;,事件,3.2,35,任务通信,编程实例,事件(续),事件(续),void task1(),/*,发送事件给指定任务*,/,event_send(task_id,OS_EVENT1);,void task2()/*,接收事件任务*,/,/*,接收指定事件*,/,event_recv(OS_EVENT1,OS_ANY_EVENT,NO_TIMEOUT,/*,如果接收到指定事件时,任,务进入就绪状态,否则,继续,等待*,/,3.2,36,任务通信,信号是所谓的,软件中断,,在系统里经由一些软件的执行而产生。例如,在,shell,中执行,ctrl-c,操作可以终止,shell,里某个操作的执行。,信号,3.2,37,37,1,、当任务处于阻塞状态时收到信号;,2,、任务离开阻塞队列,进入就绪队列,准备运行;,3,、当任务成为就绪队列中的最高优先级任务时,执行信号处理程序;,4,、信号处理程序执行完后,任务返回阻塞状态,保持原始超时信息不变。,信号处理流程,阻塞队列,就绪队列,运行事件处理程序,任务通信,3.2,38,任务通信,3.2,38,信号不适合于实现普通的任务间通信,信号处理程序的优先级太高,会阻塞其他任务的执行,打断了任务的正常执行顺序。最好创建两个任务,而不是在一个任务中通过信号控制,可能导致任务的重入问题:例如,运行信号服务程序的任务和运行正常代码的相同任务,可以用于告诉一个任务将其自身关闭,信号使用注意事项,39,培训大纲,时钟,/,定时器管理,:,阐述,ReWorks,的系统时钟、时间、定时器等基本功能。,中断,/,异常管理,:,描述,ReWorks,对于外部事件的中断响应方式,以及对于,CPU,异常的处理机制。,多任务管理,:,讲述,ReWorks,中对于多任务的调度机制,以及任务间共享资源以及同步的手段。,内存管理:,叙述实时系统中对于内存的管理方法,包括对于硬件,MMU,的支持。,1,2,3,4,5,总结:,通过几个上机分组实验对培训内容进行归纳总结。,40,ReWorks,内存地址分布结构,(x86),4.1,内存管理,41,MMU,内存管理,MMU,功能,MMU,将虚拟地址映射为物理地址,从而提供硬件机制的内存访问授权,增强系统内存访问的安全性和可靠性,.,ReWorks,的,MMU,功能,内存一一映射,页的访问控制,内存管理,4.1,42,cache,管理,cache,功能,缓存管理通过,CPU,相关缓存(指令,cache,、数据,cache,)和目标板相关缓存(体系结构相关),实现了常用数据的快速读写,从而提高程序的执行效率,.,cache,工作方式,write-through,:数据直接写入主存,再备份到,cache,copyback,:写操作只执行写到,cache,并不写到内存,只有存在写内存要求时才执行写内存。,ReWorks,的,cache,分类,指令,cache,数据,cache,内存管理,4.1,43,cache,主要接口,内存管理,4.1,44,内存分配释放接口,内存管理,4.1,45,培训大纲,时钟,/,定时器管理,:,阐述,ReWorks,的系统时钟、时间、定时器等基本功能。,中断,/,异常管理,:,描述,ReWorks,对于外部事件的中断响应方式,以及对于,CPU,异常的处理机制。,多任务管理,:,讲述,ReWorks,中对于多任务的调度机制,以及任务间共享资源以及同步的手段。,内存管理:,叙述实时系统中对于内存的管理方法,包括对于硬件,MMU,的支持。,1,2,3,4,5,总结:,通过几个上机分组实验对培训内容进行归纳总结。,46,培训内容归纳,知识点总结,1,3,2,4,嵌入式实时系统,嵌入式实时操作系统概念,ReWorks,核心功能,ReWorsk,应用部署,reworks,任务管理、中断,/,异常、时钟,/,定时器、信号量、消息队列、信号、事件、文件系统,/IO,、设备管理,reworks,引导、加载、固化、升级,嵌入式实时系统定义、特点、举例,嵌入式实时操作系统的主要作用,5.1,47,Thank You !,单位:中国电子科技集团第三十二研究所 自主可控计算研究院,地址:上海市徐汇区桂林路,418,号 邮编:,200233,电话:,021-64704678-7412,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!