版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统复习 考试说明 时间:16周周四(12月19日)14:0016:00 地点:东教南202,203 闭卷 题型及分值 填空30% 选择10% 判断 10% 术语解释 10% 简答+设计40% 嵌入式系统的定义 “以应用为中心,计算机技 术为基础,软硬件可裁剪,以适应 应用系统对功能、可靠性、成本、 体积、功耗有严格要求的专用计 算机系统。” 嵌入式微处理器分类 嵌入式操作系统的发展阶段 1、无操作系统的嵌入算法阶段 2、专用嵌入式实时操作系统 3、通用嵌入式实时操作系统 4、基于internet的嵌入式系统 嵌入式开发环境(交叉开发环境) 嵌入式系统通常是一个资源受限的系统,其开发需
2、要交叉编译和在线调试的开发环境,主要包括: 宿主机 目标机(评估电路板) 基于JTAG的ICD仿真器、或调试监控软件、或在 线仿真器ICE 运行于宿主机的交叉编译器和链接器、以及开发 工具链或软件开发环境 嵌入式操作系统 交叉开发环境交叉开发环境 ARM公司提供的ADS和AXD ADS:Arm Developer Suite AXD:Arm eXtended Debugger 仿真驱动有两种: ADP硬件仿真驱动 ARMUL软件仿真驱动 ARM7处理器 ARM7TDMI的含义: T:支持16位压缩指令集Thumb; D:支持片上Debug; M:内嵌硬件乘法器(Multiplier) I:嵌入
3、式ICE,支持片上断点和调试点; Samsung公司的S3C44B0X即属于该系列的处理器。 三级流水线(取指-译码-执行),由此导致: ARM状态下指令读出的pc值是指令地址值加8个字节; Thumb状态下指令读出的pc值是指令地址值加4个字节 ARM 处理器支持的数据类型 字节(8位)-char,unsigned char 半字(16位)-short,unsigned short 字(32位)-int,unsigned int 其中,字需要4字节对齐(地址的低两位为0)、半 字需要2字节对齐(地址的最低位为0)。 ARM体系结构可以用两种方法存储字数据: 大端格式大端格式(big-endi
4、an): 字数据的高字节存储在低地址中,而字数据的低字节则存 放在高地址中。 小端格式小端格式(little-endian): 低地址中存放的是字数据的低字节,高地址存放的是字数 据的高字节。 ARM7TDMI核的bigend引脚,s3c44b0 x cpu的endian引脚的 状态将决定大端格式或小端格式。 地 址 增 加 24 24 1A 3C 78 1A 3C 78 小端模式大端模式 字数据0 x783C1A24 的存储格式如下 : ARM7TDMI 处理器有两种工作状态(对应于 2种指令集): uARM 状态 uThumb状态 ARM7TDMI 核的操作状态可以通过BX指令在 ARM状
5、态和Thumb状态之间切换 ARMThumb LDR r0,=label+1 BX r0 ThumbARM LDR r0,=label BX r0 ARM ARM 处理器有处理器有7 7种工作模式种工作模式: : l用户模式(usr) - 正常的程序执行模式 l快速中断模式(fiq) - 支持高速数据传输或通道处理 l中断模式(irq) - 用于通用中断处理 l管理员模式(svc) - 操作系统的保护模式. l中止模式(abt) - 支持虚拟内存和/或内存保护 l系统模式(sys) - 支持操作系统的特殊用户模式(运行操作系统任务) l未定义模式(und) - 支持硬件协处理器的软件仿真 除了
6、用户模式外,其他模式均可视为特权模式; Usr/Sys mode不是异常模式,没有SPSR。在这2种模式中 使用读写SPSR的指令时,结果不可预知。 ARM状态下的寄存器组织 n R0 R0 到到 R15 R15 可以直接访问可以直接访问 n R0 R0 到到 R14 R14 是通用寄存器是通用寄存器 n R13: R13: 堆栈指针堆栈指针 (sp) (sp) (通常通常) ) u每种处理器模式都有单独的堆栈每种处理器模式都有单独的堆栈 n R14: R14: 链接寄存器链接寄存器 ( (lrlr) ) n R15 R15 程序计数器程序计数器 (PC)(PC) n CPSR CPSR 当前
7、程序状态寄存器当前程序状态寄存器,包括代码标志状态和当前模,包括代码标志状态和当前模 式位式位 n 5 5个个SPSRsSPSRs-(-(程序状态保存寄存器程序状态保存寄存器) ) 当异常发生时保存当异常发生时保存CPSRCPSR 状态状态 程序状态寄存器程序状态寄存器 N, Z, C and V 条件码标志 可以在处理器中作为数学和逻辑操作改变 可以被所有的指令测试,以决定指令是否被执行 N : Negative. Z : Zero. C : Carry. V : oVerflow I and F 位是中断禁止位,T位反映处理器的运行状态 M0, M1, M2, M3 and M4 位是模式
8、位 N, Z, C and V 条件码标志 可以在处理器中作为数学和逻辑操作改变 可以被所有的指令测试,以决定指令是否被执 行 N : Negative. Z : Zero. C : Carry. V : oVerflow 注意借位的设置: 减法运算发生借位时c=0,否则c=1 指令SBC,RSC的操作能感受到此种设置的影响 I and F 位是中断禁止位 I=1禁止IRQ,I=0允许IRQ T位反映处理器的运行状态 T=1指示Thumb状态,T=0指示ARM状态 与BX指令有联系 ARM体系的异常 异常:由内部或外部源产生并引起处理器处理的一个事件 异常向量表占据内存最低端的32个字节(00
9、 x1F) 注意异常类型和处理器模式的关系 地址地址异常异常进入时的模式进入时的模式进入时进入时I的状态的状态进入时进入时F的状态的状态 0 x00000000复位管理禁止禁止 0 x00000004未定义指令未定义IF 0 x00000008软件中断异常管理禁止F 0 x0000000C中止(预取)中止IF 0 x00000010中止(数据)中止IF 0 x00000014保留保留 0 x00000018IRQ中断禁止F 0 x0000001CFIQ快速中断禁止禁止 注:表中的I和F表示不对该位有影响,保留原来的值。 ARM指令集和寻址方式 理解: 几乎所有指令都可条件执行 指令写法上的变化
10、可以控制是否影响标志位 无 条 件 执 行 ( 指 令 默 认 条 件 ) 操 作 码 条 件 码 助 记 符 标 志含 义操 作 码 条 件 码 助 记 符 标 志含 义 0000 0001 0010 0011 0100 0101 0110 0111 EQ N E C S/H S C C /LO M I PL V S V C Z=1 Z=0 C =1 C =0 负 数 正 数 或 零 溢 出 没 有 溢 出 N =1 N =0 V =1 V =0 1000 1001 1010 1011 1100 1101 1110 1111 C =1,Z=0H I LS G E LT G T LE A L
11、N V C =0,Z=1 N =V N !=V Z=0,N =V Z=1,N !=V 任 意 任 意 相 等 不 相 等 无 符 号 数 大 于 或 等 于 无 符 号 数 小 于 无 符 号 数 大 于 无 符 号 数 小 于 或 等 于 有 符 号 数 大 于 或 等 于 有 符 号 数 小 于 有 符 号 数 大 于 有 符 号 数 小 于 或 等 于 从 不 执 行 ( 不 要 使 用 ) C代码:代码: if(a b) a+; else b+; 对应的汇编代码:对应的汇编代码: CMP R0,R1 ;R0与与R1比较比较 ADDHI R0,R0,#1 ;若若R0R1,则,则R0=R0
12、+1 ADDLS R1,R1,#1 ;若若R0R1,则,则R1=R1+1 示例:示例: 条件码 SWP指令操作图解 C语言代码为:语言代码为: int gcd (int a,int b) while (a!=b) if (ab) a=a-b; else b=b-a; return a; 对应的对应的ARM汇编代码段。(代码执行汇编代码段。(代码执行 前前R0中存放中存放a,R1中存放中存放b;代码执行;代码执行 后后R0中存放最大公约数。中存放最大公约数。 gcd CMP R0,R1 ;比较比较a和和b的大小的大小 SUBGT R0,R0,R1 ;if(ab) a=a-b SUBLT R1,R
13、1,R0 ;if(ba) b=b-a BNE gcd ;if(a!=b)跳转到跳转到gcd继续执行继续执行 MOV PC,LR ;子程序结束,返回子程序结束,返回 实现类似于实现类似于C语言中的语言中的if-else功能的代码段。下例的功能的代码段。下例的 功能为求最大公约数。功能为求最大公约数。 例:编写一具有完整汇编格式的程序,实现冒泡法排序功能。 设无符号字数据存放在从0 x400004开始的区域,字数据的数 目字存放在0 x400000中。 AREA SORT,CODE,READONLY ENTRY START MOV R0,#0 x400000 ldr r1,r0 ;counter
14、LP SUBS R1,R1,#1 BEQ EXIT MOV R7,R1 LDR R0,=0 x400004 LP1 LDR R2,R0,#4 LDR R3,R0 CMP R2,R3 STRLO R3,R0, # -4 STRLO R2,R0 SUBS R7,R7,#1 BNE LP1 B LP EXIT END S3C44B0X构成最小系统 nS3C44B0X + 电源电路电源电路 + 晶振电路晶振电路 + 复位电路复位电路 + JTAG接口电路可构成真正意义上的最小系统接口电路可构成真正意义上的最小系统 n程序可运行于程序可运行于S3C44B0X内部的内部的8KB RAM中,可运行中,可运行
15、 的程序大小有限,且掉电后无法保存,只能通过的程序大小有限,且掉电后无法保存,只能通过JTAG接接 口调试程序口调试程序 S3C44B0X扩展系统 nS3C44B0X最小系统(最小系统( S3C44B0X + 电源电路电源电路 + 晶振电路晶振电路 + 复复 位电路位电路 + JTAG接口电路接口电路) + SDRAM + FLASH电路可构成一电路可构成一 个完全的嵌入式系统个完全的嵌入式系统 n可运行于可运行于SDRAM中的程序,也可以运行中的程序,也可以运行NOR FLASH 中的程序,可运行较大的程序,如果将程序保存到中的程序,可运行较大的程序,如果将程序保存到FLASH 中,掉电后不
16、会丢失,因此,既可以通过中,掉电后不会丢失,因此,既可以通过JTAG接口调试程接口调试程 序,也可以将程序烧写到序,也可以将程序烧写到FLASH,然后运行,然后运行FLASH中的程中的程 序序 n在此基础上加入必要的接口及其他电路,就构成了具在此基础上加入必要的接口及其他电路,就构成了具 体的体的S3C44B0X应用系统应用系统 27 S3C44B0 x的存储分配的存储分配 nS3C44B0X内置存储器控制器内置存储器控制器 n支持最多支持最多8个存储器个存储器Bank,每个,每个Bank最多最多 支持支持32MB n启动代码必须安排在启动代码必须安排在Bank0 nBank0处处0 x01c
17、000000 x02000000地址区间地址区间 为特殊功能寄存器(为特殊功能寄存器(SFR)。事实上,这)。事实上,这 就是就是I/O空间。空间。ARM架构中,架构中,I/O和存储器和存储器 统一编址(或称统一编址(或称I/O是存储器映射式的)是存储器映射式的) 通过C语言访问内存或I/O的典型写法 通过指针定义用宏简化 #define rBANKSIZE(*(volatile unsigned *)0 x1c80028) 读存储器或IO aa=rBANKSIZE; 写存储器或IO rBANKSIZE=32; NOR Flash vs. NAND Flash 项目 NOR flash NAN
18、D flash 特点 芯片内执行 代码拷至系统RAM中 传输效率 高 中 写入/擦除操作 的典型时间 5s 4ms 擦除器件时 块大小 64128KB 832KB 接口 SRAM接口 I/O口 存储密度 低 高 NOR FLASH适合存储程序,NAND FLASH适合存储数据,实验平 台up-netARM3000中有2M NOR FLASH+16M NANDFLASH Bootloader的作用 Boot Loader是在嵌入式系统复位启动时, 操作系统内核运行前,执行的第一段程序。 通过Boot Loader,初始化硬件设备,建立 内存和I/O空间映射图,为最终加载操作系 统内核调整好适当的
19、系统软硬件环境。 Bootloader中的异常向量表 ENTRY b ResetHandler ;for debug b HandlerUndef ;handlerUndef b HandlerSWI ;SWI interrupt handler b HandlerPabort ;handlerPAbort b HandlerDabort ;handlerDAbort b . ;handlerReserved ;* b HandlerIRQ b HandlerFIQ Bootloader中指向用户程序的链接 IMPORT _main :LNOT:THUMBCODE BL_main ;Dont
20、use main() because . B . c/OS-II 实时操作系统 基于优先级的抢先式调度,不支持时间片 轮转调度,总是让处在就绪状态的优先级 最高的任务先运行 最多64个任务,任务编号063,0号优先级 最高,63号优先级最低 不可剥夺型内核(非占先式 Non-Preemptive) 低优先级任务低优先级任务 ISR 高优先级任务高优先级任务 (1)(2) (3) (4) (5) (6) (7) 中断服务程序使中断服务程序使 高优先级任务就绪高优先级任务就绪 低优先级任务释放低优先级任务释放 CPU使用权使用权 TIME 非占先式内核要求每个任务自我放弃CPU 的所有 权。非占先
21、式调度法也称作合作型多任务,各个任务 彼此合作共享一个CPU。异步事件还是由中断服务来 处理。中断服务可以使一个高优先级的任务由挂起状 态变为就绪状态。但中断服务以后控制权还是回到原 来被中断了的那个任务,直到该任务主动放弃CPU的 使用权时,那个高优先级的任务才能获得CPU的使用 权。 非占先式内核 可剥夺型内核(占先式 Preemptive) 低优先级任务低优先级任务 ISR 高优先级任务高优先级任务 (1)(2) (3) (4) (5) (6) 中断服务程序使中断服务程序使 高优先级任务就绪高优先级任务就绪 高优先级任务得到高优先级任务得到 CPU使用权使用权 TIME 当系统响应时间很
22、重要时,要使用占先式内核。 因此绝大多数商业上销售的实时内核都是占先式内核。 最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入 了就绪状态,当前任务的CPU使用权就被剥夺了,或 者说被挂起了,那个高优先级的任务立刻得到了CPU 的控制权。如果是中断服务子程序使一个高优先级的 任务进入就绪态,中断完成时,中断了的任务被挂起, 优先级高的那个任务开始运行。 占先式内核 任务设计任务设计 在基于实时操作系统的应用程序设计中,任务设计 是整个应用程序的基础,其它软件设计工作都是围绕任 务设计来展开。 任务设计 应用程序 设计“任务 函数”和相 关的数据
23、结 构 其他软件工作 任务的分类任务的分类 按照执行方式分类 任务(任务(tasktask) 典型的任务(除了单次执行的任务以典型的任务(除了单次执行的任务以 外):一个无限循环,无返回值外):一个无限循环,无返回值 void mytask(void *pdata) for (;) do something; waiting; do something; 任务完成后的自我删除任务完成后的自我删除 当任务完成后,任务可以自我删除当任务完成后,任务可以自我删除 任务代码并非真的删除了,系统只是简单地不再理会任务代码并非真的删除了,系统只是简单地不再理会 这个任务这个任务 这个任务的代码也不会再运行
24、了,即使任务调用了这个任务的代码也不会再运行了,即使任务调用了 OSTaskDelOSTaskDel(),这个任务也绝不会返回(),这个任务也绝不会返回 void YourTask (void *pdata) /* 用户代码 */ OSTaskDel(OS_PRIO_SELF); 任务状态任务状态 在任一给定的时刻,任务的状态一定是在任一给定的时刻,任务的状态一定是 以下五种状态之一:以下五种状态之一: 睡眠态(睡眠态(task dormanttask dormant) 就绪态(就绪态(task readytask ready) 运行态(运行态(task runningtask running
25、) 等待状态(等待状态(task waitingtask waiting) 中断服务态(中断服务态(ISR running)ISR running) 睡眠态(睡眠态(task dormanttask dormant) 指任务驻留在程序空间(指任务驻留在程序空间(ROMROM或或RAMRAM),还没有),还没有 交给系统来管理的状态交给系统来管理的状态 任务交给系统通过调用以下函数之一来实现:任务交给系统通过调用以下函数之一来实现: OSTaskCreateOSTaskCreate()() OSTaskCreateExtOSTaskCreateExt()() 告知系统:告知系统: 任务的起始地址
26、任务的起始地址 任务建立时,用户给任务赋予的优先级任务建立时,用户给任务赋予的优先级 任务要使用的栈空间大小等任务要使用的栈空间大小等 就绪态(就绪态(task readytask ready) 任务一旦创建就进入就绪态,准备运行任务一旦创建就进入就绪态,准备运行 任务的创建可以是在多任务开始之前,也可以任务的创建可以是在多任务开始之前,也可以 动态地由一个运行着的任务创建动态地由一个运行着的任务创建 若刚创建任务的优先级高于创建它的任务的优若刚创建任务的优先级高于创建它的任务的优 先级,它将立即获得先级,它将立即获得cpucpu的使用权的使用权 任务可通过任务可通过OSTaskDelOSTa
27、skDel()返回睡眠态;或调()返回睡眠态;或调 用该函数让另一个任务进入睡眠态用该函数让另一个任务进入睡眠态 运行态(运行态(task runningtask running) 就绪的任务只有当所有优先级高于它的任务都转为等就绪的任务只有当所有优先级高于它的任务都转为等 待状态,或被删除后,才能进入运行态待状态,或被删除后,才能进入运行态 任何时刻只有一个任务处于运行态任何时刻只有一个任务处于运行态 调用调用OSStartOSStart()可以启动多任务。该函数只能在启动()可以启动多任务。该函数只能在启动 时调用一次时调用一次 OSStartOSStart()运行用户初始化代码中已经建立
28、的、进入()运行用户初始化代码中已经建立的、进入 就绪态的优先级最高的任务就绪态的优先级最高的任务 等待状态(等待状态(task waitingtask waiting) 正在运行的任务可以通过下面的调用进入等待状态。延迟时间到,正在运行的任务可以通过下面的调用进入等待状态。延迟时间到, 立即强制执行任务切换,让下一个优先级最高、并进入就绪态的任立即强制执行任务切换,让下一个优先级最高、并进入就绪态的任 务执行。务执行。 OSTimeDlyOSTimeDly()() OSTimeDlyHMSMOSTimeDlyHMSM()() 等待时间过去后,系统服务(内部)函数等待时间过去后,系统服务(内部
29、)函数OSTimeTickOSTimeTick()使延迟了()使延迟了 的任务进入就绪态的任务进入就绪态 用户无需在应用程序代码中调用这个函数用户无需在应用程序代码中调用这个函数 等待状态(续)等待状态(续) 正在运行的任务可能需要通过调用函数等待某正在运行的任务可能需要通过调用函数等待某 一事件(标志、信号量、互斥信号量、消息邮一事件(标志、信号量、互斥信号量、消息邮 箱)发生。如果该事件并未发生,任务就进入箱)发生。如果该事件并未发生,任务就进入 等待状态等待状态 OSFlagPendOSFlagPend();();OSMutexPendOSMutexPend()() OSSemPendO
30、SSemPend();();OSMboxPendOSMboxPend()() 当事件发生或等待超时,被挂起的任务就进入当事件发生或等待超时,被挂起的任务就进入 就绪态就绪态 中断服务态(中断服务态(ISR running)ISR running) 正在执行的任务是可以被中断的正在执行的任务是可以被中断的,除非该,除非该 任务将中断关闭,或系统将中断关闭。被任务将中断关闭,或系统将中断关闭。被 中断的任务便进入了中断服务态中断的任务便进入了中断服务态 响应中断后,正在运行的任务被挂起,中响应中断后,正在运行的任务被挂起,中 断服务子程序控制了断服务子程序控制了CPUCPU的使用权的使用权 中断服
31、务态(中断服务态(ISR running)ISR running) 中断服务子程序可能会报告一个或多个事件的发生,中断服务子程序可能会报告一个或多个事件的发生, 而使一个或多个任务进入就绪态而使一个或多个任务进入就绪态 上述情况下,从中断服务子程序返回之前,上述情况下,从中断服务子程序返回之前, C/OSC/OS IIII 要判定:要判定: 被中断的任务是否还是就绪态任务中优先级最高的被中断的任务是否还是就绪态任务中优先级最高的 如果中断服务子程序使另一个优先级更高的任务进入了如果中断服务子程序使另一个优先级更高的任务进入了 就绪态,则新进入就绪态的这个优先级更高的任务将得就绪态,则新进入就绪
32、态的这个优先级更高的任务将得 以运行;否则,原来被中断了的任务将继续运行。以运行;否则,原来被中断了的任务将继续运行。 任务状态任务状态 当所有的任务都在等待时间发生或等待 延迟时间结束时,C/OS II 执行被称 为空闲任务(Idle Task)的内部函数, 即:OSTaskIdle() 任务状态 任务的任务的CPU使用权使用权 被剥夺被剥夺 中断中断 恢复恢复 任务任务 关于C/OS的移植 要使C/OS-能正常运行,处理器必须具备的条件 是: 1、处理器的C编译器能产生可重入代码 2、处理器支持中断,并且能产生定时中断 3、用C语言就可以打开或者关闭中断 4、处理器支持能够容纳一定量数据的
33、硬件堆栈 5、处理器有将堆栈指针和其他CPU寄存器读出, 并保存到堆栈或内存中去的指令 对于实验平台up-netARM3000而言,S3C44B0X CPU可以满足第2、4、5点要求,使用ADS1.2的 C编译器可以满足第1、3点要求 什么是可重入代码什么是可重入代码 可重入的代码指的是一段可以被多个任 务同时调用,而不必担心会破坏数据的 代码(比如:一个函数) 即:可重入型函数在任何时候都可以被 中断执行,过一段时间以后又可以继续 运行,而不会因为在函数中断的时候被 其他的任务重新调用,而影响函数中的 数据 可重入代码举例可重入代码举例 程序1:可重入型函数 void swap(int *x
34、, int *y) int temp; temp=*x; *x=*y; *y=temp; 非可重入代码举例非可重入代码举例 程序2:非可重入型函数 int temp; void swap(int *x, int *y) temp=*x; *x=*y; *y=temp; 不可重入函数被中断破坏不可重入函数被中断破坏 如何使函数具有可重入性如何使函数具有可重入性 使Swap()函数具有可重入性的条件: 把Temp定义为局部变量 调用Swap()函数之前关中断,调用 后再开中断 用信号量禁止该函数在使用过程中 被再次调用 任务设计任务设计 在基于实时操作系统的应用程序设计中,任务设计 是整个应用程序
35、的基础,其它软件设计工作都是围绕任 务设计来展开。 任务设计 应用程序 设计“任务 函数”和相 关的数据结 构 其他软件工作 任务设计任务设计| 电脑自动打铃器设计与实现电脑自动打铃器设计与实现 任务的划分任务的划分 对一个嵌入式应用系统进行“任务划分”,是实时操作系统应 用软件设计的关键,任务划分是否合理将直接影响软件设计的质量。 以以CPU为中心为中心 “关键关键”功功 能能 “紧迫紧迫”功能功能 消耗机时消耗机时关系密切关系密切 相同事件触发相同事件触发 运行周期相同运行周期相同 任务划分 固定顺序执行固定顺序执行 任务划分原则如下: 首先,以CPU为中心,将与各种输入/输出设备(或端口
36、)相关的功能分别划 分为独立的任务 发现“关键”功能,将其最“关键”部分“剥离”出来,用一个独立任务 (或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通信机制沟通 发现“紧迫”功能,将其最“紧迫”部分“剥离”出来,用一个独立的高优 先级任务(或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通信 机制沟通 将消耗机时较多的数据处理功能划分出来,封装为低优先级任务 对于既“关键”又“紧迫”的功能,按“紧迫”功能处理 将关系密切的若干功能组合成为一个任务,达到功能聚合的效果将由相同事件触发的若干功能组合成为一个任务,从而免除事件分发机制将运行周期相同的功能组合成为一个任务,从而免除
37、时间事件分发机制将若干按固定顺序执行的功能组合成为一个任务,从而免除同步接力通信的 麻烦 电脑自动打铃器电脑自动打铃器 功能需求: l 具有实时时钟功能,能显示时分秒,年月日星期 (采用8位数码管显示) l 具有 键盘 输入功能 l 可以设置若干个闹钟,以及闹钟的禁止与使能 l 可设置每个闹钟发生时的输出动作(一共四路输出, 可独立设置每路输出的时间和电平状态) 电脑自动打铃器电脑自动打铃器 LPC2000系列ARM具有RTC功能,RTC掉电后 仍可使用电池继续运行,从而保证了系统掉电后时 钟的准确性。ZLG7290是一款键盘和LED驱动芯片, 最多支持64个按键和8个共阴极数码管。 系统框图
38、: 任务的划分任务的划分 电脑自动打铃器任务划分如下: RTC中断中断 显示任务显示任务键盘任务键盘任务 输出控制任务输出控制任务 电脑打铃器电脑打铃器 电脑自动打铃器具有键盘输入功能,用于设置时钟和闹钟,因此 需要一个键盘任务。 电脑自动打铃器需要有显示功能,用来显示时钟和闹钟,因此需 要一个显示任务。 电脑自动打铃器需要一个输出控制任务,用来控制闹钟时间到后 各路的输出。 电脑自动打铃器具有实时时钟功能,需要一个RTC中断。 任务设计任务设计| 电脑自动打铃器设计与实现电脑自动打铃器设计与实现 任务的优先级设计任务的优先级设计 人机接口,实时性低 键盘任务键盘任务1 输出控制任务输出控制任
39、务3 显示任务显示任务2 RTC中断中断4 电电 脑脑 自自 动动 打打 铃铃 器器 控制接口,实时性高 任务的优先级设计任务的优先级设计 键盘任务键盘任务1 输出控制任务输出控制任务3 显示任务显示任务2 RTC中断中断4 电电 脑脑 自自 动动 打打 铃铃 器器 优先级:6 优先级:12 优先级:13 多任务之间的同步与互斥多任务之间的同步与互斥 资源互斥 在电脑自动打铃器的设计中,ZLG7290是通过I2C总线与cpu连接的, I2C总线是键盘任务和显示任务的共享资源,必须遵循资源互斥的原则 进行访问,二者之间使用信号量进行资源互斥。 键盘任务 显示任务 信号量 申请I2C资源释放I2C资源 申请I2C资源释放I2C资源 多任务之间的信息传递多任务之间的信息传递 1.全局变量 在任务的数据结构设计中,我们设计了时钟和闹钟两个数据结构, 并定义了时钟和闹钟两个全局变量。键盘任务,显示任务和RTC中断通 过它们传递信息。 全局变量(时钟和闹钟) 键盘任务 显示任务 RTC中断 更新时钟 检测闹钟 设置时钟和闹钟 显示时钟和闹钟 任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年木方采购及物流合同
- 2024年教育设施建设项目合同管理与人才培养协议2篇
- 2024上海信息技术项目招投标与合同信息技术应用培训3篇
- 2024年度环保材料生产项目承包合同协议书3篇
- 2024年度城市道路照明设施合同2篇
- 2024年度物业能源管理合同2篇
- 2024年地产销售价格保证3篇
- 2024年度墙壁刮仿瓷产品回收与再利用合同3篇
- 2024年度招投标索赔合同3篇
- 2024版7物业服务合同范本(含社区活动策划)2篇
- 格构护坡施工方案完整
- 肾恶性肿瘤的护理查房
- 软件项目验收确认书
- 青岛科技大学机械设计基础期末复习题
- 全国优质课大赛一等奖道德与法治人教版八年级上册《维护国家安全》大单元教学设计精美课件
- 幼儿园大班科学聪明的中国人
- 工程质量监督人员考试真题模拟汇编(共957题)
- 老年人心力衰竭的特点及临床诊治课件
- 岭南版四年级美术上册质量检测练习试题附答案
- 压力管道验收资料表格
- 动力触探技术规定
评论
0/150
提交评论