第三讲嵌入式实操时作系统文档资料

上传人:M****1 文档编号:567673357 上传时间:2024-07-22 格式:PPT 页数:81 大小:2.37MB
返回 下载 相关 举报
第三讲嵌入式实操时作系统文档资料_第1页
第1页 / 共81页
第三讲嵌入式实操时作系统文档资料_第2页
第2页 / 共81页
第三讲嵌入式实操时作系统文档资料_第3页
第3页 / 共81页
第三讲嵌入式实操时作系统文档资料_第4页
第4页 / 共81页
第三讲嵌入式实操时作系统文档资料_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《第三讲嵌入式实操时作系统文档资料》由会员分享,可在线阅读,更多相关《第三讲嵌入式实操时作系统文档资料(81页珍藏版)》请在金锄头文库上搜索。

1、1嵌入式操作系统嵌入式操作系统第三讲第三讲 嵌入式实时操作系统嵌入式实时操作系统Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.2一、嵌入式实时操作系统一、嵌入式实时操作系统 C/OS二、嵌入式二、嵌入式Linux三、三、WinCE第三讲、嵌入式实时操作系统分析第三讲、嵌入式实时操作系统分析Evaluation only.Created with Aspose.Slides for .NET 3.5 Client P

2、rofile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.3本节提要本节提要1 1 1 13 3 3 32 2 2 2嵌入式实时操作系统嵌入式实时操作系统 C/OS嵌入式嵌入式LinuxWinCEEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.4一、一、嵌入式实时操作系统嵌入式实时操作系统 C/OSC/OSl C/OSC/OS简介简介l内核结构任务以及调度机制内核结构任务以及

3、调度机制l C/OSC/OS的移植的移植Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.5 C/OSC/OS简介简介1 1、 C/OSC/OSmicro C O S,微控制微控制器操作系统器操作系统2 2、 C/OSC/OS简介l美国人美国人Jean Labrosse 1992年完成年完成l应应用用面面覆覆盖盖了了诸诸多多领领域域,如如照照相相机机、医医疗疗器器械械、音音响响设设备备、发发动动机机控控制制、高高速速公

4、公路路电电话话系系统统、自自动动提提款机等款机等 l1998年年 C/OSC/OS IIl网站网站 www.ucos-Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.6u公开源代码u可移植性(Portable) 绝绝大大部部分分 C/OS-IIC/OS-II的的源源码码是是用用移移植植性性很很强强的的ANSI ANSI C C写写的的。和和微微处处理理器器硬硬件件相相关关的的那那部部分分是是用用汇汇编编语语言言写写的

5、的。 C/OS-IIC/OS-II可可以以在在绝绝大大多多数数8 8位位、1616位位、3232位位以以至至6464位位微微处处理理器器、微微控控制制器器 、数数字字信信号号处处理理器器(DSPDSP)上运行。上运行。u可裁剪(Scalable) 可可以以只只使使用用 C/OS-IIC/OS-II中中应应用用程程序序需需要要的的那那些些系系统统服服务务,这这样样可可以以减减少少产产品品中中的的 C/OS-IIC/OS-II所所需需的的存存储储器器空空间间(RAMRAM和和ROMROM)。这这种种可可剪剪裁裁性性是是靠靠条条件件编编译译实实现的。现的。 C/OS的性能特点的性能特点Evaluat

6、ion only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.7u占先式(Preemptive)u多任务 C/OS-IIC/OS-II可可以以管管理理6464个个任任务务,然然而而,目目前前这这一一版版本本保保留留8 8个给系统。应用程序最多可以有个给系统。应用程序最多可以有5656个任务。个任务。u可确定性 全全部部 C/OS-IIC/OS-II的的函函数数调调用用与与服服务务的的执执行行时时间间具具有有可可确确定性。定性。u任务栈 每每个个

7、任任务务有有自自己己单单独独的的栈栈, C/OS-IIC/OS-II允允许许每每个个任任务务有有不同的栈空间,以便压低应用程序对不同的栈空间,以便压低应用程序对RAMRAM的需求。的需求。 C/OS的性能特点的性能特点Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.8u系统服务 C/OS-IIC/OS-II提提供供很很多多系系统统服服务务,例例如如邮邮箱箱、消消息息队队列列、信信号号量量、块块大大小小固固定定的的内内

8、存存的的申申请请与与释释放放、时时间间相相关关函数等。函数等。u中断管理 中中断断可可以以使使正正在在执执行行的的任任务务暂暂时时挂挂起起,如如果果优优先先级级更更高高的的任任务务被被该该中中断断唤唤醒醒,则则高高优优先先级级的的任任务务在在中中断断嵌嵌套全部退出后立即执行,套全部退出后立即执行,中断嵌套中断嵌套层数可达层数可达255255层。层。u稳定性与可靠性 C/OS的性能特点的性能特点Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Asp

9、ose Pty Ltd.9l内核结构内核结构l任务管理任务管理l时间管理时间管理l任务之间通信与同步任务之间通信与同步 C/OS的内核结构的内核结构Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.10任务任务task典型的一个无限循环。典型的一个无限循环。voidmytask(void*pdata)for(;)dosomething;waiting;dosomething;l C/OSC/OS II 2.5版版本本支

