第一篇:电子设计大赛、嵌入式大赛和嵌入式认证考试
嵌入式助理工程师认证考试(大
三、大四)
1.中国电子学会嵌入式专委会定于2011年12月24日进行嵌入式(助理)工程师资格认证考试,上午9:00-11:00 笔试,下午2:00-4:00 实践,地点在咱们学校。实践题由李老师出题,笔试题全国统一。实践题成绩占30%,笔试题成绩占70%。
2.申请资格:本科在校大
三、大四学生。
3.报考方向:嵌入式软件方向(Linux为主);嵌入式硬件方向(ARM为主);嵌入式系统(单片机)。
4.报名时间:2011年11月23日之前。
5.申报材料:(1)交标准2寸蓝底彩色免冠照片1张(背面写清楚曲阜师范大学,姓名)
(2)电子版材料:嵌入式系统(助理)专业技术资格认证申请表。
6.报考嵌入式软件和嵌入式硬件方向的同学可集体订专门教材。
7.嵌入式助理工程师认证考试费:350元/人。
8.具体通知请查看
电子设计竞赛
1.由于学院器件和场地有限,大二和大三的同学每个班限选1~2人(去年参加过比赛的同
学除外),宁缺毋滥。
2.入选要求:(1)必须对电子设计真正感兴趣(这一点最重要);(2)有C语言编程基
础和数字电路设计基础,有一定的动手能力。
3.个别优秀的同学如果没有入选,还特别想参赛,可找李光顺老师面谈。
博创杯全国嵌入式设计大赛
主要是大三的同学,少数有准备的大二同学也可以参赛,每个班没有人数限制,可自己组队也可以报名到李老师那儿,然后再统一协调组队。
博创杯全国嵌入式设计大赛和电子设计竞赛往年成绩很不错,近两年已获得全国二等奖2项,全国三等奖1项,省级奖若干。每一次成绩的获得都是同学们辛勤努力的结果,包含了同学们无数的汗水,牺牲了很多休息的时间,希望报名参赛的同学有心理准备,不是凭借一时的兴趣和冲动就能取得成功的。每个班的班长把参加电子设计竞赛和嵌入式设计竞赛的同学名单于下周二(11月22日)之前报给李老师,由李老师指导大家进行备战。
第二篇:嵌入式大赛短信邀请函
您好!***主席,我是电子系外联部干事***,广州大学华软软件学院将于2012年5月15日星期二下午2点在礼堂一举行第十届科技学术节之第四届嵌入式竞赛决赛,现诚邀您为本次活动莅临指导!邀请函已经发到您的QQ邮箱了,请查看!打扰了,谢谢!
您好!***副主席,我是电子系外联部干事***,广州大学华软软件学院将于2012年5月15日星期二下午2点在礼堂一举行第十届科技学术节之第四届嵌入式竞赛决赛,现诚邀您为本次活动莅临指导!邀请函已经发到您的QQ邮箱了,请查看!打扰了,谢谢!
您好!***副书记,我是电子系外联部干事***,广州大学华软软件学院将于2012年5月15日星期二下午2点在礼堂一举行第十届科技学术节之第四届嵌入式竞赛决赛,现诚邀您为本次活动莅临指导!邀请函已经发到您的QQ邮箱了,请查看!打扰了,谢谢!
第三篇:嵌入式考试总结
嵌入式系统定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统应用:工业控制火控系统、飞行控制系统、测试仪器、医疗设备、游戏机 应用发展阶段:无操作系统的嵌入算法阶段、简单监控式的实时操作系统阶段、通用的嵌入式网络实时操作系统阶段
嵌入式系统已经有了近30年的发展历史,它是硬件和软件交替发展的双螺旋式发展
嵌入式系统特点:1 面向特定应用、2 可裁减、3.处理器体系结构和类型多样化。4.大多都有实时操作系统。5 一般有实时性要求。6资源比较少。7 软件固化在存储器芯片中。8 通常要求功耗小。9 集成度高。10嵌入式系统本身不具备自举开发能力 嵌入式系统的组成:硬件平台、板级支持包(BSP)、操作系统、应用程序 嵌入式系统硬件平台:嵌入式处理器、存储器件、外设接口
嵌入式CPU的特点:1 对实时多任务操作系统具有很强的支持能力。2具有功能很强的存储区保护功能。3 处理器结构可扩展。4 低功耗。嵌入式CPU的分类:嵌入式微控制器(EMCU)、嵌入式微处理器(EMPU)、嵌入式DSP处理器(EDSP)、嵌入式片上系统(ESoC)
MCU(MicroController Unit)MCU芯片内集成了ROM/EEPOM、RAM、总线、总线逻辑、I/O等必要功能和外设。已有20多年的历史。如51,98/96。
与MPU比,单片化、体积小,功耗、成本低,可靠性高,能节省系统开支、降低出错概率和减少高频干扰适合控制系统。
发展:内核化(内核 +IP、内核 +FPGA、内核+外围模块)、专用化(接口单片机、网络单片机、射频单片机、数采单片机、电力线载波…)
DSP(Digital Signal Processor)专用于信号处理,采用哈佛体系结构,指令系统特殊,具有较高的编译效率和指令执行速度。如数字滤波、快速傅立叶变换和离散余弦变换等DSP算法。
MPU(MicroProcessor Unit)由CPU演变而来,32位以上。与通用CPU比,MPU只保留与应用相关的功能和硬件,除去冗余的功能部分,实现最少的功耗和资源,满足嵌入式需求。与工业控制计算机比,MPU体积小,重量轻,成本低,可靠性高。常见的嵌入式处理器核:ARM、MIPS、PowerPC、68K、x86 SoC(System on Chip)是嵌入式系统多种形式的统一归宿SOC最大的特点,成功实现软硬件无缝结合,直接在处理器芯片内嵌入操作系统的代码模块。SOC具有极高的综合性。由于绝大部分系统构件都是在系统内部,整个系统特别简洁,不仅减少了功耗和体积,并且提高了可靠性,和设计效率。降低内部工作电压,减少芯片功耗;减少芯片引脚数目,简化制造过程;简化外围驱动单元,优化处理速度; 优化内部电路结构,降低系统噪声
冯.诺伊曼结构,也称普林斯顿结构、程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
哈佛结构:程序指令存储和数据存储分开的存储器结构。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。CISC:复杂指令集 特点是指令数量庞大臃肿,具有大量的指令和寻址方式每个指令不管执行频度高低都处于同一个优先级,程序员的编程工作相对容易。但它的致命弊端是执行效率低下,处理器的晶体管被大量低效的指令所占据,资源利用率颇为低下。
RISC:精简指令集 8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。在通道中只包含最有用的指令 确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单嵌入式处理器采用RISC 指令流水:执行指令的过程:(1)取指令(Fetch)(2)译码(Decode)(3)取操作数(Fetch Operant)(4)执行指令(Execute)(5)写回(Write Back)采用指令流水线技术,提高处理器的执行效率
嵌入式处理器的技术指标 :1.功能:集成的存储器、外设、接口等的种类和数量;2.字长:字长指数据总线位数;3.处理速度:4.寻址能力:寻址能力取决于地址总线的宽度;5.功耗:工作功耗、待机功耗等,功耗与频率,功耗与电压;6.温度:民用、工业用、军用、航天等级别。民用范围为0℃~70℃
嵌入式处理器的选择:
1、技术指标原则:首要考虑功能,其次考虑对其他芯片的支持情况,再次考虑处理器的字长、寻址空间、主频、功耗等;
2、熟悉原则: 降低开发风险和难度;
3、成本原则:处理器成本和额外成本;
4、支持工具原则:选择合适的软件开发工具;
5、整体原则:全盘考虑处理器和其他部件或软件的兼容和约束
嵌入式处理器的发展方向:
1、多核结构:在一个处理器中集成两个或多个完整的CPU核;提升处理器的并行性能。缩短核间的互连和通信延迟。多核结构简单,易于优化设计。
2、更低的功耗:功耗更小,工作方式:等待、暂停、休眠、空闲、节电等;
3、更先进的工艺和更小的封装;
4、更宽的工作电压范围:3.3~5.5 V 2.2~6 V。最低工作电压1.8 V。ARM(Advanced RISC Machines)公司是全球领先的16/32位RISC微处理器知识产权设计供应商
ARM优点:全新设计的RISC结构的32位处理器;因为是全新的设计,开始就是32位,没有历史遗留问题(比如x86)。所以,更便于对处理器结构进行优化;价格低廉;ARM公司不生产芯片,专心研究处理器内核的解决方案;低功耗
ARM架构:32位ALU31个;32位通用寄存器及6位状态寄存器;32X8位乘法器;32X32位桶型移位寄存器;指令译码及控制逻辑;指令流水线;数据地址寄存器 ARM的流水线结构:一条指令的执行可分成若干阶段:(1)取指,从存储器中取出指令(FETCH)(2)译码,指令译码(DEC)(3)取操作数,如从寄存器读取(REG)(4)执行计算(ALU)(5)存储器访问,操作数与存储器有关(Mem)(6)结果写回寄存器(RES)
程序执行时间:T(proc)=N(inst)*CPI/f(clk)T(proc):程序执行时间N(inst):一个程序的指令CPI:执行一条指令的平均周期f(clk):处理器的时钟周期,减少程序执行时间的关键是减少CPI 流水线除了加深流水线的深度和加快时钟频率来提高流水线的效率和吞吐率外,还要解决:结构相关:在流水线中重叠执行的指令,产生资源冲突。ARM中采用I-Cache,D-Cache,ALU采用单独加法器计算地址;数据相关:一条指令需要前面指令的执行结果。定向技术(将ALU结果直接送到ALU输入)、流水线互锁(通过硬件检测,暂停至定向技术可以解决)、编译器优化;控制相关:分支指令时。指令预测、计算分支转移成功的PC值
ARM存储结构:ARM架构处理器的存储器寻址空间有4GB;有的带有I-CACHE和D-CACHE;片内不带RAM和ROM。系统需要的RAM、ROM(包括FLASH)都通过总线外接;由于存储器寻址空间达4GB,有的片内带有MMU;允许外接 PCMCIA 存储器的分类:与CPU的联系:主存:直接和CPU交换信息;辅存:不能直接和CPU交换信息。按存储元件使用的材料:半导体存储器(常作主存);磁存储器(磁带,磁盘);光存储器(光盘)。(对半导体存储器)按读写工作方式可分:RAM(随机存储器),ROM(只读存储器)存储器技术指标:1.存储容量,2.存取速度3.易失性4.只读性5.功耗6.可靠性7.价格 存储空间的组织:实际存储器由多种类型和容量的存储芯片组成。合理安排每个存储芯片的地址范围。存储空间的组织问题实质是地址译码电路的设计问题。地址译码的过程包括两个步骤:先选中某个存储芯片(称为片选),其次选中片内的某个单元(称为片内寻址)。片选过程:由译码电路对高位地址进行译码后产生的片选信号;片内寻址:由地址译码电路对低位地址进行译码实现存储单元寻址。常用的片选方法:线选法、全译码法、部分译码法和混合译码法等。
RAM是一种可读可写的内存,在上电的情况下才能保持在存储器中。(1)存放当前正在执行的程序和数据。(2)存放I/O缓冲数据(3)作为中断服务程序中保护现场信息的堆栈 ROM分类:(1)掩膜型ROM:内容在芯片生产出来之前指定。(2)PROM:一次性编程的只读存储器,OTP(Once Time Program)。(3)EPROM:可以修改ROM中的数据,即重复烧录。紫外线照射。4)E2PROM:断电情况下保存数据,又能在应用系统中在线修改
Flash存储器概述:Flash存储器就是俗称的闪存,它是一种非易失性存储芯片,Flash存储器具有高密度、低价格、非易失性、快速(读取速度较快)及可用电擦除可编程等特点。Flash存储器被广泛应用于各类移动存储器卡、U盘、数码相机记忆卡、记忆棒等。
Flash存储器分类:Flash存储器主要有NOR Flash存储器和NAND Flash存储器两类。NOR Flash:基于Intel公司所开发的架构,可以随机读取任意单元的内容,读取速度较快。写入和擦除的速度较低,以块(Block)为单位进行数据的读/写。最大优点是可以直接从Flash中运行程序,缺点是工艺复杂,价格也比较贵。
NAND Flash:基于东芝公司(Toshiba)所开发的结构通过I/O指令的方式进行读取,因此需要通过驱动程序来读取。存储容量较大、成本较低,常用来制作记忆卡。存储空间是按照块和页(Page)的概念来组织的。
接口的功能:外设识别和寻址,速度匹配和缓冲,时序匹配,信息格式匹配和信息类型转换等。接口的结构:接口一般由数据存储(缓冲)电路,控制命令逻辑电路,状态设置和存储电路构成 接口数据传输的方式:1.程序查询方式。2.中断方式。3.DMA。
接口设计的过程:接口设计首先在硬件上分析接口两侧情况.然后考虑CPU总线与I/O设备之间信号的转换.合理选用I/O接口芯片.进行硬件连接.最后进行接口驱动程序分析与设计。总线:是各种信号线的集合,是嵌入式系统中各部件之间传输数据、地址和控制信息的公共通路.总线的主要参数:总线带宽、总线位宽、总线工作频率等几个.常用的总线:USB总线.I2C总线.DMA总线.SPI总线.I2S总线.CAN总线.RS232C/485总线.IEEE1394总线等
电路:电路是由若干相互连接、相互作用的基本电子器件组成的具有特定功能的电子系统 电路原理图:描述元器件或芯片引脚的逻辑连接的图纸,由元器件、连接、标号等组成。印制电路板(Print Circuit Board,PCB)描述元器件或芯片引脚的物理连接的图纸
采用嵌入式操作系统的必要性:1提高系统的可靠性2提高开发效率,缩短开发周期3能充分发挥32位CPU的多任务潜力
嵌入式操作系统的特点:具备一般操作系统的基本功能,如任务调度、同步机制、中断处理和内存管理等外,还有以下特点:(1)可拆装性(2)支持实时性(3)统一的接口(4)操作方便简单(5)提供强大的网络功能(6)强稳定性、弱交互性(7)固化代码(8)更好的硬件适应性
实时系统主要衡量指标:响应时间(Response Time)控制应用中最重要;生存时间(Survival Time)在此时间内数据有效;吞吐量(Throughout)一定时间内系统可以处理事件的总数 实时操作系统的分类:一.速度分,强实时系统、一般实时系统、弱实时系统.二.确定性分,硬实时系统、软实时系统.三.软件结构分,1、单线程程序(1)循环轮询:特点:对简单系统易于实现、没有中断,不会出现随机性问题、应用领域有限、对大量I/O服务的应用实现困难、大的程序不便调试,适合慢速系统(2)有限状态机:特点:小系统易于实现、可以执行快速、只通过输出功能改变机器的响应、应用领域有限、不能保证确定性、大系统难于调试。(3)事件驱动系统,事件驱动系统是能对外部时间直接响应的系统。包括前后台、实时多任务、多处理器。是RTOS的主要形式。四.开放性分
1、商用系统:特点:充分满足了模块化设计的要求,可把程序按照模块化的要求自然分解成若干独立的任务。启动监控任务程序,提高了系统的可靠性。良好的开发工具,提高了开发效率。特殊设计,避免系统崩溃。产品不断升级。
2、专用系统,一些专业厂家为本公司产品特制的OS,不提供应用开发者使用。如CISCO的网络产品的EPOC等。特点:操作系统功能较弱。针对性强、安全性高
3、开放系统,如:各类嵌入式LINUX(RT LINU、μCLINUX)、μC/OS等。特点:源码公开、功能简单、技术支持差、系统稳定性差、对开发者要求高。
典型的RTOS包括:
1、RTOS基本内核:RTOS基础和核心。包括任务管理、中断管理、基本的通信管理和内存管理。其中对外设的管理只提供中断管理,不提供具体的操作。
2、扩展内核:方便用户使用的扩展,建立在基本内核上。如GUI、TCP/IP、浏览器、电源管理、文件管理
3、设备驱动接口:在内核和IO间,定义软硬件的界线,方便RTOS移植和升级。有的统一于RTOS基本内核。
4、API RTOS与通用操作系统的(GPOS)比较:基本设计原则 :GPOS尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。RTOS:采用各种算法和策略,始终保证系统行为的可预测性(predictability),即在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求.任务调度策略:GPOS:基于优先级的抢先式调度策略,对于优先级相同的进程则采用时间片轮转调度方式,用户进程可以通过系统调用动态地调整自己的优先级,操作系统也可根据情况调整某些进程的优先级。RTOS :采用固定优先级抢先式调度方式,进程的优先级是固定不变的,并且该优先级是在运行前通过某种优先级分配策略来指定的。内存管理:GPOS:虚存管理机制 RTOS:在原有虚存管理机制的基础上增加页面锁。得到 了虚存管理机制为软件开发带来的好处,又提高了系统的可预测性。缺点是由于TLB等机制的设计也是按照注重平均表现的原则进行的,因此系统的可预测性并不能完全得到保障,采用静态内存划分的方式,为每个实时任务划分固定的内存区域。这种方式的优点是系统具有较好的可预测性,缺点是灵活性不够好。中断处理 GPOS:中断处理程序的优先级被设定为高于任何用户进程。RTOS:一种是除时钟中断外,屏蔽所有其它中断,中断处理程序变为周期性的轮询操作,这些操作由核心态的设备驱动程序或由用户态的设备支持库来完成。优点:充分保证了系统的可预测性。缺点:对环境变化的响应可能不如上述中断处理方式快,另外轮询操作在一定程度上降低了CPU的有效利用率。另一种是对于采用轮询方式无法满足需求的外部事件,采用中断方式,其它时间仍然采用轮询方式。此时中断处理程序与所以其它任务一样拥有优先级,调度器根据优先级对处于就绪态的任务和中断处理程序统一进行处理器调度。这种方式使外部事件的响应速度加快,并避免了上述中断方式带来第二个问题,但第一个问题仍然存在。共享资源的互斥访问 GPOS:采用信号量机制来解决共享资源的互斥访问 RTOS:对传统的信号量机制进行了一些扩展,引入了如优先级继承协议、优先级顶置协议以及Stack Resource Policy等机制,较好地解决了优先级倒置的问题。系统调用以及系统内部操作的时间开销 进程通过系统调用得到操作系统提供的服务,操作系统通过内部操作(如上下文切换等)来完成一些内部管理工作。为保证系统的可预测性,实时操作系统中的所有系统调用以及系统内部操作的时间开销都应是有界的,并且该界限是一个具体的量化数值。而在通用操作系统中对这些时间开销则未做如此限制
系统的可重入性 在通用操作系统中,核心态系统调用往往是不可重入的,当一低优先级任务调用核心态系统调用时,在该时间段内到达的高优先级任务必须等到低优先级的系统调用完成才能获得CPU,这就降低了系统的可预测性。因此,实时操作系统中的核心态系统调用往往设计为可重入的。
辅助工具 实时操作系统额外提供了一些辅助工具,如实时任务在最坏情况下的执行时间估算工具、系统的实时性验证工具等,可帮助工程师进行系统的实时性验证工作。
操作系统的移植:嵌入式操作系统还有一个特点是,针对不同的平台,系统不是直接可用的,一般需要经过针对专门平台的移植操作系统才能正常工作。嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行
操作系统的移植大体可以分为三个层次:结构层次的移植。如果待移植处理器的结构不同于任何已经支持的处理器结构。平台层次的移植。如果待移植处理器是某种操作系统已支持体系的处理器。板级移植。如果所用处理器已被操作系统支持,就只需要板级移植了。包括驱动程序的编写和环境变量设置等内容等
Windows CE系统架构:Windows CE属于比较典型的微内核操作系统。在内核中仅仅实现进程、线程、调度及内存管理等最基本的模块,而把图形系统、文件系统及设备驱动程序等等都作为单独的用户进程来实现
WinCE系统包括四层结构:应用程序、WinCE内核映像、板级支持包(BSP)、硬件平台。BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,它主要的功能是给上层提供统一接口,同时屏蔽各种硬件底层的差异,以及提供操作系统的驱动及硬件驱动。简单的说,就是BSP包含了所有与硬件有关的代码,为操作系统提供了硬件平台无关性
BSP组成:是一个包括启动程序Bootloader、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备的驱动程序和配置文件的软件包。
WinCE BSP组成:OEM改编层,Bootloader,设备驱动,配置文件
Windows CE开发环境搭建:1安装ActiveSync4.5用于连接WindowsCE设备和安装桌面Windows的PC机的工具2安装Visual Studio 2005开发套件3安装Visual Studio 2005 SP1 4安装目标设备SDK:Windows Mobile 6 professional SDK,Windows Mobile 6 professional image(CHS)
嵌入式系统的开发模式:嵌入式的开发与通用计算机系统的开发的最大不同是嵌入式系统采用交叉开发的架构。首先,利用主机系统上丰富的资源及良好的开发环境开发和仿真调试目标系统上的软件。然后通过接口将交叉编译的目标代码传输到目标系统上,并用交叉调试器在监控程序或实时内核/操作系统的支持下进行实时分析和调度。最后,目标系统在特定的环境下运行
嵌入式系统交叉开发环境:指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器,交叉编译器,交叉调试器,仿真器,下载器等,由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。
嵌入式开发环境的建立:1根据目标系统的处理器体系结构选择合适的工具和仿真器2根据目标系统上的接口资源,选择合适的开发主机和目标系统的联系方式3选择合适的开发主机操作系统(WINDOWS,LINUX)4在目标机和主机系统安装相应开发工具,建立开发环境5嵌入式软件开发工具根据不同的阶段分类:需求分析工具,软件设计工具,编码调试工具,测试工具,配置管理工具、维护工具等。
嵌入式软件开发工具根据嵌入式软件开发分类:与嵌入式QS相关的开发工具,用于开发:基于嵌入式OS的应用,部分驱动程序等;与嵌入式QS无关的开发工具,用于开发:基本的驱动程序,辅助硬件调试程序,系统软件等
交叉调试器:调试程序和被调试程序运行在不同机器上的调试器。调试器通过某种方式能控制目标机上被调试程序的运行方式。通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等。典型的交叉调试器方法:Crash and Burn,ROM Moniter。ROM Emulator,In Circuit E mulator,On Chip Debugging ROM Moniter:ROM Monitor是被固化且运行在目标机上的一段程序,负责监控目标机上被调试程序的运行,与宿主机端的调试器一起完成对应用程序的调试。调试器与ROM Monitor之间的通信遵循远程调试协议。
ROM Monitor能配合调试器完成:程序映像下载;对目标机系统内存的读写;对寄存器的读写;设置和清除不同类型的断点;单步执行指令;复位系统等调试功能
调试过程(1)启动目标机,监控器掌握对目标机的控制,等待和调试器建立连接;(2)启动调试器,并和监控器建立起通信连接;(3)使用调试器将应用程序下载到目标机上的RAM空间中;(4)使用调试器进行调试,发出各种调试命令,监控器解释并执行这些命令,通过目标机上的各种异常来获取对目标机的控制,将命令执行结果回传给调试器;(5)如果程序有问题,在调试器的帮助下定位错误;修改之后再重新编译链接并下载程序,开始新的调试,如此反复直至程序正确运行为止。
ROM Emulator:ROM Emulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROM Emulator设备上ROM芯片的内容:ROM Emulator设备上的ROM芯片的地址可以实时地映射到目标机的ROM地址空间,从而仿真(Emulation)目标机的ROM。
ICE(In-Circuit Emulator)是一种用于替代目标机上CPU的设备,即在线仿真器。它比一般的CPU有更多的引出线,能够将内部的信号输出到被控制的目标机。ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。适用于:调试实时的应用系统;调试设备驱动程序;对硬件进行功能和性能的测试;实时性能分析
OCD(On Chip Debugging)是CPU芯片提供的一种调试功能(片上调试),可以认为是一种廉价的ICE功能:OCD的价格只有ICE的20%,但提供了ICE 80%的功能。调试方法:1)将CPU的模式分为一般模式和调试模式2)一般模式下,CPU从内存读取指令执行3)调试模式下,CPU首先从调试端口读取指令,通过调试端口可以控制CPU进入和退出调试模式;Host端的调试器可以直接向目标机发送要执行的指令,读写目标机的内存和各种寄存器,控制目标程序的运行以及完成各种复杂的调试功能。
软件仿真器调试的特点:优点:最大好处就是可以不用真正的目标机,可以在目标机环境并不存在的条件下开发目标机上的应用系统,并且在调试时可以利用Host资源提供更详细的错误诊断信息。缺点:和实际的运行环境差别很大;设备模拟的局限性较大;实时特性较差;对Host的资源要求较高。适用范围:对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序
嵌入式软件测试工具:能够用来辅助测试的工具,主要用来支持测试人员的工作。一般有内存分析工具,性能分析工具,覆盖分析工具,缺陷跟踪工具等。
软硬件分开设计存在问题:缺少统一的软硬件表示方法;划分依靠先验定义;不能够验证整个系统;通过HW/SW边界时很难发现不兼容问题;缺少成熟的设计流程;上市时间问题;描述更改变得困难
软硬件协同设计定义:软硬件共同设计目的是为硬件和软件的协同描述,验证和综合提供一种集成环境
软硬件协同设计的基本需求:统一的软硬件描述方式;交互式软硬件划分技术 ;完整的软硬件模型基础;正确的验证方法 软件硬件协同设计的设计流程:用HDL语言和C语言进行系统描述并进行模拟仿真和系统功能验证;对软硬件实现进行功能划分,分别用语言进行设计并将其综合起来进行功能验证和性能预测等仿真确认(协调模拟仿真);如无问题则进行软件和硬件详细设计;最后系统测试 软件硬件协同设计的特点:缩短开发周期;取得更好的设计效果;满足苛刻的设计限制 ; 这种平台的推出将不仅包含芯片本身,还必须包含完整的开发系统和典型应用实例,而供应商提供的服务和技术支持也当然要成为产品不可分割的一部分 缺点:典型的手动划分(manual Partition);固定应用领域(carefully very specialized);逐渐增长的评估需求支持很弱(no abstract models);主要强调性能;模型的连贯性在设计重用中不被支持;商业系统更强调协同验证(co-verification)方面(more achievable goal)
嵌入式系统典型的接口(RS232RS484USB、同步串口及其他串口、I2C、I2S、AC97、LAN等的应用特点): RS232:采用RS232的三根线进行通信。接口为D型的9针阳性的插头。低速红外异步通信接口,支持使用红外的双向无线通信,提供发送编码器和接收解码器,支持IrDAV1.11的物理链路。不支持IR LED驱动器和接收放大器。支持半双工,最高波特率115.2Kb/s。蓝牙 I2C总线接口:由PHILIPS创建的双线方式串行总线.双向数据线用于输入输出,双向时钟线用于控制和采样,每个设备有一个地址,采用主从方式通信。实现主机与外设间通信.允许多主机,此时采用裁决控制器。I2C单元是处理器内部总线上的设备。USB:Host控制器基于PCI,提高了系统性能,即插即用,无需手动设置地址、中断……热插拨,系统不需重启便可工作.易于扩展,理论上可连接多达127个设备,但一般都只限于连接两三个设备,真正组网后的系统稳定因素需要探讨.USB2.0以低成本实现高达480Mb/s的传输率(USB1.0的全速设备可达12Mb/s)接口标准统一、端口供电 AC97控制器:支持AC97 V2.实现话音数字化
内部集成电路声音控制器(I2S)用于数字立体声的规程 多媒体卡控制器(MMC)
Boot Loader技术:嵌入式系统中的 OS 启动加载程序.引导加载程序(包括固化在固件(firmware)中的boot代码,和Boot Loader两大部分,是系统加电后运行的第一段软件代码).相对于操作系统内核来说,它是一个硬件抽象层,系统的加载启动任务就完全由 Boot Loader 来完成,在操作系统内核运行之前运行一段小程序
功能:初始化硬件设备,建立内存空间的映射图,调整系统软硬件环境,以便操作系统内核启动
不通用:依赖于硬件,依赖于具体的板级配置 不同的 CPU有不同的Boot Loader 多阶段的 Boot Loader:提供更为复杂的功能,以及更好的可移植性,从固态存储设备上启动的 Boot Loader 大多都是 2 阶段的启动过程,启动过程可以分为 stage 1和stage2两部分 两种不同的操作模式:一.启动加载模式:自主(Autonomous)模式,从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,Boot Loader 的正常工作模式
二.下载模式:通过串口连接或网络连接等通信手段从主机(Host)下载文件,如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 BootLoader 写到目标机上的FLASH 类固态存储设备中。通常在第一次安装内核与根文件系统时被使用系统更新也会使用 Boot Loader 的这种工作模式,通常都会向它的终端用户提供一个简单的命令行接口
第四篇:嵌入式考试笔试
基于双核处理器的视频观瞄设备,同时实现标清分辨率的红外和可见光两路模拟复合信号采集和处理,且由两个内核中的CoreA完成红外通道视频信号处理,CoreB完成可见光通道视频处理,系统需要按照嵌入式系统模式实现“通道关联”实时红外信号检测与目标型号判别。
要求:
1.画出实现此功能的硬件流程图和软件流程图
2.程序会用到数据结构和数据传输流程
3.在多任务情况下,进程和线程的区别与联系。以及如何保持同步
4.影响实时性的主要参数,以及如何改善。
解:
12数据结构会用到乒乓双缓冲
3进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.联系:线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
区别:进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
多任务下的同步:在多任务操作系统下,要保持线程和进程的同步利用:1临界区2互斥锁3信号量4事件机制
4.所谓的实时性,也就是从系统发生到系统响应的时间。或者,更广泛一点,也就是从用户输入一个信息到系统处理完以后,返回给用户的这个反应时间。影响实时性一般有一下几个方面:
1>中断响应时间
2>RTOS进程调度响应时间
3>任务切换时间
4>应用程序响应时间
改善:
中断的响应时间是有处理器决定的,可以有系统设置来改善。或者寻找更好的处理器。
对于进程调度本身,有很多经典的算法,可参考操作系统的理论部分,有些算法的实时性稍高,但整体性就稍差,有些则相反,可以选择高效的进程调度策略,来提高进程响应速度。另外,尽量减少系统的进程数,进程越少,处理器的负担越小,响应就越快。进程中屏蔽中断的地方就越少,则整体响应时间就越快。
采用抢占式内核处理形式
提高应用程序的执行效率
第五篇:嵌入式系统中FFT算法研究(全国电子设计大赛一等奖作者总结)
此文章乃作者在获得全国电子设计大赛一等奖之后的总结
这里用到的是浮点计算
作 者:华东交通大学 肖宛昂
北京航天指挥控制中心 张向荣
摘 要:首先分析实数FFT算法的推导过程,然后给出一种具体实现FFT算法的C语言程序,可以直接应用于需要FFT运算的单片机或DSP等嵌入式系统中。关键词:嵌入式系统 FFT算法 单片机 DSP
目前国内有关数字信号处理的教材在讲解快速傅里叶变换(FFT)时,都是以复数FFT为重点,实数FFT算法都是一笔带过,书中给出的具体实现程序多为BASIC或FORTRAN程序并且多数不能真正运行。鉴于目前在许多嵌入式系统中要用到FFT运算,如以DSP为核心的交流采样系统、频谱分析、相关分析等。本人结合自己的实际开发经验,研究了实数的FFT算法并给出具体的C语言函数,读者可以直接应用于自己的系统中。倒位序算法分析
按时间抽取(DIT)的FFT算法通常将原始数据倒位序存储,最后按正常顺序输出结果X(0),X(1),...,X(k),...。假设一开始,数据在数组 float dataR[128]中,我们将下标i表示为(b6b5b4b3b2b1b0)b,倒位序存放就是将原来第i个位置的元素存放到第(b0b1b2b3b4b5b6)b的位置上去.由于C语言的位操作能力很强,可以分别提取出b6、b5、b4、b3、b2、b1、b0,再重新组合成b0、b1、b2、b3、b4、b5、b6,即是倒位序的位置。程序段如下(假设128点FFT):
/* i为原始存放位置,最后得invert_pos为倒位序存放位置 */
int b0=b1=b2=b3=b4=b5=6=0;
b0=i&0x01;b1=(i/2)&0x01;b2=(i/4)&0x01;
b3=(i/8)&0x01;b4=(i/16)&0x01;b5=(i/32)&0x01;
b6=(i/64)&0x01;/*以上语句提取各比特的0、1值*/
invert_pos=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;
大家可以对比教科书上的倒位序程序,会发现这种算法充分利用了C语言的位操作能力,非常容易理解而且位操作的速度很快。实数蝶形运算算法的推导
我们首先看一下图1所示的蝶形图。
蝶形公式:
X(K)= X’(K)+ X’(K+B)W PN , X(K+B)= X’(K)-X’(K+B)W PN
其中W PN= cos(2πP/N)-jsin(2πP/N)。设 X(K+B)= XR(K+B)+ jXI(K+B), X(K)= XR(K)+ jXI(K), 有:
XR(K)+jXI(K)= XR’(K)+jXI’(K)+[ XR’(K+B)+ jXI’(K+B)]*[ cos(2πP/N)-jsin(2πP/N)];继续分解得到下列两式:
XR(K)= XR’(K)+ XR’(K+B)cos(2πP/N)+ XI’(K+B)sin(2πP/N)(1)XI(K)= XI’(K)-XR’(K+B)sin(2πP/N)+XI’(K+B)cos(2πP/N)(2)
需要注意的是: XR(K)、XR’(K)的存储位置相同,所以经过(1)、(2)后,该位置上的值已经改变,而下面求X(K+B)要用到X’(K),因此在编程时要注意保存XR’(K)和XI’(K)到TR和TI两个临时变量中。
同理: XR(K+B)+jXI(K+B)= XR’(K)+jXI’(K)-[ XR’(K+B)+jXI’(K+B)]*[ cos(2πP/N)-jsin(2πP/N)]继续分解得到下列两式: XR(K+B)= XR’(K)-XR’(K+B)cos(2πP/N)-XI’(K+B)sin(2πP/N)(3)XI(K+B)= XI’(K)+ XR’(K+B)sin(2πP/N)-XI’(K+B)cos(2πP/N)(4)注意:
①
在编程时, 式(3)、(4)中的XR’(K)和 XI’(K)分别用TR和TI代替。
②
经过式(3)后,XR(K+B)的值已变化,而式(4)中要用到该位置上的上一级值,所以在执行式(3)前要先将上一级的值XR’(K+B)保存。
③
在编程时, XR(K)和 XR’(K), XI(K)和 XI’(K)使用同一个变量。
通过以上分析,我们只要将式(1)、(2)、(3)、(4)转换成C语言语句即可。要注意变量的中间保存,详见以下程序段。
/* 蝶形运算程序段 ,dataR[]存放实数部分,dataI[]存放虚部*/ /* cos、sin函数做成表格,直接查表加快运算速度 */ TR=dataR[k];TI=dataI[k];temp=dataR[k+b];/*保存变量,供后面语句使用*/ dataR[k]=dataR[k]+dataR[k+b]*cos_tab[p]+dataI[k+b]*sin_tab[p];dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p];dataR[k+b]=TR-dataR[k+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];dataI[k+b]=TI+temp*sin_tab[p]-dataI[k+b]*cos_tab[p];3 DIT FFT 算法的基本思想分析
我们知道N点FFT运算可以分成LOGN2 级,每一级都有N/2个碟形。DIT FFT的基本思想是用3层循环完成全部运算(N点FFT)。
第一层循环:由于N=2m需要m级计算,第一层循环对运算的级数进行控制。
第二层循环:由于第L级有2L-1个蝶形因子(乘数),第二层循环根据乘数进行控制,保证对于每一个蝶形因子第三层循环要执行一次,这样,第三层循环在第二层循环控制下,每一级要进行2L-1次循环计算。
第三层循环:由于第L级共有N/2L个群,并且同一级内不同群的乘数分布相同,当第二层循环确定某一乘数后,第三层循环要将本级中每个群中具有这一乘数的蝶形计算一次,即第三层循环每执行完一次要进行N/2L个碟形计算。
可以得出结论:在每一级中,第三层循环完成N/2L个碟形计算;第二层循环使第三层循环进行 2L-1次,因此,第二层循环完成时,共进行2L-1 *N/2L=N/2个碟形计算。实质是:第二、第三层循环完成了第L级的计算。
几个要注意的数据:
①
在第L级中,每个碟形的两个输入端相距b=2L-1个点。
②
同一乘数对应着相邻间隔为2L个点的N/2L个碟形。
③
第L级的2L-1个碟形因子WPN 中的P,可表示为p = j*2m-L,其中j = 0,1,2,...,(2L-1-1)。
以上对嵌入式系统中的FFT算法进行了分析与研究。读者可以将其算法直接应用到自己的系统中,欢迎来信共同讨论。(Email:xiaowanang@163.net)
附128点DIT FFT函数:
/* 采样来的数据放在dataR[ ]数组中,运算前dataI[ ]数组初始化为0 */ void FFT(float dataR[ ],float dataI[ ]){int x0,x1,x2,x3,x4,x5,x6;int L,j,k,b,p;float TR,TI,temp;/********** following code invert sequence ************/ for(i=0;i<128;i++){ x0=x1=x2=x3=x4=x5=x6=0;x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;x3=(i/8)&0x01;x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01;xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;dataI[xx]=dataR;} for(i=0;i<128;i++){ dataR=dataI;dataI=0;} /************** following code FFT *******************/ for(L=1;L<=7;L++){ /* for(1)*/ b=1;i=L-1;while(i>0)
{b=b*2;i--;} /* b= 2^(L-1)*/ for(j=0;j<=b-1;j++)/* for(2)*/ { p=1;i=7-L;while(i>0)/* p=pow(2,7-L)*j;*/ {p=p*2;i--;} p=p*j;for(k=j;k<128;k=k+2*b)/* for(3)*/ { TR=dataR[k];TI=dataI[k];temp=dataR[k+b];dataR[k]=dataR[k]+dataR[k+b]*cos_tab[p]+dataI[k+b]*sin_tab[p];dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p];dataR[k+b]=TR-dataR[k+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];dataI[k+b]=TI+temp*sin_tab[p]-dataI[k+b]*cos_tab[p];} /* END for(3)*/ } /* END for(2)*/ } /* END for(1)*/ for(i=0;i<32;i++){ /* 只需要32次以下的谐波进行分析 */ w=sqrt(dataR*dataR+dataI*dataI);w=w/64;} w[0]=w[0]/2;} /* END FFT */