计算机三级嵌入式系统开发技术考点总结(共7页).docx
-
资源ID:16300259
资源大小:29.32KB
全文页数:7页
- 资源格式: DOCX
下载积分:20金币
快捷下载
![游客一键下载](/images/hot.gif)
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
计算机三级嵌入式系统开发技术考点总结(共7页).docx
精选优质文档-倾情为你奉上嵌入式系统硬件组成概述嵌入式最小硬件系统:嵌入式处理器运行必备条件的硬件电路与嵌入式处理器共同构成了嵌入式最小硬件系统。嵌入式最小硬件系统组成:嵌入式处理器、时钟电路、电源电路、复位电路、存储器、调试测试接口电源电路:嵌入式系统常用的电源模块式交流变直流(AC-DC)模块、直流到直流(DC-DC)模块以及低压差稳压器(LDO)。稳压器包括普通稳压器和低压差稳压器LDO。78XX系列属于普通稳压器,LM2576/2596为开关稳压芯片,CCAT6219/AS2815/1117/2908等属于低压差稳压器。稳压器最大的特点是低噪声、低成本、纹波小、精度高、电路简单。时钟电路:几乎所有的嵌入式处理器本质上均为同步时序电路,需要时钟信号才能按照节拍正常工作。复位电路:嵌入式处理器都有一个系统复位引脚为nRESET或RESET,n表示低电平复位,不带n的表示高电平复位。JTAG测试接口:联合测试行为小组(JTAG)是一种国际标准测试协议,主要用于芯片内部测试以及对系统进行仿真和调试。 测试访问口:TAP基于ARM内核的电性嵌入式应用系统硬件组成:嵌入式最小硬件系统、前向通道、后向通道、人机交互通道、以及相互互联通信通道等组成。前向通道,即输入接口,包括传感器、信号调理电路(滤波器、放大器等)、A/D转换器等构成。后向通道,即输出接口,包括D/A转换器、功率放大器。执行器等组成。人机交互通道,包括键盘或触屏输入接口以及LED或LCD显示输出接口。相互互联通道,包括RS-232/RS-485串行通信接口、CAN通信接口、以太网通信接口、USB通信接口等。嵌入式处理芯片AMBA:先进微控制器总线体系结构系统总线(ASB、AHB、AXI、ACE)主要用于连接高带宽快速组件:电源管理与时钟控制器、测试接口如JTAG、外部存储器控制接口、DMA控制器、USB主机、片上SRAM及Flash、中断控制器、LCD控制器。外围总线:(APB)主要连接低带宽组件以及与外部相连的硬件组件:GPIO、UART、SPI、I2C、USB设备、CAN、Ethernet、ADC、DAC、WDT、Timer、RTC、PWM等。存储器及控制器:片内程序存储器通常用Flash ROM,一般配有几KB到几MB不等;片内数据存储器通常使用的是SRAM,一般配有几KB到几百KB不等。目前程序存储器大都采用Flash存储器,而数据存储器可采用SRAM和DDR或DDR2或普通的DRAM。中断控制器:一般采用向量中断(VIC)或嵌套向量中断(NVIC)方式管理中断。Cortex-M系列就支持嵌套的向量中断。DMA控制器:直接存储器访问控制器电源管理与时钟控制器:ARM处理芯片内部的电源管理主要有正常工作模式、慢时钟模式、空闲模式、掉电模式、休眠模式、深度休眠模式等。时钟信号是ARM芯片定时的关键。GPIO端口:通用输入/输出端口。输入时具有缓冲功能,输出时具有锁存功能。定时计数组件:看门狗定时器(WDT)、Timer通用定时器、RTC、脉冲宽带调制器(PWM)模拟通道组件:ADC、DAC、比较器。ADC:模拟到数字的转换器。 DAC:数字到模拟的转换器。 比较器主要功能是当比较器正端电压高于负端电压时,输出电压值接近正电源电压,反之输出电压接近负电源电压。互联通信组件:UART、I2C、SPI、CAN、USB、Ethernet等。UART:通用异步收发器。I2C:集成电路互连的一种总线标准,只有两根信号线,一根是时钟线SCL,一根是数据线SDA(双向三态)I2S:面向多媒体应用的音频串行总线。SPI:串行外设接口。包括MISO、MOSI、SSL和SCK。可完成全双工的同步串行通信,用于板级芯片之间的短距离通信。CAN:控制器局域网,仅有CANH和CANL两根信号线,采用差分方式传输数据,可以进行远距离多机通信。主要用于要求抗干扰能力强的工业控制领域,可组成多主多从系统。USB:通用串行总线,主要应用于与外部设备的短距离通信,也采用差分方式传输数据,是目前应用最广的串行总线接口形式。Ethernet:以太网通信接口常用ARM嵌入式处理芯片:NXP的、TI的、Samsung的、Atmel的、ST的、Freescale的、Nuvoton的、Intel的等等嵌入式处理芯片选型遵循:性价比原则和参数选择原则3.3嵌入式系统的存储器 存储器层次结构对于CPU使用最频繁的少量的程序代码和数据用SRAM作为高速缓冲存储器(Cache)存放;正在运行中的程序的大部分数据和代码存放在主存储器(内存)中;尚未启动运行的其余程序或数据则存放在容量大的外部存储器如磁盘(虚拟内存)中待命。目前嵌入式系统采用SRAM作为Cache,Cache又分为嵌入式处理器内部一级Cache(L1)和二级Cache(L2)存储器分类按存取特性可分为随机存取存储器(RAM)和只读存储器(ROM);按所处物理位置可分为片内春初期(芯片内置的存储器)和片外存储器(外部扩展的存储器)以及外部存储设备;按照存储信息的不同可分为程序存储器和数据存储器。在嵌入式系统中把片内存储器及片外扩展的存储器简称内存,把外部存储设备简称外村。嵌入式系统的存储器以半导体存储器为主。FRAM:铁电随机存取存储器;MRAM:磁性随机存取存储器随机存取存储器包括静态和动态两种形式,即SRAM和DRAM,都是易失性存储器。目前嵌入式处理器内嵌的数据存储器基本都采用SRAM,外部扩展的存储器大都采用DRAM及改进型(DDR SDRAM、DDR2 SDRAM、DDR3、DDR4)只读存储器MROM、PROM、EPROM、EEPROM、Flash ROM、NOR Flash和NAND FlashNAND Flash ROM以页(行)为单位随机存取,速度慢,变成复杂,大多作为数据存储器使用。(数码相机、MP3随身听记忆卡、U盘)NOR Flash ROM 以字节为单位随机存取,写入和擦除速度较慢。铁电存储器:非易失,可取代SRAM和Flash存储器磁性存储器:可取代Flash存储器存储器主要性能指标存储器的存取速度、存储容量、带宽容量:对于内存容量而言,单位之间换算以210=1024倍表示,对于外存容量(磁盘、U盘、Flash 存储卡),以103=1000倍表示。内存储器容量取决于存储单元的个数和存储器各单元的位数:内存容量=单元总数*数据位数/单元存储芯片的容量完全取决于存储器芯片的地址线条数和数据线的位数。V=2m * n(L:单元个数,n:数据线位条数,m:地址条数,m=log2 L)存取时间:从CPU给出有效的存储器地址开始到存储器读出数据所需要的时间。带宽:存储器每秒可传输的最大数据总量。并行总线的存储器带宽:带宽=总线频率*数据宽度/ 8 * 传输次数 /总线周期(B/s)串行总线带宽=总线频率 * 1/10 以10位为一个数据帧(含一字节数据)片内存储器片内Cache、片内Flash ROM(嵌入式微控制器内部集成的程序存储器)、片内SRAM(集成的数据存储器,SRAM属于易失性存储器)、片内E2PROM(作为长期保存重要数据的存储器,属于非易失性)、片内FRAM(具有RAM和ROM的全部特点,是当前嵌入式微控制器内部的主要存储器之一)片外存储器外部存储器的扩展是靠ARM内核提供的高带宽外部存储器控制器接口完成的。片外程序存储器:NOR Flash、NAND Flash片外数据存储器:SDRAM、DDR/DDR2/DDR3/DDR4外部存储设备SM卡、CF卡、MMC、SD卡、记忆棒、XD卡、U盘、微硬盘3.4 I/O接口及常用I/O设备通用I/O接口GPIO嵌入式系统外部通信接口 基于UART的RS-232/RS-485接口RS-232接口:传输距离可以达到15m左右,无法消除共模干涉。RS-485接口:采用差分信号传输方式,具有很强的抗共模干扰能力,传输距离可达1200m,不能构成多主系统CAN总线接口广泛应用于工控领域以及要求抗干扰和实时性强的场合;采用差分创术,控制器内置CRC教研,传输可靠性强,可构成多主多从系统;CAN总线的数据帧由7不同的域组成:帧起始、仲裁域、控制域、数据域、CRC域、应答域。帧结尾,其中数据域的长度可选为0-8B以太网通信接口:分为基于内置以太网控制器的以太网接口(以太网控制器MAC层,物理层PHY层的收发器电路)和不带内置以太网控制器的以太网接口常用无线通信接口GPS、GPRS、WiFi、蓝牙以及通用射频通信模块等GPS模块:必须具备GPS终端、传输网络和监控平台三个要素。GPRS模块:以封包(Packet,也称为分组)方式进行数据传输。WiFi模块:使用IEEE 802.11系列协议,内置无线网络协议IEEE 802.11协议栈以及TCP/IP协议栈,能够实现用户串口、TTL电平、USB接口或SPI接口数据到无线网络之间的转换。蓝牙模块:支持设备短距离通信(10m内)的无线低速(1Mb/s)通信技术,基于串口UART或USB其他无线模块:射频无线收发模块,如Si4432嵌入式系统的软件组成嵌入式系统与通用计算机系统的软件的相同之处指的是:嵌入式系统具备引导加载程序、外部设备驱动程序、操作系统、文件系统、网络协议栈、图形用户界面、数据库、各种各样的应用程序等区别:嵌入式系统的软件配备没有通用计算机那样多;通用计算机的软件系统无疑以操作系统为核心,不可或缺;对于数据库、图形用户界面、因特网浏览器、媒体播放器等基于操作系统的外围工具软件,如果运行在通用计算机上则具有内部结构细致化、运行效率高效化、代码重量化的特点。嵌入式操作系统RTOS:实时操作系统 IEEE:美国电气电子工程师协会实时系统的属性时间约束性。分为硬实时系统、软实时系统。常见的系统大多是软实时系统。可预测性;可靠性按响应时间将实时系统分为三类:强实时系统:响应时间在毫秒级或微秒及。普通实时系统:响应时间一般在几秒;弱实时系统:响应时间一般在数十秒。实时操作系统IEEE的实时UNIX分委会认为实时操作系统应该具备7个特征:1.具有异步I/O和中断处理能力 2.任务切换时间和中断延迟时间确定 3.优先级中断和调度 4.抢占式调度 5.内存锁定 6.连续文件 7.同步RTOS的三个主要实时指标:响应时间(中断延迟时间和任务切换时间)、吞吐量(在给定时间内,实时系统可以处理的事件总数)、生存事件(输入数据的有效等待时间)嵌入式操作系统概述嵌入式操作系统(EOS)是嵌入式系统中的软件。与通用计算机的操作系统相比较具有可移植、强调实时性能、内核精简、抢占式多任务处理、使用可重入函数、可配置、可裁剪、高可靠性等特点。嵌入式操作系统可粗略地分为内核、驱动程序、服务模块与行命令解释程序几大部分。内核有广义和狭义两种解释。广义:指装入在存储器里的嵌入式软件中的操作系统部分。狭义:指嵌入式操作系统中负责多任务管理及任务间通信的多任务处理部分。它执行任务创建与初始化、任务调度、时钟管理、中断管理。内存管理等。例如COS-II就是典型的纯内核例子。主流嵌入式操作系统TinyOS:开源,深度轻量级,先进先出调度,用于无线传感器网络C/OS-II/III:小型嵌入式操作系统内核,不含设备驱动程序和文件系统。开源,用于工控领域。iOS:苹果公司,微内核,系统结构分为4个层次:核心操作系统、核心服务层、媒体层、触摸框架层,系统运行占用约512MB。iOS与苹果公司的MacOS X 操作系统一样,也是以Darwin OS 为基础的,因此同样属于类Unix的商业操作系统。Windows Embedded Compact 8:即以前的WinCE操作系统。属于大型嵌入式操作系统。可用于手持设备。具有HAL和OAL。Windows Phone 8:前驱产品是2003年问世的Windows Mobile。用于手机操作系统。VxWorks:目前公认为实时性最强、可靠性最高的一种嵌入式实时操作系统。广泛应用于航空航天、通信和国防领域。属于大型商用操作系统,具有配套的Tornado集成开发环境。嵌入式Linux:普通Linux操作系统移植到嵌入式硬件平台上的版本。开源、不存在黑箱技术,安卓操作系统:以Linux为 基础,半开放源代码操作系统,属于大型操作系统,通过Android SDK使用Java作为编程语言来开发Android应用程序。eCOS:免费和开源的实时操作系统,使用于嵌入式系统和那些只需要一个进程多个线程的应用项目。QNX:实时,可扩充,内核小巧,速度快,可应用于虚拟机。嵌入式操作系统分类(1)按源代码规模分类:分为小型和大型,区别是源代码行数数量大小,超过10000行语句为大型,否则为小型。(2)按内核大小分类:小内核和大内核,前者最小内核8KB,后者最小320KB。(3)按照能否免费获得源代码分类:开放源代码和不开放源代码,开源系统:CLinux、RTLinux、Nucleus Plus、ECOS、C/OS-II (4)按照实时性能分类:分为强实时型和普通实时型。强实时:VxWorks、片SOS、 COS-II等,普通实时:Windows Embedded、CLinux、Symbian等。(5)按照内核结构分类:单内核和微内核。单内核又称宏内核,内部含有进程管理、调度器、时间管理、设备管理、文件管理等模块。耦合度高,通过函数调用实现模块之间通信。如Unix、嵌入式Linux、WinCE、Mac OS、Android OS和DOS。微内核:内核小巧,接口一致,松散耦合,人物间通信机制为消息机制,以消息传递方式相传。如:Symbian、VxWorks、QNX、C/OS-II、iOS等,iOS前身是在Darwin OS基础上研发的iPhone OS,是一个类Unix操作系统,属于微内核架构。嵌入式操作系统的仿真平台一般指嵌入式系统开发过程中使用的指令集模拟器、仿真软件或者虚拟机管理软件。如ARM公司的Armulator和清华大学研发的SkyEye都是ARM指令集模拟器,更奇安达的为VMware虚拟机,可搭建嵌入式Linux的仿真开发平台。硬件抽象层、板级支持包和引导加载程序底层软件主要就是指硬件抽象层、板级支持包和启动引导程序。硬件抽象层(HAL)WindowsNT。板级支持包(BSP)由美国风和公司(VxWorks研发商)提出。一般而言,音质VxWorks操作系统有四种操作类型:宿主机移植、体系结构移植、目标板移植、升级以前Tornado集成开发环境版本的BSP到最新版本。硬件抽象层(HAL)热点:是嵌入式硬件电路板的最基本软件,基本上是用标准C编写的,负责嵌入式操作系统移植,需集中精力在HAL上座关键代码的编程工作,从而加速操作系统的移植。含有HAL的操作系统:RTAL、eCOS、ITRON和Nios II。板级支持包BSPHAL和BSP的异同:对于同样的一个电路板,HAL一般只有一个,但是不同的操作系统拥有不同的BSP;移植一个操作系统A到一块新的电路板,为了构造BSP,需要改写的源代码基于两种来源,一种是操作系统A在类似电路板的BSP,另一种是这块电路板的HAL。BSP含有电路板的全套初始化程序,包括操作系统初始化,它要为操作系统的正常运行做好准备,而HAL通常也包括硬件初始化程序,但是不完整,例如不包括操作系统的初始化处理。引导加载程序嵌入式系统加电后执行的第一批最初操作成为引导或者自举(Boot),对应的程序成为引导程序或者引导加载程序(Bootloader)。引导加载程序主要完成内存加电自检、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载和启动操作系统。典型嵌入式系统启动顺序:(1)上电后,Bootloader将执行基本的硬件自检、初始化硬件控制寄存器、初始化SDRAM等工作(2)Bootloader将OS内核映像文件从非挥发存储介质(如Flash)中复制到SDRAM中,并将控制权转交给OS。(3)OS内核执行创建页表、驱动外设、初始化中断控制系统等OS的流程,最终创建应用程序执行环境甚至图形用户界面。Bootloader的两个执行阶段stage1的基本步骤:基本硬件初始化,为加载stage2准备RAM空间,拷贝stage2的执行代码到RAM空间中,设置栈区指针SP,跳转到stage2的C程序入口点。硬件初始化一般包括:关闭WatchDog、关中断、设置CPU的速度和时钟频率、RAM初始化等。stage2的基本步骤:启动加载模式下Bootloader的stage2操作流程:初始化本阶段要使用到的硬件设备,检测系统内存映射,将内存映像和根文件系统映像从Flash上读到RAM空间中,为内核设置启动参数,调用内核。下载模式下Bootloader的stage2操作流程:初始化本阶段要使用到的硬件设备,主要是串口、网口和Flash存储器等;等待用户输入行命令以进入下载模式,否则直接进入启动加载模式;通过串口终端与调试主机建立连接,提供人机交互接口;接收用户输入,通过串口或者网口进行文件下载,将文件写入Flash存储器保存;下载完毕,继续等待用户输入或者重启系统。嵌入式Linux的Bootloader执行步骤初始化处理器及外设的硬件资源配置;建立内存空间的映射管理,使能MMU,将系统的外存和内存地址变换激活,为最终调用操作系统内核做好准备;装载操作系统映像到内存;对Flash存储器编程;运行操作系统;传递系统启动参数;命令行解析和输入/输出控制。U-Boot被认为是功能全面、具有灵活性以及应用广泛的开放源代码Bootloader,目前由DENX公司维护。就目前来说,U-Boot对PowerPC系列处理器的支持最为丰富,对Linux的支持最为完善,国内ARM9实验箱通常使用U-boot作为Bootloader,引导多种嵌入式操作系统。嵌入式Linux操作系统Linux是目前唯一可免费获得的、能为多用户提供多任务、多线程功能的大型操作系统。最初以Unix为原型,以实现POSIX标准为目标,是最好的类Unix操作系统。嵌入式Linux:MontanaVista Linux、Clinux、RTLinux(硬实时)、RTAI从顶视图看,嵌入式Linux操作系统主要由用户进程、OS服务组件和Linux内核三大子系统组成。用户进程:在Linux系统上运行的应用程序集合。OS服务组件:位于Linux操作系统内核之上的一层服务模块或者实用程序集合,例如行命令解释程序(Shell)、窗口系统(例如X Windows、QT)、内核编程接口等。Linux内核:主要作用:进程管理与调度、内存管理、文件管理、网络接口和进程间通信。由5个子系统组成:进程调度SCHED、内存管理MM、虚拟文件系统VFS、网络接口NET、进程间通信IPC。嵌入式操作系统C/OS-IIC/OS-II的基本特点C/OS-II是抢占式实时操作系统内核,不涉及硬件驱动程序。只能管理64个任务,目前版本保留8个任务给系统,这样用户编写的应用程序最多可以有56个任务。不支持时间片轮转调度法,赋予每个任务的优先级是不同的,每个任务拥有自用栈。使用C/OS-II的栈空间校验函数可以确定每个任务到底需要多少栈空间。C/OS-II的层次位置C/OS-II嵌入式应用系统开发具有面向任务的特点。任务中的功能处理可以通过调用API函数实现,也可以通过中断服务例程ISR实现。应用程序接口层(API)主要包括文件系统、TCP/IP网络协议栈、图形用户界面、中文系统、嵌入式数据库、因特网Web浏览器等。C/OS-II的代码结构与初始化大部分代码由标准C语言写成。C/OS-II主要由三大类程序文件构成,这三大类程序按照硬件和应用相关性分为:与处理器类型无关的代码、与应用程序有关的代码和与硬件平台移植相关的代码。按照功能还可以把这些文件分成核心模块、预处理模块、进程间通信(IPC)模块、内存管理模块、任务与调度管理模块、时间管理模块以及移植模块。C/OS-II的启动过程:Bootloader执行完毕后,调用应用程序主文件(main()函数)。main()函数在执行过程中,除了用户函数和硬件初始化函数外,按照以下次序执行3个主要的C/OS-II函数:1.操作系统初始化OSInt();2.任务创建OSTaskCreat();3.任务调度开始OSStart()。一旦OSStart()函数开始执行,就标志着C/OS-II进入了多任务调度的正常运行状态。OSInit函数先建立最初的任务就绪表,然后建立4个空白的数据链表。这些内存的空白数据区开辟之后,OSInt创建第1个任务,这就是空闲任务(Idle Task),优先级设为最低(取常量OS_LOWEST_PRIO的值),创建之后进入就绪态。条件满足的话,OSInt还创建一个统计任务OSTaskStat,也让进入就绪态,OSTaskStat优先级取为OS_LOWEST_PRIO-1(次低级)。在main.c代码文件中还有两个C/OS-II的函数,其中OSTaskCreate函数创建用户定义的一个任务,OSStart启动C/OS-II多任务调度。在C/OS-II多任务调度启动前,用户至少要使用OSTaskCreate函数建立一个应用任务。C/OS-II任务的创建:可以使用OSTaskCreate函数或者OSTaskCreateExt函数。一个任务通常是一个无限的循环,有函数返回类型,有形式参数变量,但是任务绝不会返回的,故返回参数必须定义为void。C/OS-II的内核C/OS-II是嵌入式操作系统领域中的最小内核之一,只提供任务调度、任务间通信(ITC)与同步、任务管理、时间管理、内存管理、等基本功能。抢占式任务调度、多任务通信。临界区:指处理时不可分割的代码。一旦执行,不允许任何中断。在进入临界区之前必须关中断,执行完临界区代码之后要立即开中断。C/OS-II调用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏来执行关中断和开中断。C/OS-II的任务状态C/OS-II操作系统可以定义的最大任务数是64个,最高优先级定为0,最低优先级取值为实际定义的最大任务数减1.任务建立之后,拥有优先级、执行函数、自用栈空间和任务控制块(TCB),运行时能够完全控制CPU的操作以及全部用户可访问寄存器的操作。绝大多数情况下C/OS-II的每个任务都是一个无限的循环。每个任务处在以下5个状态之一:休眠态、就绪态(记录在就绪任务集中)、运行态、挂起态和被中断态。任务控制块OS_TCB:内核对任务的管理通过任务控制块OS_TCB进行。OS_TCB全部驻留在RAM。OS_TCB数据结构中的OSTCBX、OSTCBY、OSTCBBitX、OSTCBBitY 4个变量用于加速任务进入就绪态的过程或进入等待事件发生状态的过程。C/OS-II的任务调度C/OS-II的就绪任务登记在就绪表中。就绪表由两个变量OSRdyGrp和OSRdyTbl构成。C/OS-II总是运行处于就绪态任务中优先级最高的那一个,由调度器(Scheduler)确定哪个任务优先级最高,下面应该执行哪一个任务。任务级的调度是由函数OSSched()完成的,是任务调度的前导函数;中断级的调度是由另一个函数OSIntExit()完成的。C/OS-II的任务切换也称为上下文切换、文境切换,实际含义是任务的CPU寄存器内容切换。完成任务切换所需要的时间取决于CPU有多少寄存器要入栈。C/OS-II的中断处理C/OS-II允许中断嵌套,嵌套层数可达255层。中断服务子程序执行事件处理有两种方法。一种方法是通过OSMBoxPost()、OSQPost()、OSSemPost()等函数去通知真正做该事件处理的那个任务,让任务完成中断事件的处理。另外一种是由中断服务子程序本身完成事件处理。调用中断退出函数OSIntExit()标志着中断服务子程序的终结,OSIntExit()将中断嵌套层数计数器减1。中断级任务切换函数OSIntCtxSw()。C/OS-II的时间管理C/OS-II能够提供周期性时钟信号,用于实现任务的正确延时和超时确认,节拍率应在每秒10次到100次之间,即10-100Hz,时钟节拍率越高,系统的额外负荷就越重。用户必须在多任务系统启动以后再激活时钟节拍信号发生器,也就是在调用OSStart()之后,即在调用OSStart()之后做的第一件事是初始化定时器中断。C/OS-II的汇编语言时钟节拍中断服务子程序名称是OSTickISR。OSTimtick()函数执行时以调用可由用户定义的时钟节拍接口函数OSTimTickHook()开始,这个接口函数扩展了时钟节拍函数OSTimtick(),给用户一个完成特定处理的机会。C/OS-II的任务间通信主要有三种:利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITECAL()来关闭中断和打开中断。利用函数OSSchedLock()和OSSchekUnlock()对C/OS-II中的任务调度函数上锁和开锁。利用信号量OS_EVENT_TYPE_SEM、互斥信号量OS_EVENT_TYPE_MUTEX、邮箱OS_EVENT_TYPE_MBOX或消息队列OS_ENENT_TYPE_Q进行任务间通信。事件控制块ECB:用于实现信号量管理、互斥型信号量管理、消息邮箱以及消息队列管理的ITC功能函数的基本数据结构。OSEventType:定义了事件的具体类型。OSEventCnt:当事件是一个信号量时,OSEventCnt是用于信号量的计数器。C/OS-II的事件控制块有4种类型,需要使用4个不同的函数来创建,分别是OSSemCreate()、OSMutexCreate()、OSMboxCreate()、OSQCreate()。信号量控制下的任务间通信:在C/OS-II韩静霞,使用信号量进行任务间通信室,首先应该使用信号量创建函数OSSemCreate来创建一个信号量,并且对该信号量赋以初始计数值。如果信号量是用来表示一个或者多个事件的发生,那么该信号量的初始值应设为0 。如果信号量是用于对共享资源的访问,那么该信号量的初始值应设为1 。如果该信号量是用来表示允许任务访问n个相同的资源,那么该初始值显然应该是n,并把该信号量作为一个可计数的信号量使用。C/OS-II的移植移植C/OS-II到一个嵌入式电路板上正常运行,必须满足一下要求:1、处理器的C编译器能产生可重入代码;2、用C语言就可以打开和关闭中断;3、处理器支持中断,并且能产生定时中断(通常在10-100Hz之间);4、处理器支持能够容纳一定量数据的硬件栈区;5、处理器有将栈区指针和其他CPU寄存器独处和存储到栈区或内存中的指令。嵌入式系统的开发5.1开发嵌入式系统的基础知识嵌入式系统的开发过程可以划分为系统需求分析与规格说明、系统设计、构件设计、系统集成与测试等几个步骤。需求分析与规格说明规格说明中应包含进行系统设计所需的足够信息。用户需求通常包括功能部分和非功能部分。非功能部分需求主要是指:性能、成本、尺寸、重量、功耗等。系统需求分析阶段以表格形式使用简练清晰的语句来描述系统的基本需求。表格中包含的主要项目如下:名称、目的、输入和输出、功能、性能、生产成本、功耗、尺寸和重量。为了更准确地反映用户的需求,设计者需要编写规格说明书,它是后续阶段设计者在设计时必须明确遵循的要求。规格说明书的编写应立足于系统分析阶段的系统需求表格,采用形式化的描述工具(如统一建模语言UML)来清晰地描述系统需求。规格说明书中通常只描述系统应做什么,而不要描述系统该怎么做。系统设计也称为概要设计或总体设计,这个阶段要完成的任务是:根据规格说明书中所描述的系统需要实现的功能,确定如何实现这些功能的硬件和软件结构,特别是软件和硬件功能的划分,即哪些功能由硬件完成,哪些功能由软件完成,以求满足系统对功能、性能、成本、功耗等的要求。首先要集中考虑系统中的功能元素,然后在建造硬件和软件结构时考虑非功能约束。构件设计也称为详细设计,构件通常既包括硬件(如FPGA、专用功能芯片、电路板等),也包括软件模块。系统设计和构件设计是嵌入式系统开发过程中两个最关键的阶段。系统集成与测试测试(Test)与调试(D而不敢)既有联系又有区别。测试的目的是炎症模块/系统的功能和性能,发现错误。调试的任务是分析测试中发现的错误,检查原因,定位故障位置,采取适当的措施,修改软件/硬件,然后返回重新进行测试。嵌入式系统的开发平台与工具用于编程、调试的计算机称为宿主机(Host),用于程序最终运行的称为目标机(Target),两者借助数据通信手段进行连接。专心-专注-专业