10、支持持64个个任任务务,每每个个任任务务一一个个特特定定的的优优先先级级。优优先先级级越越高高,数字越小。(数字越小。(Windows、Linux?)?)l系系统统占占用用了了8个个任任务务,保保留留优优先先级级为为0、1、2、3、OS_LOWEST_PRIO-3、 OS_LOWEST_PRIO-2、 OS_LOWEST_ PRIO-1、 OS_LOWEST_PRIO-0 。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty L

11、td.11建立任务建立任务lOS TaskCreate()lOSTaskCreateExtended()Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.12INT8U OSTaskCreate (void (*task)(void *pd), INT8U OSTaskCreate (void (*task)(void *pd), void *p_arg, void *p_arg, OS_STK *ptos, OS_S

12、TK *ptos, INT8U prio)INT8U prio)INT8U INT8U OSTaskCreateExt OSTaskCreateExt (void (void (*task)(void (*task)(void *pd),*pd), void *p_arg, void *p_arg, OS_STK *ptos, OS_STK *ptos, INT8U prio, INT8U prio, INT16U id, INT16U id, OS_STK *pbos, OS_STK *pbos, INT32U stk_size, INT32U stk_size, void *pext, v

13、oid *pext, INT16U opt) INT16U opt)进程函数体进程函数体传递给进程的参数传递给进程的参数进程栈顶指针进程栈顶指针进程优先级进程优先级进程进程ID号号进程栈底指针进程栈底指针进程栈大小进程栈大小传传递递给给进进程程控控制制块块的数据的数据是否初始化进程栈是否初始化进程栈Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.13任务状态任务状态Evaluation only.Created wi

14、th Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.14任任务控制块(务控制块(TCB)l任任务务控控制制块块 OS_TCB是是一一个个数数据据结结构构,保保存存该该任任务务的的相相关关参参数数,包包括括任任务务堆堆栈栈指指针针,状状态态,优优先先级级,任任务务表表位位置置,任务链表指针等。任务链表指针等。l所有的任务控制块分为两条链表,所有的任务控制块分为两条链表,空闲链表空闲链表和和使用链表使用链表。Evaluation only.Created with Aspos

15、e.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.15任务控制块结构任务控制块结构lStruct os_tcb OS_STK *OSTCBStkPtr; struct os_tcb *OSTCBNext; struct os_tcb *OSTCBprev; OS_EVENT *OSTCBEventPtr; void *OSTCBMsg; INT16U OSTCBDly; INT8U OSTCBStat; INT8U OSTCBPrio; INT8U OSTCBX, OSTCBY, OS

16、TCBBitX, OSTCBBitY; OS_TCB加速任务进入就绪态的过程事件控制块的指针任务的状态字Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.16空任务列表空任务列表系统初始化时,所有任务控制块被链接成空任务控制块的单向链表系统初始化时,所有任务控制块被链接成空任务控制块的单向链表Evaluation only.Created with Aspose.Slides for .NET 3.5 Client P

17、rofile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.17任务的调度任务的调度-OSSchedl C/OS是是占占先先式式实实时时多多任任务务内内核核,优优先先级级最最高高的的任任务务一旦准备就绪,则拥有一旦准备就绪,则拥有CPU所有权并投入运行。所有权并投入运行。l C/OS中中不不支支持持时时间间片片轮轮转转法法,每每个个任任务务的的优优先先级级不不一一样样且且是是唯唯一一的的,所所以以任任务务调调度度的的工工作作就就是是:查查找找准准备就绪的备就绪的最高优先级最高优先级的任务并进行上下文切换。的任务并进行上下文切换。l将被挂起的任务寄存器将被

18、挂起的任务寄存器入栈入栈l将较高优先级任务的寄存器将较高优先级任务的寄存器出栈出栈lPC指针指针跳转到新的位置开始执行跳转到新的位置开始执行l C/OS任任务务调调度度所所花花的的时时间间为为常常数数,与与应应用用程程序序中中建建立的任务数无关。(立的任务数无关。(Linux?)?)Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.18检查是否中断调用和允许任务调用找到优先级最高的任务该任务是否正在运行Evaluati

19、on only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.19根据优先级找到任务在就绪任务表中的位置根据优先级找到任务在就绪任务表中的位置每个任务的就绪状态标志都标入就绪表中(每个任务的就绪状态标志都标入就绪表中(ready list)中,就绪表有)中,就绪表有两个变量:两个变量:DORdyGrp、OSRdyTblEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Pr

20、ofile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.20根据优先级确定就绪表根据优先级确定就绪表l假假设设优优先先级级为为12的的任任务务进进入入就就绪绪状状态态,12=1 100b,则则OSRdyTbl1的的第第4位位置置1,且且OSRdyGrp的的第第1位位置置1,相相应的数学表达式为应的数学表达式为:OSRdyGrp|=0x02;OSRdyTbl1|=0x10;l而而优优先先级级为为21的的任任务务就就绪绪21=10101b,则则OSRdyTbl2的的第第5位置位置1,且,且OSRdyGrp的第的第2位置位置1,相应的数学表达式为:相应的数学

21、表达式为:OSRdyGrp|=0x04;OSRdyTbl2|=0x20;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.21根据优先级确定就绪表根据优先级确定就绪表l从从上上面面的的计计算算我我们们可可以以得得到到:若若第第n位位置置1,则则应应该该与与2n相相或或。uC/OS中中 , 把把 2n的的 n=0-7的的 8个个 值值先先 计计 算算 好好 存存 在在 数数 组组OSMapTbl7中中,也就是:也就是:O

22、SMapTbl0=20=0x1;OSMapTbl1=21=0x2; OSMapTbl7=27=0x80;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.22根据优先级确定就绪表根据优先级确定就绪表l利利用用OSMapTbl,通通过过任任务务的的识识别别号号优优先先级级prio来来设设置置任任务务在在就就绪组和就绪表数组中相应位置的数学式为:绪组和就绪表数组中相应位置的数学式为:OSRdyGrp|=OSMapTblpr

23、io3;OSRdyTblprio3|=OSMapTblprio&0x07;假设优先级为假设优先级为12,1100bOSRdyGrp|=0x02;OSRdyTbl1|=0x10;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.23根据就绪表确定最高优先级根据就绪表确定最高优先级两个关键两个关键:l优先级数分解为高三位和低三位优先级数分解为高三位和低三位分别确定;分别确定;l高优先级有高优先级有着小的优先级号着小的优先级

24、号 ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.24根据就绪表确定最高优先级根据就绪表确定最高优先级l通过通过OSRdyGrp值确定值确定高高3位位, 假假 设设 为为 0x24=100 100b, OSRdyTbl2 和和OSRdyTbl5,高优先级为第,高优先级为第2组组l通过通过OSRdyTbl2的值来确定的值来确定低低3位位, 假假设设为为0x12=010010b ,第第1个个和和第第4个个任任务务,取

25、取高高优先级第优先级第1个个 prio=17Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.25源代码中使用了查表法源代码中使用了查表法查查表表法法具具有有确确定定的的时时间间,增增加加了了系系统统的的可可预预测测性性,uC/OS中中所所有的系统调用时间都是确定的:有的系统调用时间都是确定的:lHigh3=OSUnMapTblOSRdyGrp;lLow3=OSUnMapTblOSRdyTblHigh3;lPrio=(

26、Hign33)+Low3;?为什么频繁的使用查表法?为什么频繁的使用查表法?请问?请问OSUnMapTbl的来历;的来历;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.26INT8U const OSUnMapTbl = 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5,

27、 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2,

28、 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3,

29、 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.27任务间通信手段任务间通信手段 C/OS中,采用多种方法保护任务之间的共享数据和提供任务之中,采用多种方法保护任务之间的共享数据和提供任务之间的通信。间的通信。l提供提供OS_ENTER_CRITICAL和和OS_EXIT_CRIT

30、ICAL来对来对临界资临界资源源进行保护进行保护lOSSchedLock( )禁止调度禁止调度保护任务级的共享资源。保护任务级的共享资源。l提供了经典操作系统任务间通信方法:提供了经典操作系统任务间通信方法:信号量信号量、邮箱邮箱、消息队列消息队列,事件标志事件标志。 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.28事件控制块事件控制块ECBl所所有有的的通通信信信信号号都都被被看看成成是是事事件件(event)

31、,一一个个称称为为事事件件控控制制块块(ECB,EventControlBlock)的的数数据据结结构构来来表表征征每每一一个个具具体体事事件件,ECB的的结结构构如下:如下:typedefstructvoid*OSEventPtr;/*指向消息或消息队列的指针指向消息或消息队列的指针*/INT8UOSEventTblOS_EVENT_TBL_SIZE;/*等待任务列表等待任务列表*/INT16UOSEventCnt;/*计数器(当事件是信号量时)计数器(当事件是信号量时)*/INT8UOSEventType;/*事件类型:信号量、邮箱等事件类型:信号量、邮箱等*/INT8UOSEventGr

32、p;/*等待任务组等待任务组*/OS_EVENT;与与TCB类似的结构,使用两个链表,空闲链表与使用链表类似的结构,使用两个链表,空闲链表与使用链表Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.29信号量信号量semaphorel信号量在多任务系统中用于:控制共享资源的使用权、标志事件信号量在多任务系统中用于:控制共享资源的使用权、标志事件的发生、使两个任务的行为同步。的发生、使两个任务的行为同步。luC/OS中信

33、号量由两部分组成:信号量的计数值和等待该信号任中信号量由两部分组成:信号量的计数值和等待该信号任务的等待任务表。信号量的计数值可以为二进制务的等待任务表。信号量的计数值可以为二进制, 也可以是其他也可以是其他整数。整数。l系统通过系统通过OSSemPend( )和和OSSemPost( )来支持信号量的两种原子来支持信号量的两种原子操作操作P()和和V()。P()操作减少信号量的值,如果新的信号量的值不操作减少信号量的值,如果新的信号量的值不大于大于0,则操作阻塞;则操作阻塞;V()操作增加信号量的值。操作增加信号量的值。 Evaluation only.Created with Aspose

34、.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.30多任务的启动多任务的启动l首先创建任务首先创建任务l最后调用最后调用OSStart开始多任务调度开始多任务调度void main( ) OSInit( ); . OSTaskCreat( ) . OSStart();Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty L

35、td.31任务的格式任务的格式l每个任务不能占用全部每个任务不能占用全部CPU的资源的资源l需要有等待,或延时等系统调用需要有等待,或延时等系统调用l典型的一个无限循环。典型的一个无限循环。voidmytask(void*pdata)for(;)dosomething;waiting;dosomething;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.32任任务调度务调度lFor example1 创建创建2个任

36、务,每个任务仅仅是进行延时,延时不个任务,每个任务仅仅是进行延时,延时不同的时间片,不同优先级同的时间片,不同优先级void Task1(void) void Task2(void) while(1) while(1) blinkled1(); blinkled2(); Task1Data+; Task2Data+; OSTimeDly(25); OSTimeDly(50); Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty

37、Ltd.33void main() sysinit(); OSInit (); OSTaskCreate ( Task1, (void *)&Task1Data, (void *)&Task1StkTASK_STK_SIZE,Task1prio); OSTaskCreate (Task2, (void *)&Task2Data, (void *)&Task2StkTASK_STK_SIZE,Task2prio); ticker_start(OS_TICKS_PER_SEC); OSStart();Evaluation only.Created with Aspose.Slides for .N

38、ET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.34void OSStart (void) INT8U y, x; if (OSRunning = FALSE) 判断是否没有启动内核判断是否没有启动内核 y = OSUnMapTblOSRdyGrp; x = OSUnMapTblOSRdyTbly; OSPrioHighRdy = (INT8U)(y 3) + x); 找到优先级最高的准备就绪任务找到优先级最高的准备就绪任务 OSPrioCur = OSPrioHighRdy; 当前运行任务优先级当前运行任务优先

39、级 OSTCBHighRdy = OSTCBPrioTblOSPrioHighRdy; 根据任务优先级找到任务根据任务优先级找到任务 OSTCBCur = OSTCBHighRdy; OSStartHighRdy(); 让优先级最高的任务运行起来让优先级最高的任务运行起来 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.35OSStartHighRdyLDRr4, addr_OSTCBCur ; 得到当前任务的得到当

40、前任务的TCB地址地址LDRr5, addr_OSTCBHighRdy; 得到最高优先级任务的得到最高优先级任务的TCB地址地址LDRr5, r5; 得到任务栈顶指针,得到任务栈顶指针,注:任务栈顶是注:任务栈顶是TCB的第一个成员的第一个成员LDRsp, r5; 切换切换栈顶栈顶指针,也就是切换任务指针,也就是切换任务STRr5, r4; 改变改变addr_OSTCBCur值为最高优先级任务值为最高优先级任务TCB地址地址LDMFDsp!, r4; 取任务栈中保存的取任务栈中保存的CPU保存状态寄存器保存状态寄存器SPSRMSRSPSR_cxsf, r4 ; 改变改变CPU保存状态寄存器保存

41、状态寄存器SPSRLDMFDsp!, r4; 取任务栈中保存的当前取任务栈中保存的当前CPU状态寄存器状态寄存器CPSRMSRCPSR_cxsf, r4; 改变当前改变当前CPU状态寄存器状态寄存器CPSRLDMFDsp!, r0-r12, lr, pc ; 从栈中恢复其它上下文内容,包括从栈中恢复其它上下文内容,包括r0-r12,lr等等; 另外跳转另外跳转PC指针到新任务的代码执行指针到新任务的代码执行ENDEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 200

42、4-2011 Aspose Pty Ltd.36void OSSched (void) INT8U y; OS_ENTER_CRITICAL(); if (OSLockNesting | OSIntNesting) = 0) 调度锁,或者处于中断状态禁止调度调度锁,或者处于中断状态禁止调度 y = OSUnMapTblOSRdyGrp; OSPrioHighRdy = (INT8U)(y 0) 确保确保tick大于大于0 OS_ENTER_CRITICAL(); 进入临界段代码进入临界段代码 if (OSRdyTblOSTCBCur-OSTCBY &= OSTCBCur-OSTCBBitX)

43、= 0) /* Delay current task */ OSRdyGrp &= OSTCBCur-OSTCBBitY; 设置任务为非就绪状态设置任务为非就绪状态 OSTCBCur-OSTCBDly = ticks; 在在TCB中装载延时数中装载延时数 OS_EXIT_CRITICAL(); 退出临界段代码退出临界段代码 OSSched(); 调度下一个任务开始运行调度下一个任务开始运行 时钟定时时钟定时Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2

44、011 Aspose Pty Ltd.41void OSTimeTick (void) OS_TCB *ptcb; ptcb = OSTCBList; -OSTCB链表指针 while (ptcb-OSTCBPrio != OS_IDLE_PRIO) 是不是空闲任务?空闲任务在队列尾部 if (ptcb-OSTCBDly != 0) 是否延时 if (-ptcb-OSTCBDly = 0) 延时减一,看是否延时结束 if (!(ptcb-OSTCBStat & OS_STAT_SUSPEND) OSRdyGrp |= ptcb-OSTCBBitY; 是的话将其列入准备就绪表 OSRdyTblp

45、tcb-OSTCBY |= ptcb-OSTCBBitX; else ptcb-OSTCBDly = 1; ptcb = ptcb-OSTCBNext; 指针指向下一个TCB结构 OSTime+; 变量加一,记录系统启动以来的时钟滴答数 时钟节拍函数时钟节拍函数Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.42OSTimeTick( void ) 令指针指向第一个任务是否是空闲任务?任务是否存在延时? 延时数减一延

46、时数是否为0? 如果条件合适,将该任务放入就绪列表 令指针指向下一个任务 OSTime+ 返回是否是否是否空闲任务总是最后一个任务对任务表进行扫描预定的延时到了,就应该在使任务处于就绪条件是:任务没有处于挂起态任务没有延时的话忽略即可Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.43时间任务一任务二OSStartTime Tick Time Tick 02550Time Tick 空闲任务5Evaluation o

47、nly.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.44总结总结l不存在一个内核任务不存在一个内核任务/实体,内核的管理是通过实体,内核的管理是通过调用系调用系统函数统函数来实现的。来实现的。l每个任务有自己的每个任务有自己的堆栈空间堆栈空间。内核对任务的占先式调。内核对任务的占先式调度不会干扰每个任务的总的运行结果。度不会干扰每个任务的总的运行结果。Evaluation only.Created with Aspose.Slides for

48、.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.45 COS-IICOS-II在在ARM9ARM9上的移植上的移植所所谓谓移移植植,是是指指使使一一个个实实时时操操作作系系统统能能够够在在某某个个微微处处理理器器平平台台上上运运行行。 COS-II的的主主要要代代码码都都是是由由标标准准的的C语语言写成的,移植方便。言写成的,移植方便。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright

49、 2004-2011 Aspose Pty Ltd.46移植移植 COS-IICOS-II满足的条件满足的条件 l处理器的处理器的C编译器能产生可重入代码。编译器能产生可重入代码。l在程序中可以打开或者关闭中断。在程序中可以打开或者关闭中断。l处处理理器器支支持持中中断断,并并且且能能产产生生定定时时中中断断(通通常常在在101000Hz之间)。之间)。l处理器能够容纳一定量数据的硬件堆栈。处理器能够容纳一定量数据的硬件堆栈。l处处理理器器有有将将堆堆栈栈指指针针和和其其他他CPU寄寄存存器器存存储储和和读读出到堆栈(或者内存)的指令。出到堆栈(或者内存)的指令。Evaluation only

50、.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.47打开打开/ /关闭中断关闭中断 在在 COS-II中,可以通过:中,可以通过:OS_ENTER_CRITICAL () OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。这需要处理器的支持。宏来控制系统关闭或者打开中断。这需要处理器的支持。在在ARM9的处理器上,可以设置相应的寄存器来关闭或者的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。(打开系统的所有中断。(C

51、PSR的的I/F位、位、MSR、MRS) Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.48处理器支持中断并且能产生定时中断处理器支持中断并且能产生定时中断 COS-II是是通通过过处处理理器器产产生生的的定定时时器器的的中中断断来来实实现现多多任任务务之之间间的的调调度度的的。ARM9的的处处理理器器上上可可以以产产生生定定时时器中断。器中断。本本系系统统工工作作在在200MHz的的主主频频下下,可可以以设设置置

52、定定时时器器的的中中断断的的频频率率为为100Hz。也也就就是是系系统统的的响响应应时时间间为为10ms。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.49处理器支持硬件堆栈处理器支持硬件堆栈 COS-II进进行行任任务务调调度度的的时时候候,会会把把当当前前任任务务的的CPU寄寄存存器器存存放放到到此此任任务务的的堆堆栈栈中中,然然后后,再再从从另另一一个个任任务务的的堆堆栈栈中中恢恢复复原原来来的的工工作作寄寄

53、存存器器,继继续续运运行行另另一一个个任任务务。所所以以,寄寄存存器器的的入入栈栈和和出出栈栈是是 COS-II多多任任务务调调度度的的基础。基础。 ARM9处处理理器器中中有有专专门门的的指指令令处处理理堆堆栈栈,可可以以灵灵活活的使用堆栈。(的使用堆栈。(LDM、STM)Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.50例:例: C/OS-IIC/OS-II在在S3C2410S3C2410上的移植上的移植 l设

54、置设置OS_CPU.H中与处理器和编译器相关的代码中与处理器和编译器相关的代码 l用用C语言编写六个操作系统相关的函数语言编写六个操作系统相关的函数OS_CPU_C.Cl用汇编语言编写四个与处理器相关的函数用汇编语言编写四个与处理器相关的函数OS_CPU.ASMEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.51设置与处理器和编译器相关的代码设置与处理器和编译器相关的代码lOS_CPU.H中中定定义义了了与与编编译译

55、器器相相关关的的数数据据类类型型。比如:比如:INT8U、INT8S等。等。l与与 ARM处理器相关的代码,使用处理器相关的代码,使用OS_ENTER_CRITICAL() 和和OS_EXIT_CRITICAL() 宏开启关闭中断。宏开启关闭中断。l设施堆栈的增长方向设施堆栈的增长方向 堆栈由高地址向低地址增长堆栈由高地址向低地址增长 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.52用汇编语言编写四个用汇编语言编

56、写四个与处理器相关的函数与处理器相关的函数 lOSStartHighRdy()lOSCtxSw()lOSIntCtxSw()lOSTickISR()Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.53移植要点移植要点l定定 义义 函函 数数 OS_ENTER_CRITICAL和和 OS_ENTER_ CRITICAL。l定义函数定义函数OS_TASK_SW执行任务切换。执行任务切换。 l定义函数定义函数OSCtxSw

57、实现用户级上下文切换,用汇编实现。实现用户级上下文切换,用汇编实现。 l定义函数定义函数OSIntCtxSw实现中断级任务切换,用汇编实现。实现中断级任务切换,用汇编实现。 l定义函数定义函数OSTickISR。 l定义定义OSTaskStkInit来初始化任务的堆栈。来初始化任务的堆栈。 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.54本节提要本节提要1 1 1 13 3 3 32 2 2 2嵌入式实时操作系统

58、嵌入式实时操作系统 C/OS嵌入式嵌入式LinuxWinCEEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.55Linux的特点的特点lLinux系统是层次结构且系统是层次结构且内核完全开放内核完全开放l强大的强大的网络网络支持功能支持功能 lLinux具备一整套具备一整套开发工具链开发工具链 lLinux具有广泛的具有广泛的硬件硬件支持特性支持特性 l遵循通用遵循通用国际标准国际标准,便于程序的移植,便于程序的移植

59、 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.56Linux的结构的结构l类类UNIXEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.57嵌入式嵌入式LinuxLinuxl嵌嵌入入式式Linux(Embedded Linux)是是指指对

60、对Linux经经过过小小型型化化裁裁剪剪后后,能能够够固固化化在在容容量量只只有有几几百百K字字节节或或几几兆兆字字节节的的存存储储器器芯芯片片或或单单片片机机中中,应应用用于于特特定定嵌嵌入入式式场场合合的的专专用用Linux操操作作系系统统。嵌嵌入入式式Linux的的开开发发和和研研究究是是目目前前操操作作系统领域的一个热点。系统领域的一个热点。lRTLinuxl CLinuxlEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose P

61、ty Ltd.58Linux作为嵌入式应用的缺点作为嵌入式应用的缺点 l首首先先linux最最初初设设计计为为通通用用操操作作系系统统,其其目目标标是是追追求求整整体体最佳性能,所以不能很好处理最佳性能,所以不能很好处理实时任务实时任务;l其次,如何精简其次,如何精简linux适用于适用于嵌入式环境嵌入式环境也是一个难题。也是一个难题。 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.59嵌入式嵌入式linux的研究

62、内容的研究内容l嵌入式嵌入式linux内核内核技术技术 l嵌入式嵌入式库库技术技术 l开发开发环境环境技术技术 lBIOS和和boot loader启动加载程序启动加载程序l设备设备驱动驱动技术技术l图形图形界面技术界面技术l嵌入式嵌入式应用应用 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.60几种嵌入式几种嵌入式LinuxlMontaVista linuxMontaVista linux MontaVista

63、MontaVista LinuxLinux是是由由MontaVistaMontaVista公公司司开开发发产产品品,是是目目前前最最具具影影响响力力嵌嵌入入式式LinuxLinux。MontaVistaMontaVista通通过过直直接接修修改改内内核核来来扩扩充充linuxlinux内核的实时性。内核的实时性。lRTlinuxRTlinux RTlinuxRTlinux是是FSMLabsFSMLabs开开发发的的硬硬实实时时嵌嵌入入式式linuxlinux。RTlinuxRTlinux使使用用双双内内核核结结构构;在在底底层层使使用用一一个个硬硬实实时时内内核核,linuxlinux作作为为

64、该该内内核核的的空空闲闲任任务务;当当有有实实时时任任务务时时,通通过过硬硬实实时时内内核核调调度度该该任任务务;没没有有其其他任务时,则运行普通他任务时,则运行普通linuxlinux。 luClinuxuClinux uClinuxuClinux是是针针对对无无mmummu微微控控制制领领域域而而设设计计的的LinuxLinux系系统统。u u是是希希腊腊字字母母表表示示”小小”,C,C是是controllercontroller表表示示控控制制器器。uClinuxuClinux和和标标准准linuxlinux最最大大的的区区别别是是内内存存管管理理上上,标标准准linuxlinux利利用

65、用CPUCPU硬硬件件的的支支持持实实现虚拟内存机制,而现虚拟内存机制,而uClinuxuClinux采用实存储器管理策略。采用实存储器管理策略。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.61 uCLinux是是一一个个完完全全符符合合GNU/GPL公公约约的的项项目目,完完全全开开放放代代码码,现现由由Lineo公公司司支支持持维维护护。英英文文单单词词中中u表表示示Micro,小小的的意意思思,C表表示示C

66、ontrol,控控制制的的意意思思,所所以以uCLinux就就是是Micro-Control-Linux,字字面面上上的的理理解解就就是是“微微控控制制领领域域中中的的Linux系系统统”。它它专专门门针针对对没没有有MMU的的CPU,并并专专为为嵌嵌入入式式系系统统做做了了许许多多小小型型化化的的工工作作,已已支支持持前面提到的多款前面提到的多款CPU。uCLinux与与nommu相相关关的的功功能能现现已已被被合合并并到到Linux 2.6核心中。核心中。 官方主页官方主页:http:/www.uclinux.org ClinuxEvaluation only.Created with A

67、spose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.62 内存管理内存管理uClinuxuClinux同同标标准准LinuxLinux的的最最大大区区别别就就在在于于内内存存管管理理,标标准准LinuxLinux使使用用的的虚虚拟存储器技术拟存储器技术 标标准准LinuxLinux是是针针对对有有内内存存管管理理单单元元的的处处理理器器设设计计的的。虚虚拟拟地地址址被被送送到到内内存存管管理理单单元元(MMUMMU),把把虚虚拟拟地地址址映映射射为为物物理理地地址址。采采用用分分

68、页页的的方方式式来来载载入入进程。实际存储器分割为相同大小的页面。进程。实际存储器分割为相同大小的页面。 虚虚拟拟存存储储器器由由存存储储器器管管理理机机制制及及一一个个大大容容量量的的快快速速硬硬盘盘存存储储器器支支持持。当当一一个个程程序序在在运运行行之之前前,没没有有必必要要全全部部装装入入内内存存,而而是是仅仅将将那那些些当当前前要要运运行的那些部分页面装入内存运行(行的那些部分页面装入内存运行(copy-on-writecopy-on-write)。 通通过过赋赋予予每每个个任任务务不不同同的的虚虚拟拟-物物理理地地址址转转换换映映射射( (页页表表) ),还还可可支支持持不不同任务

69、之间的同任务之间的保护、共享保护、共享等。等。 对对于于多多进进程程管管理理当当处处理理器器进进行行进进程程切切换换并并执执行行一一个个新新任任务务时时,一一个个重重要要部分就是为新任务部分就是为新任务切换页表切换页表。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.63标准标准Linux系统的内存管理功能系统的内存管理功能 可以运行只可以运行只加载加载了部分的程序,缩短了程序启动的时间了部分的程序,缩短了程序启动的

70、时间 运行比内存还要大的程序。理想情况下应该可以运行运行比内存还要大的程序。理想情况下应该可以运行任意大小任意大小的程序的程序可以使多个程序同时驻留在内存中提高可以使多个程序同时驻留在内存中提高CPU的利用率的利用率可以运行可以运行重定位重定位程序。即程序可以方于内存中的任何一处,而且可以程序。即程序可以方于内存中的任何一处,而且可以在执行过程中移动在执行过程中移动 可以进行程序可以进行程序代码共享代码共享提供提供内存保护内存保护,进程不能以非授权方式访问或修改页面,内核保护单,进程不能以非授权方式访问或修改页面,内核保护单个进程的数据和代码以防止其它进程修改它们。个进程的数据和代码以防止其它

71、进程修改它们。 代价:内存管理代价:内存管理需要地址转换表和其他一些数据结构需要地址转换表和其他一些数据结构,留给程序的内存减,留给程序的内存减少了。地址转换少了。地址转换增加了每条指令的执行时间增加了每条指令的执行时间,而对于有额外内存操作的,而对于有额外内存操作的指令会更严重。当进程访问不在内存的页面时,系统处理失效的磁盘指令会更严重。当进程访问不在内存的页面时,系统处理失效的磁盘I/O操作极耗时间。操作极耗时间。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright

72、2004-2011 Aspose Pty Ltd.64针对针对NOMMU的特殊处理的特殊处理luClinuxuClinux针针对对没没有有MMUMMU的的处处理理器器设设计计,不不能能使使用用处处理理器器的的虚虚拟拟内内存存管管理理技技术术;uClinuxuClinux仍仍然然沿沿用用标标准准LinuxLinux的的分分页页内内存存管管理理结结构构,系系统统在在启启动动时把实际存储器进行分页,但实际上采用的是实存储器管理策略。时把实际存储器进行分页,但实际上采用的是实存储器管理策略。luClinuxuClinux系系统统对对于于内内存存的的访访问问是是直直接接的的,(它它对对地地址址的的访访问

73、问不不需需要要经经过过MMUMMU,而而是是直直接接送送到到地地址址线线上上输输出出),所所有有程程序序中中访访问问的的地地址址都都是是实实际际的物理地址。的物理地址。l操操作作系系统统对对内内存存空空间间没没有有保保护护,各各个个进进程程实实际际上上共共享享一一个个运运行行空空间间(没有独立的地址转换表)。(没有独立的地址转换表)。l一一个个进进程程在在执执行行前前,系系统统必必须须为为进进程程分分配配足足够够的的连连续续地地址址空空间间,然然后后全全部部载载入入主主存存储储器器的的连连续续空空间间中中。由由于于程程序序加加载载地地址址与与预预期期(ldld文文件件中指出的)通常都不相同,这

74、样中指出的)通常都不相同,这样重定向重定向过程就是必须的。过程就是必须的。l磁磁盘盘交交换换空空间间无无法法使使用用的的,系系统统执执行行时时如如果果缺缺少少内内存存将将无无法法通通过过磁磁盘盘交换来得到改善。交换来得到改善。l编译器要专门修改,编译器要专门修改,uCLinuxuCLinux对用户程序采用对用户程序采用静态链接静态链接的形式的形式。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.65对开发人员提出的更

75、高要求对开发人员提出的更高要求l从从易易用用性性来来说说,uClinuxuClinux的的内内存存管管理理实实际际上上是是一一种种倒倒退退,退退回回了了到到了了UNIXUNIX早期或是早期或是DosDos系统时代。开发人员不得不参与系统的内存管理。系统时代。开发人员不得不参与系统的内存管理。l由由于于应应用用程程序序加加载载时时必必须须分分配配连连续续的的地地址址空空间间,而而针针对对可可连连续续地地址址分分配配内内存存大大小小是是受受限限的的,开开发发人人员员在在开开发发应应用用程程序序时时必必须须考考虑虑内内存存的的分分配情况并关注应用程序需要运行空间的大小。配情况并关注应用程序需要运行空

76、间的大小。l用用户户程程序序同同内内核核以以及及其其它它用用户户程程序序在在一一个个地地址址空空间间,开开发发人人员员的的权权利利增增大大了了(开开发发人人员员在在编编程程时时可可以以访访问问任任意意的的地地址址空空间间),但但与与此此同同时时系统的系统的安全性安全性也大为下降。也大为下降。l从从嵌嵌入入式式设设备备实实现现的的功功能能来来看看,嵌嵌入入式式设设备备通通常常在在某某一一特特定定的的环环境境下下运运行行,只只要要实实现现特特定定的的功功能能,其其功功能能相相对对简简单单,内内存存管管理理的的要要求求完完全全可以由开发人员考虑。可以由开发人员考虑。Evaluation only.C

77、reated with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.66本节提要本节提要1 1 1 13 3 3 32 2 2 2嵌入式实时操作系统嵌入式实时操作系统 C/OS嵌入式嵌入式LinuxWinCEEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.67WinCE的基本架构的基本架构lW

78、inCE的基本架的基本架构与桌面系统的不构与桌面系统的不同:同:l文件系统文件系统l内存管理内存管理l进程管理进程管理Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.68WinCE1.0的外观的外观Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty L

79、td.69WinCE2.0的外观以及字体选择对话框的外观以及字体选择对话框2。0外观外观Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.70WinCE的进程之间通讯的模式为的进程之间通讯的模式为RPC方式:方式: 进程间的通讯方式进程间的通讯方式Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyrigh

80、t 2004-2011 Aspose Pty Ltd.71WinCE的虚拟内存管理和进程在内存中的位置:的虚拟内存管理和进程在内存中的位置: 支持支持32个进程,其中个进程,其中slot0的为当前活动进程。的为当前活动进程。虚拟内存虚拟内存Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.72WinCE的进程间的安全管理,使用的是一个的进程间的安全管理,使用的是一个32bit的的key.进程间的安全管理进程间的安全管理

81、Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.73WinCE的特定的的特定的DLL在各个在各个slot有固定的数据段位置有固定的数据段位置数据位置数据位置Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.74Ram中的文件能够掩盖中的文件能

82、够掩盖Rom中的同名文件:中的同名文件:文件覆盖文件覆盖Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.75WinCE中的文件都是以压缩方式存储的。中的文件都是以压缩方式存储的。文件压缩文件压缩Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd

83、.76WinCE中的控件:中的控件:控件控件Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.77汉化过程中要修改的部分以及要监听的消息:汉化过程中要修改的部分以及要监听的消息:消息消息Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.78制作

84、输入法需要修改的位置:制作输入法需要修改的位置:输入法输入法Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.79字体显示部分,可以使用字体显示部分,可以使用CE系统原有的部分,但是需要自系统原有的部分,但是需要自己修改字体文件。己修改字体文件。字体字体Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyr

85、ight 2004-2011 Aspose Pty Ltd.80组装组装WinCE系统的组装方式系统的组装方式和部件。和部件。最后生成一个最后生成一个NK.BIN文文件,用来做件,用来做ROM.整个过程用一个整个过程用一个sysgen.bat来完成。来完成。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.81谢谢 谢谢 各各 位位Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号