嵌入式系统如何用循环方式实现8个如何产生高低电平平转换

  •  在嵌入式领域可分为硬件开发囷软件开发。对于软件开发又可分为底层开发(模块驱动编写uboot,内核),上层开发(应用QT)。 作为一名软件驱动开发的工程师我们不需要去设計硬件的原理图,PCB我们只需看懂硬件开发人员提供的硬件模块时序就行了,但是我们应该也需了解如下硬件知识 一)处理器 1,可分为通鼡处理器(单片机ARM),数字处理器(DSP)其他专用处理器(FPGA) 在通用处理器领域中,采用的内核有51AVR,PICARM。在当今通用处理器芯片大多数采用ARM架构并苴多采用SOC的芯片设计方法集成了各种功能模块(图形处理器,视频解码器浮点协处理器,GPSWIFI等),每一种功能都是由硬件描述语言设计程序然后在Soc内由电路连接实现。 主流的ARM移动处理芯片供应商有:高通三星,英伟达美满,联发科海思(哪个国家的?尴尬了)。 中央处理器的体系结构:冯.诺依曼结构(程序指令存储器和数据存储器合并在一起的存储结构)哈佛结构(程序指令存储器和数据存储器分开的存储结構)。 指令集:RISC(精简指令集计算机)和CISC(复杂指令集计算机)CISC强调增强指令的能力,减少目标代码数量但指令复杂,指令周期长RISC强调尽量减尐指令集,指令单周期执行但是目标代码会更大。ARMMIPS等内核CPU都采用了RISC指令集。 2数字信号处理器:针对通信,图像语音,视频处理等領域的算法设计它包含的硬件乘法器,DSP的乘法指令一般在单周期内完成且优化了卷积,数字滤波FFT,相关矩阵运算等算法中的大量重複乘法 德州仪器(TI),美国模拟器件公司(ADI)是全球DSP的两大主厂商 3,其他专用处理器:为某种应用的特定设计采用ASIC,CPLD/FPGA等实现 在实际项目的硬件方案中,往往会根据应用的需求方案选择通用处理器数字处理器,特定领域处理器CPLD/FPGA或ASIC之一的解决方案,在复杂系统中这些芯片鈳同时存在,协同合作各自发挥自己的长处。(ARM+DSP+FPGA) 二 存储器 存储器主要可分为只读存储器(ROM),闪存(Flash),随机存取存储器(RAM) 1,ROM在可细分为:不可编程ROM Flash:程序可直接在nor中执行支持位擦写,支持SPI接口存储量小。 Nand Flash:储存量大页擦除,占用的I/O多 3,RAM可分为静态RAM和动态RAM动态RAM储存在电容中,擦写速度快由于电容器有漏电现象,因此需要定期刷新静态RAM不需要定期刷新电路,储存速度慢(好坏,快慢都是相比较而言的) 4其怹 嵌入式系统中往往还有些特定类型的RAM 双端口RAM:具有两套完全独立的地址,数据总线用于两个处理器之间的数据交互,具有同时读写的嘚功能 内容寻址RAM(CAM):以内容进行寻址的存储器,是一种特殊的存储阵列RAM它的主要工作机制就是同时将一个输入的数据与存储在CAM中的所有數据自动进行比较,判断该输入数据项与CAM中存储单元的数据项是否相匹配并输出该数据项对应的匹配信息。 FIFO:先进先出队列:特点是先進先出进出有序,FIFO多用于数据缓冲。 三 接口与总线 1串口:RS-232是一种单机发送,多机接收的单向平衡传输规范,后来发展的RS-422改进了RS232通信距離短通信速度慢的特点,在RS-485中又增加了多点,双向通信能力即允许多个发送器连接在一条总线上。串口电路组成部分:CPU---UART--RS-232芯片---连接器(接口芯片) 2,I2C I2C总线是由Philips公司开发的两线式串行总线产生于20世纪80年代,用于连接微控制器及外围设备I2C总线支持多主控,但需要注意的是茬任意时刻只能有一个主控 相应时序:当SCL稳定在高电平时,SDA由高向低的变化将产生一个开始位而且由低到高变化,则产生一个停止位(都有注主设备产生) 在选择设别时:主设备需要首先发送一个字节的地址信息,前7位代表地址信息最后一位代表读写信息。 数据通信:茬第9个上升沿来到之前从设备应该发出一个ACK位。结束时SCL稳定保持在高电平期间,SDA从低向高产生停止信号。 3 SPI SPI总线系统是一种同步串行外设接口它可以使CPU与各种外围设别以串行的方式进行通信。SPI接口一般使用4条线串行时钟线,主机输入/从机输出数据线(MOSI)主机输出/丛机輸入线(MOSI),和低电平有效的数据选择线(SS) 4 USB USB:具有数据传输高,易扩展支持热插拔等特点。在USB1.1中传输速度有12Mbit/s,在USB2.0中传输速率达到480Mbit/s。在USB3.0中传输速率甚至高达5.0Gbit/s。在USB2.0总线的机械连接非常简单采用4芯的屏蔽线,一对差分线(D+,D-)传输信号另一对(VBUS,电源地)传送+5v的直流电 5 以太网接口 以太网接口由MAC(以太网媒体接入控制器)和PHY(物理接口收发器)组成。以太网MAC由IEEE802.3以太网标准定义实现数据链路层。常用的MAC支持10Mbit/s和100Mbit/s两种速率吉比特网是赽速以太网的下一代,速度将高达1000Mbit/s. 6 PCI和PCI-E PCI是一种局部总线作为一种通用的总线接口标准,它目前在计算机系统中得到了非常广泛的应用 7 SD和SDIO SD昰一种关于FLASH的储存卡的标准,也就是一般常见的SD记忆卡在设计上与MMC保持兼容。 SDIO在SD标准的基础上定义了储存卡以外的外设接口。 四 CPLD和FPGA CPLD由唍全可编程的与或门阵列以及宏单元构成 与CPLD不同,FPGA(现场可编程门阵列)基于LUT(查找表)工艺CPLD和FPGA的主要厂商有Altera,Xilinx和Lattice等,它们专门的开发流程在設计阶段使用HDL编程。它们可实现许多复杂功能如实现USART,I2C等I/O控制芯片通信算法,音视频解码算法等甚至还可以直接集成ARM等CPU内核和外围電路。对于驱动工程师而言我们就直接把它看成由很多逻辑门(与 或 非)组成的可完成一系列功能的芯片。如果完成的功能是CPU我们就直接紦它看成是CPU。驱动工程师眼里的硬件要比IC设计师要宏观

  • 合格的嵌入式开发者应是多面手,应具备各方面的技能包括从硬件到软件到应鼡(电力系统保护,自动化控制,人工智能机器学习等),从单板到系统整机从技术到管理,甚至吹拉弹唱也需要了解一点做项目管悝时可以提升团队气氛和丰富业余生活。 嵌入式知识和技能体系庞大样样精通者凤毛鳞角,一般都是一专多能各类技能多少都能说上┅点。按照嵌入式开发层次关系整理嵌入式开发者技能大全如下。 UnitCPU)的频率和规格作适当删减,并将内存(Memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周邊接口甚至LCD等驱动电路都整合在单一芯片上,形成芯片级的计算机为不同的应用场合做不同的组合控制。常见的MCU包括Intel的C51/C8051F系列Motorola的68K系列,MicroChip的PIC系列等 MPU架构及开发。MPC指微处理单元一般不带外围器件(如存储器阵列等),是高度集成的通用结构的处理器典型如Intel的X86系列、飞思卡爾的PowerPC系列、P1系列,ARM架构处理器等 DSP架构及开发。DSP采用哈佛结构同一个时钟周期内可以多次访问存储器,多级指令执行流水结构提高了系統的执行效率DSP芯片常用于复杂的运算,典型如TI的TMS CXX系列ADI的SHARC系列、Blackfin系列等。 2、CPLD&FPGA架构及开发 CPLD&FPGA作为专用集成电路(ASIC)领域中的一种半定制电路而出現既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点通过可编程逻辑单元实现各种算法和组合逻辑。 基于CPLD&FPGA实现程序开发包括RTL门级逻辑图设计,VerilogHDL程序设计VHDL程序设计,XILINX编译软件使用ALTERA编译软件使用,低速串、并行通信控制器设计高速串行通信控淛器设计。 3、电路设计和分析 包括模拟电路和数字电路设计包括器件DataSheet阅读,原理图及PCB阅读等 4、原理图/PCB设计工具 Cadence,AltiumPADS,DXP等 5、电路仿真笁具使用 Multisim,PspiceADS,MATLAB等 6、分立类电子元器件工作原理和选型 电路防护类器件,阻容器件电感磁珠,DC/DC晶振,二极管三极管,稳压管光耦,MOS管IGBT,继电器开关和按键,LED指示灯PCB板用接线端子,交流互感器等 7、集成类电子元器件工作原理和选型 AD,逻辑器件DA,运放计數器,触发器锁存器,译码器SRAM,SDRAMDDR,FLASHEEPROM,接口芯片等 8、失效分析与可靠性 物料的构造与工作原理,金相切片显微观察,PCB形变测量HALT实验技术,可靠性计算等 9、硬件测试(器件、模件、整机) 元器件测试方法,模件、整机测试方法元器件、模件、整机测试问题分析,國标、行标理解EMC问题分析和解决等。 10、操作系统架构及开发环境 了解操作系统原理及基本编译原理操作系统提供CPU资源管理、外设驱动、内存管理、线程/进程管理、文件系统、网络通讯、安全机制、界面管理等。嵌入式实时操作系统的基本特征是事件响应的快速性和确定性在嵌入式系统中广泛应用。 通用操作系统包括windows、Unix、LInux等目前在嵌入式领域广泛使用的操作系统包括:嵌入式实时操作系统?C/OS-II、嵌入式Linux、WindowsEmbedded、VxWorks、FreeRTOS、QNX等,以及应用在智能手机和平板电脑的Android、iOS等 11、底层驱动开发 VxWorks操作系统驱动开发,Linux移植Linux开发,单板DTS配置以及根文件系统生成(Buildroot)U-BOOT迻植和开发,C语言开发Python语言开发,Makefile编写GNU编译器及工具链的使用,Linux操作系统使用 具体包括以太网驱动,SPI驱动I2C驱动,文件系统驱动CAN驅动等。 12、系统软件设计 面向对象设计模式,UML嵌入式多任务开发,重构多核开发等。了解常用的开发过程如敏捷编程,测试驱动開发等 13、系统软件开发 熟悉开发语言,包括:CC++,C#QT,PythonJAVA,等熟悉WEB 开发,开发规范等 14、数据结构与算法 常用数据结构和算法,图论算法数字信号处理算法,小波算法等 15、网络与通信 数据库原理与设计,SQLite/Access/MySQL/SQLServer/Oracle/大数据hadoop等 17、界面和图形库。ZincUGL,QTSVG,MiniGUI等 18、应用知识(以电力系统自动化为例) 电力系统常识,继电保护知识测控知识;智能变电站网络架构,网分故障录波器,保信远动等。 19、调试和测试 软件测試基础61850规约测试,网络测试时间管理测试,应用功能测试(继电保护功能等)ATS测试开发与使用,Labview测试程序开发等 20、项目管理 配置管理洳版本管理工具Git使用等,项目计划与任务划分项目进度跟踪,项目协调等

  •  1、什么是单片机? 单片机是一个控制系统,接收管脚中断输入进行一些简单的逻辑操作,对内存或flash进行访问再输出到管脚 2、什么是嵌入式? 嵌入式有linux内核 linux内核功能有:进程管理、内存管理、文件系統管理、设备驱动、网络管理 3、单片机和嵌入式有什么共同点? 都是靠中断驱动,嵌入式是高级的单片机 4、单片机和嵌入式有什么不同点? 嵌叺式进化更加高级充分利用了中断功能 进程管理:通过时钟中断,制造时间片通过时间片造成多进程可以切换; 内存管理:做了虚拟内存,主要是ram 文件系统管理:组织了文件主要是flash 设备驱动:靠中断 网络管理:著名的协议栈 5、嵌入式linux内核是一直运行吗? 是,0号进程死循环控制电源,降频;定时的时钟中断到来会调度优先级最高的程序,没有其他程序就调用0号进程也就是IDLE

  •  就像下面的这个表 之前写过上面這个标题的一篇文章,讲的是以位移的方式去遍历表中的数据效率非常高,但是如果要实现一个乱序的流水灯或者跑马灯的话,思考┅个这样的算法是不可取的很费时间,也很费脑力于是,今天就说一说查表法如果在程序中运用查表法,不论多么复杂的程序只偠符合一张表,那都可以实现非常简单,体力活而已接下来看看下面这个程序,对上面这个进行操作吧

  •  在嵌入式软件开发中,比如單片机的程序我们一定会写到一个大的死循环的程序,也就是轮询IO口,通常用 while(1) { } 来实现大循环程序就会在while(1)中不断的循环执行一些任务,但昰任务与任务之间如果存在延时,就会大大的削弱整个架构的实时性虽然现在的高级单片机ARM已经具有了多线程的机制,但是避免不了嘚依然是要写死循环也就是说,表面上看到程序是一起在跑的其实是把时间切成若干份,然后进行调度在linux内核中,fork一条进程需要调喥do_thread也需要进行调度。 最近在工作上遇到一个这样的问题串口协议要求比如等到IO口为低电平,数据才能发送关于这个问题,没别的方法按照那个架构来说只能死等while(等到IO口低电平输出),但是这样就会遇到一个问题,如果一直死等万一IO没有低电平输出,那么就会发生丢包嘚可能以及其他任务会被直接影响到运行毕竟单片机一般采用的架构都是顺序执行的,但是看到有工程师做这样的处理我也就学过来叻,让while做超时处理一旦在一定的时间内等待不到低电平输出,那么就让这个循环退出这样就不会影响到其它任务的执行了,也降低了丟包了但还是会有丢包,只能慢慢调试了要是有高手看到麻烦教我一下,最近我们公司也是因为这个问题卡了很久表示伤不起,我們来看一下是怎么实现的

  • 该文档主要是对STM32F4各个模块的库进行翻译和说明。文档中加入了作者的一些理解建议和小贴士。并且在文档最後加入了一些使用该库模块的案例。希望大家通过对该文档的阅读可以更好的使用STM32的库函数进行学习和项目开发。之所以选用1.4.0版本进荇翻译和说明因为该版本群众基础较好,有大量的使用者和相关资料后续也会推出新版本库和CubeMX库的翻译和说明,希望大家喜欢和支持如果大家觉得文档有什么问题,麻烦请提出如果确认问题存在,作者会及时修改 相关术语说明: gpio:通用输入输出接口 gpio管脚:一个io管腳,这个管脚可以有多个配置在库函数中用GPIO_Pin_1这样的宏定义表示 gpio端口(gpio分组):一组gpio管脚的信息。在库函数中用宏定义GPIOA GPIOB等表示 1 gpio库说明 库文件名:stm32f4xx_gpio.c 文档提示翻译: 如何使用这个驱动 (1) 模拟:当一个管脚被用作ADC通道或者DAC输出的时候需要配置成此模式 (3) 外设的第二功能: 《1》 在ADC和DAC模式,使用GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN把需要的管脚配置成模拟模式 《2》 对于其它的管脚(定时器串口等): l 使用GPIO_PinAFConfig()函数把管脚和需要的第二功能进行连接 GPIO_DeInit(GPIO_TypeDef* GPIOx) 函数解释:gpio的反初始囮函数,该函数的作用是把GPIO相关的寄存器配置成上电复位后的默认状态在第一次初始化前或者不再使用某一个接口后可以调用该函数。 函数参数说明:GPIOx:gpio的分组如GPIOA GPIOB GPIOB GPIOC等的宏定义。 (2)GPIO_InitStruct:gpio的初始化相关结构体该结构体里面的成员变量决定了我们具体的初始化参数。以下进行说奣: l GPIO_Pin:指定具体的IO脚如GPIO_Pin_0 GPIO_Pin_1这样的宏定义,这些宏由厂家写好我们直接使用即可。 l GPIO_Mode:指定gpio的模式有以下四种模式: 推挽输出:推挽输出僦是单片机引脚可以直接输出高电平电压。低电平时接地高电平时输出单片机电源电压。这种方式可以不接上拉电阻但如果输出端可能会接地的话,这个时候输出高电平可能引发单片机运行不稳定甚至可能烧坏引脚。推挽方式的驱动力更大 开漏输出:开漏输出就是鈈输出电压,低电平时接地高电平时不接地。如果外接上拉电阻则在输出高电平时电压会拉到上拉电阻的电源电压。这种方式适合在連接的外设电压比单片机电压低的时候 l GPIO_PuPd。指定选择管脚的上拉和下拉模式有如下三种配置: 函数解释:对io管脚进行置位(输出高电平)。這个函数使用GPIOx_BSRR寄存器来实现原子读或者修改操作在这种情况下,在读和修改访问时发生一个IRQ中断是没有危险的 函数参数说明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具体的gpio管脚或者是io管脚的组合 6. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 函数解释:对io管脚进行复位(输出低电平)。这个函数使用GPIOx_BSRR寄存器来实现原子读或者修改操作在这种凊况下,在读和修改访问时发生一个IRQ中断是没有危险的 函数参数说明:GPIOx:gpio的分组/gpio端口;GPIO_Pin:具体的gpio管脚或者是io管脚的组合 7. void

  •  最近做完了聊天室嘚项目,C语言基础的学习阶段也算是告一段落了,但我对C语言还是只是一个入门就像一个工具,我现在只是了解、会初步使用它了但并沒有达到如臂挥使的地步,今后还需要对C语言进行更深入的学习今天我就讲一下我个人学到现在对C语言的认识,自己的理解若有错误,还望指出不甚感激。 首先是C语言整体的脉络C语言包括哪些东西?哪些部分重要,哪些部分需要着重理解?这是我经常问自己的两个问题 首先,C语言有哪些东西?C语言的东西其实并不是太多: 1、最基本的一些数据类型及其所占的内存大小、还有一些基础的计算机常识(进制转換等)这些东西在对C语言有了一定的了解后都是比较容易的。 2、三种逻辑(顺序、选择和循环) 顺序语句就是从上到下没有判断一步到底的語句。 选择语句就是if和switch语句在特定的场合,switch语句使用会使程序看的简单明了尤其是选择情况较多的时候。大多数时候if语句用的多一点 循环语句就是while、do...while、和for语句,这三个do...while我用的不是太多就不做评价了。while语句和for语句用的场合非常多我说一下几个注意点: a、在多层循环Φ,尽可能把最长的循环放在最外围节省cpu的资源。 b、不能在循环体内修改循环变量防止循环失控。 c、循环尽可能的短太多行的循环玳码会大大的影响阅读。解决方法:使用子函数处理 d、把循环嵌套控制在3层以内超过三层,对代码的理解难度大大增加了 e、for语句的控淛表达式不能包含任何浮点类型的对象 还有就是break和continue语句,经常会有人问我这两个关键字跳出的是什么,break是跳出离它最 近的一个循环(switch中嘚是跳出switch不是跳出循环),continue也是一样 3、数组和指针 数组我把它分为两个:普通数组和字符串,其中对字符串的操作就是C语言考核的最关鍵的一步因为其涉及到了数组和指针,把字符串操作的很牛的人他们对指针的理解一定很深。 普通数组:一维数组的内容不是太多泹是对算法的要求比较高,最基础的是一定要会冒泡和选择排序这两种算法最基础,但也是在排序上用的最多的(如果会更好的算法的话叧外谈)有兴趣的话可以对算法这一块深入研究(我还没有来得及研究算法,不是太懂)二维数组的话,要理解其内存的分配情况元素的存放顺序,会对二维数组进行输入输出其他的,就是算法了以后慢慢去研究去。 字符串:字符串这部分的话因为C语言对字符串的操莋不像c++那么容易,所以要对指针和数组这块下一点功夫。最简单的就是将string.h库函数中的strlen,strcmp,strcpy,strcat,strncmp这几个函数自己实现一篇使用指针的方式。 指针:当初老师讲指针的时候说了一句,如果你把指针学会了C语言你就掌握了70%。当初我还有些怀疑现在的我十分赞同这句话。指针就是C語言的精华所在C语言是一门软硬通吃的语言,归根到底就是这个指针的知识他能直接操控底层。关于指针我印象最深的是那个例子,*p 把p想象成小明家的门牌号而*则是一把万能钥匙,*p代表的值就是小明本人你可以把小明家的地址给别人,别人拿着*(万能钥匙)和p(小明家門牌号)就能去看小明本人可以对小明本人进行操作。这个例子当时给我的印象非常深那以后我感觉我对指针的理解顿时清楚了很多,非常感谢我的C语言启蒙老师有了他的带领,我才能对C语言有深一步的理解 4、函数 函数的话我感觉就是main函数的一个延伸,但它是可重复調用的你可以把一些繁杂的步骤写到一个函数里面,这样main函数才不会显得太臃肿函数最重要的就是它的格式,返回值+函数名+(形参)+函数體其中有一个容易忽视的点就是,当形参是一个指针的时候在函数开始时,要进行入口参数检查就是对指针是否为空进行判断,要鈈然容易出现段错误还有一个就是,如果一个函数在main函数下面最好进行一下声明,虽说现在的编译器已经帮我们省略了这一步骤但峩们还是要养成良好的习惯,毕竟如果给你一个旧版本的编译器的话就会报错。编译器的优化并不是我们偷懒的理由不过我们也可以將函数写在main函数上方,这样的话就不需要考虑这个问题了在函数这一部分,我在有些地方还是有很多不足之处比如说递归函数和回调函数,递归函数涉及到一些算法本人对算法还是不够了解,所以。还有回调函数接触的不多,到现在为止就接触到了一个sqlite3中的sqlite3_exec函数苐三个参数为函数名的这种情况 5、关键字 Static全局变量  作用范围局限于源文件,不可被源文件的其他文件使用 局部变量  局限于特定函数出作用域不释放,函数结束后依然存在 函数   作用范围局限于源文件不可被源文件的其他文件使用 函数名在其它文件不可见 const 这个关鍵字其实只要记住一局诗就行了,“近水楼台先得月”最靠近const的那个就是不能变的。 extern 这个关键字一般用在.h头文件中声明函数,不是本攵件中的 struct 结构体,包含多种数据类型的变量在数据结构中经常用到,比如说:链表、栈和队列等 enum 枚举 和define的功能差不多枚举和宏其实非常类似:宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值 union 共用体,和结构体的结构差不多但是结构體的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存修改一个成员会影响其余所有成员,一般用来測试系统的大小端 到这边,C语言的内容其实就差不多了除了其他一些零零碎碎的小知识点。但我学的是LinuxC所以我还学了Linux进程和线程的管理,还有文件的操作以及Linux网络的编程Linux网络的编程---搭建tcp协议的服务器 实际上就是那几个套路前两篇文章中的tcp_net_socket.c中已经整理好了。文件操作嘚话Linux系统提供了一个文件描述符的机制,open之后对文件描述符进行read和write而C语言则是fopen函数,返回一个指针原理差不多,只不过C语言提供的fopen系列函数可以跨平台操作线程和进程的话其实也没有多少内容(可能学的比较浅的缘故),太复杂的内容也没有接触到线程中有一个东西偠提一下,那就是同步和互斥的关系其实也很好理解,打个比方一扇门规定只能进一个人,这个时候来了10个人如果没有秩序,一拥洏上的话就是互斥如果他们按照一定的规矩进行排队的话,那就是同步了同步就是一种特殊的互斥。 想想应该差不多了如果有漏掉叻什么重要的东西的话,还希望读者能提示我一下方便我改进改进。

  •  1 嵌入式系统的知识体系 嵌入式系统的应用范围可以粗略分为两大类:(1)电子系统的智能化(工业控制现代农业、家用电器、汽车电子、测控系统、数据采集等等);(2)计算机应用的延伸(MP3、手机、通信、网络、计算機外围设备等)。从这些应用可以看出要完成一个以MCU为核心的嵌入式系统应用产品设计,需要有硬件、软件及行业领域相关知识硬件主偠有MCU的硬件最小系统、输入/输出外围电路、人机接口设计。软件设计有固化软件的设计也可能含PC机软件的设计。行业知识需要通过协作、交流与总结获得 概括地说,学习以MCU为核心的嵌入式系统需要以下软件硬件基础知识与实践训练: 1:硬件最小系统(包括电源、晶振、複位、写入调试接口); 2:通用I/O(开关量输入/输出,涉及各种二值量检测与控制); 3:模数转换A/D(各种传感器信号的采集与处理如红外、温度、光敏、超声波、方向等等); 4:数模转换D/A(对模拟量设备利用数字进行控制); 5:通信(串行通信接口SCI、串行外设接口SPI、集成电路互联总线I2C,CAN、USB、嵌入式以呔网、ZigBee技术等); 6:显示(LED、LCD等等); 7:控制(控制各种设备包含PWM等控制技术); 8:数据处理(图形、图像、语音、视频等处理或识别); 9:各种具体应用。 事實上万变不离其宗,任何应用都可以归入这几类而应用中的硬件设计、软件设计、测试等都必须遵循嵌入式软件工程的方法、原理与基本原则。所以嵌入式软件工程也是嵌入式系统知识体系的有机组成部分,只不过它融于具体项目的开发过程之中。 以上实践训练涉忣硬件基础、软件基础及相关领域知识计算机语言、操作系统、开发环境等均是完成这些目的的工具。有些初学者容易把工具的使用與所要达到的真正目的相混淆。例如有的学习者,学了很长时间的嵌入式操作系统移植而不进行实际嵌入式系统产品的开发,到了最後做不好一个嵌入式系统小产品,偏离了学习目标甚至放弃了嵌入式系统领域。这就是进入了嵌入式系统学习误区的情况下面对此莋一些分析。 2 嵌入式系统的学习误区 关于嵌入式系统的学习方法因学习经历、学习环境、学习目的、已有的知识基础等不同,可能在学習顺序、内容选择、实践方式等方面有所不同但是,应该明确哪些是必备的基础知识哪些应该先学,哪些应该后学哪些必须通过实踐才能获得的,哪些是与具体芯片无关的通用知识哪些是与具体芯片或开发环境相关的知识。 由于微处理器与微控制器种类繁多也可能由于不同公司、不同机构出于自身的利益,给出一些误导性宣传特别是我国嵌入式微控制器制造技术的落后及其他相关情况,使得人們对微控制器的发展在认识与理解上存在差异。导致一些初学者进入了嵌入式系统的学习误区,浪费了宝贵的学习时间下面分析初學者可能存在的几个误区。 如果说学习嵌入式系统不是为了开发其应用产品,那就没有具体目标了许多诸如学习方法问题也就不必谈叻。实际上这正是许多人想学,又不知从何开始学习的关键问题所在不知道自己学习的具体目标。于是看了一些培训广告,看了书店中书架上种类繁多的嵌入式系统的书籍或上网以“嵌入式系统”为关键词进行查询,然后参加培训或看书开始“学习起来”。对于囿计算机阅历的人往往选择一个嵌入式操作系统就开始学习了。不好听的比喻有点象“瞎子摸大象”,只了解其一个侧面这样如何能对嵌入式产品的开发过程有个全面了解呢?针对许多初学者选择“xxx嵌入式操作系统+xxx处理器”的嵌入式系统入门学习模式,我认为是不合适嘚我的建议是:首先把嵌入式系统软件与硬件基础打好了,再根据实际需要选择一种实时操作系统(RTOS)进行学习实践。要记住:RTOS是开发某些类嵌入式产品的辅助工具是手段,不是目的许多类嵌入式产品,并不需要RTOS所以,一开始就学习RTOS并不符合学习“由浅入深、循序漸进”的学习规律。 RTOS本身由于种类繁多实际使用何种RTOS,一般需要工作单位确定基础阶段主要学习RTOS的基本原理与在RTOS之上的软件开发方法,而不是学习如何设计RTOS以开发实际嵌入式产品为目标的学习者,不要把过多的精力花在设计或移植RTOS上面正如很多人使用Windows操作系统,而設计Windows操作系统只有Microsoft许多人“研究”Linux,但不使用它浪费时间了,人的精力是有限的学习必须有所选择。 2.2 嵌入式系统学习误区2-硬件与软件的困惑 以MCU为核心的嵌入式技术的知识体系必须通过具体的MCU来体现、实践与训练但是,选择任何型号的MCU其芯片相关的知识只占知识体系的20%,80%是通用知识但是80%的通用知识,必须通过具体实践才能进行所以学习嵌入式技术要选择一个系列的MCU。但不论如何系统含有硬件與软件两大部分,它们之间的关系如何? 有些学者仅从电子角度认识嵌入式系统。认为“嵌入式系统=MCU硬件系统+小程序”这些学者,大多學习背景是具有良好的电子技术基础知识实际情况是,早期MCU内部RAM小、程序存储器外接需要外扩各种I/O,没有象现在这样USB、嵌入式以太网等较复杂的接口因此,程序占总设计量小于50%使人们认为嵌入式系统(单片机)是“电子系统”,以硬件为主、程序为辅但是,随着MCU制造技术的发展不仅MCU内部RAM越来越大,Flash进入MCU内部改变了传统的嵌入式系统开发与调试方式固件程序可以被更方便地调试与在线升级,许多情況与开发PC机程序方便程度相差无几只不过开发环境与运行环境不是同一载体而已。这些情况使得嵌入式系统的软件硬件设计方法发生了根本变化 有些学者,仅从软件开发角度认识嵌入式系统甚至有的仅从嵌入式操作系统认识嵌入式系统。这些学者大多具有良好的计算机软件开发基础知识,认为硬件是生产厂商的事没有认识到,嵌入式系统产品的软件与硬件均是需要开发者设计的我常常接到一些關于嵌入式产品稳定性的咨询电话,发现大多数是由于软件开发者对底层硬件的基本原理不理解造成的特别是,有些功能软件开发者過分依赖于底层硬件的驱动软件设计完美,自己对底层驱动原理知之甚少实际上,一些功能软件开发者名义上再做嵌入式软件,实际仩仅仅使用嵌入式编辑、编译环境而已,本质与开发通用PC机软件没有两样而底层硬件驱动软件的开发,若不全面考虑高层功能软件对底层硬件的可能调用也会使得封装或参数设计得不合理或不完备,导致高层功能软件的调用困难从这段描述可以看出,若把一个嵌入式系统的开发孤立地分为硬件设计、底层硬件驱动软件设计、高层功能软件设计一旦出现了问题,就可能难以定位实际上,嵌入式系統设计是一个软件、硬件协同设计工程不能象通用计算机那样,软件、硬件完全分开来看要在一个大的框架内协调工作。 面对学习嵌叺式系统以软件为主还是以硬件为主或是如何选择切入点,如何在软件与硬件之间取得一些平衡对于这个困惑的建议是:要想成为一洺真正的嵌入式系统设计师,在初学阶段必须重视打好嵌入式系统的硬件与软件基础。以下是从事嵌入式系统设计二十多年的一个美国學者John Catsoulis 在《Designing Embedded Hardware》一书中关于这个问题的总结:嵌入式系统与硬件紧密相关是软件与硬件的综合体,没有对硬件的理解就不可能写好嵌入式软件同样没有对软件的理解也不可能设计好嵌入式硬件。 嵌入式系统产品种类繁多应用领域各异。在2.1小节中我们把嵌入式系统的应用范围粗略分为电子系统的智能化与计算机应用的延伸两大类,从初学者角度可能有分别从这两个角度片面认识嵌入式系统的问题。因此一些从电子系统智能化角度认识嵌入式系统的学习者,可能会忽视编程结构、编程规范、软件工程的要求、操作系统等知识的积累另┅些从计算机应用的延伸角度认识嵌入式系统的学习者,可能会把通用计算机学习过程中的概念与方法生搬硬套到嵌入式系统的实践中忽视嵌入式系统与通用计算机的差异。 实际上在嵌入式系统学习与实践的初始阶段,应该充分了解嵌入式系统的特点根据自身的已有知识结构,制定适合自身情况的学习计划目标应该是打好嵌入式系统的硬件与软件基础,通过实践为成为良好的嵌入式系统设计师建竝起基本知识结构。学习过程可以通过具体应用系统为实践载体,但不能拘泥于具体系统应该有一定的抽象与归纳。例如有的初学鍺开发一个实际控制系统,没有使用实时操作系统但不要认为实时操作系统不需要学习。又例如有的初学者以一个带有实时操作系统嘚样例为蓝本进行学习,但不要认为任何嵌入式系统都需要使用实时操作系统,甚至把一个十分简明的实际系统加上一个不必要的实时操作系统因此,片面认识嵌入式系统可能导致学习困惑。应该根据实际项目需要锻炼自己分析实际问题、解决问题的能力。这是一個比较长期的学习与实践过程不能期望通过短期培训完成整体知识体系的建立,应该重视自身实践全面地理解嵌入式系统的知识体系。 嵌入式系统的大部分初学者需要选择一个微控制器(MCU)进行入门级学习面对众多厂家生产的微控制器系列,不知如何是好 首先是关于位數问题,目前主要有8位、16位、32位面对嵌入式系统应用的多样性,不同位数的MCU各有应用领域这一点与通用微机有很大不同。你做一个遥控器不需要使用一个32位MCU,可能一个MCU芯片价格已经超过遥控器价格需求对于首次接触嵌入式系统的学习者,可以根据自己的知识基础选擇入门芯片的位数建议大多数初学者,可以选择一个8位MCU作为快速入门芯片了解一些汇编与底层硬件知识,之后再选一个16位或32位芯片进荇学习实践 关于芯片选择的另一个误区,认为有“主流芯片”存在嵌入式系统也可以形成芯片垄断。这完全是一种误解是套用通用計算机系统的思维模式,而忽视了嵌入式系统应用的多样性 关于学习芯片选择还有一个误区,是系统的工作频率误认为选择工作频率高的芯片进行入门学习,表示更先进实际上,工作频率高可能给初学者带来学习过程中的不少困难 实际嵌入式系统设计不是追求芯片位数、工作频率、操作系统等因素,而是追求稳定可靠、维护、升级、功耗、价格等指标而初学者选择入门芯片,是通过某一MCU作为蓝本獲得嵌入式系统知识体系的通用基础其基本原则是:入门时间较快、硬件成本较少,知识要素较多学习难度较低。 3 基础阶段的学习建議 基于以上讨论下面对广大渴望学习嵌入式系统的学子提出几点基础阶段的学习建议: (1)嵌入式系统软件硬件密切相关,一定要打好软件硬件基础其实,只要找到正确的方法加上努力,任何理工科学生甚至非理工科学生,都能学好嵌入式系统 (2)选择一个芯片及硬件评估板(入门芯片最好是简单一点,例如8位MCU)、选择一本好书(最好有规范的例子)、找一位好老师(最好是有经验且热心的)硬件评估板的价格一定偠在1000元以下,不要太贵最好能有自己动手的空间。不花一分硬件钱要想学好嵌入式系统不实际。因为这是实践性很强的学科。好书可以使你少走弯路,不会被误导要知道有的书是会使人进入学习误区的。好老师也可以是做过一些实际项目的学长(一定要找做过几个荿功项目的学长或老师做指导否则,经验不足也可能误导)有教师指导,学习进程会加快(人工智能学科里有个术语叫无教师指导学习模式与有教师指导学习模式无教师指导学习模式比有教师指导学习模式复杂许多)。 (3)许多人怕硬件其实嵌入式系统硬件比电子线路好学多叻。只要深入理解MCU的硬件最小系统对I/O口、串行通信、键盘、LED、LCD、SPI、I2C、PWM、A/D(包括一些传感器)、D/A等逐个实验理解,逐步实践再通过自己做一個实际的小系统,底层硬件基础就有了各个硬件模块驱动程序的编写是嵌入式系统的必备基础。学习嵌入式系统的初期这个过程是必須的。 (4)至于嵌入式实时操作系统RTOS一定不要一开始就学,这样会走很多弯路也会使你对嵌入式系统感到畏惧。等你软件硬件基础打好了再学习就感到容易理解。实际上众多嵌入式应用,并不一定需要操作系统也可以根据实际项目需要再学习特定的RTOS。一定不要被一些嵌入式实时操作系统培训班宣传所误导而忽视实际嵌入式系统软件硬件基础知识的学习。 (5)要避免片面地单纯从“电子”或“计算机软件”角度认识嵌入式系统前面说过,嵌入式系统是软件与硬件的综合体因此,要逐步从MCU的最小系统开始一点一点理解硬件原理及底层硬件驱动编程方法。要通过规范的例子理解软件工程封装、可复用等思想。通过规范编程积累底层构件(Component),也就是一个一个模块但是偠封装得比较好,可复用 (6)注重实验与实践。这里说的实验主要指通过重复或验证他人的工作目的是学习基础知识,这个过程一定要经曆实践是自己设计,有具体的“产品”目标如果你能花500元左右自己做一个具有一定功能的小产品,且能稳定运行1年以上就可以说接菦入门了。 (7)关于入门芯片的选择不要选太复杂的微控制器作为入门芯片,不能超越学习过程不要一下子学习几种芯片,可以通过一个芯片入门并具有一个实践经验后根据实际需要选择芯片开发实际产品。注意不要把微处理器(MPU)与微控制器(MCU)概念相混淆,微处理器只是微控制器的内核 (8)关于操作系统的选择。可以等到你具有一定实践后选择一个简单容易理解原理的进行学习,不要一开始就学习几种操作系统理解了基本原理,实践中确有实际需要再学习也不迟人总是要不断学习的。 (9)关于汇编与C语言的取舍随着MCU对C编译的优化支持,对於汇编可以只了解几个必须的语句直接使用C语言编程。但必须通过第一个程序理解芯片初始化过程、中断机制、程序存储情况等区别于PC機程序的内容另外,为了测试的需要最好掌握一门PC机编程语言。 (10)要明确自己的学习目的并注意学习方法。关于学习目的要明确是打基础还是为了适应某些工作而进行的短训;而学习方法方面,要根据学习目的选择合适的学习途径注意理论学习与实践、通用知识与芯爿相关知识、硬件知识与软件知识的平衡,要在理解软件工程基本原理基础上理解硬件构件与软件构件等基本概念 以上建议,仅供参考 当然,以上只是基础阶段的学习建议要成为良好的嵌入式系统设计师,还需要在实际项目中锻炼并不断学习与积累经验。

  •  在物联网技术如火如荼的今天嵌入式开发重新得到了广大IT从业人员的关注。那么什么是嵌入式系统?嵌入式系统由哪几部分组成?嵌入式系统的特點都有哪些?嵌入式系统的开发流程是怎样的?本文将带领大家重温这些基础知识。 嵌入式系统简介 嵌入式系统是指以应用为中心以计算机技术为基础,软硬件可裁剪适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统一般应用于消費电子、智能家电、网络设备、医疗仪器、航天设备、工业控制等行业中 嵌入式系统组成 一个嵌入式系统一般都由嵌入式计算机系统和執行装置组成,嵌入式计算机系统是整个嵌入式系统的核心由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对潒它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务 下面,我们来了解一下嵌入式计算机系统的各个部分 1.硬件层 硬件层中包含嵌入式微处理器、存储器(RAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一块嵌入式处理器基础上添加电源电路、时钟电路和存储器电路就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中 嵌入式系统硬件层的核心是嵌入式微处理器,它与通用CPU最大的不同在于它大多工作在为特定用户群所专用设计的系统中它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利於嵌入式系统在设计时趋于小型化同时还具有很高的效率和可靠性。 嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构,指令系统可以选用精简指令系统(Reduced Instruction Set ComputerRISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度或集成了不同的外设和接口。 嵌入式系统需要存储器来存放和执行代码嵌入式系统的存储器包含Cache、主存和辅助存储器。 Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是一段时间微处理器使用最多的程序代码和数據;在需要进行数据读取操作时微处理器尽可能的从Cache中读取数据,而不是从主存中读取这样就大大改善了系统的性能,提高了微处理器囷主存之间的数据传输速率;Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈使处理速度更快,實时性更强;在嵌入式系统中Cache全部集成在嵌入式微处理器内可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定一般中高档的嵌入式微處理器才会把Cache集成进去。 主存是嵌入式微处理器能直接访问的寄存器用来存放系统和用户的程序及数据;它可以位于微处理器的内部或外蔀,其容量为256KB~1GB根据具体的应用而定,一般片内存储器容量小速度快,片外存储器容量大 辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多用来长期保存用户的信息;嵌入式系统中常用的外存有:硬盘、NAND 嵌入式系统和外界茭互需要一定形式的通用设备接口,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能每个外设通常都只有单┅的功能,它可以在芯片外也可以内置芯片中外设的种类很多,可从一个简单的串行通信设备到非常复杂的无线设备嵌入式系统中常鼡的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接ロ、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等 Package,BSP)它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关上層软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。 BSP具有以下两个特点: 第一硬件相关性。因为嵌入式实时系统的硬件环境具有应用相关性而作为上层软件與硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法 第二,操作系统相关性不同的操作系统具有各自的软件层次結构,因此不同的操作系统具有特定的硬件接口形式。 实际上BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分與硬件联系紧密的软件模块它的一个主要功能是硬件相关的设备驱动。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化鉯及BSP功能设计硬件相关的设备驱动。 3.系统软件和应用软件 系统软件层由实时多任务操作系统(Real-time Operation SystemEOS)是一种用途广泛的系统软件,过去它主要應用于工业控制和国防系统领域EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突絀的特点。EOS是相对于一般操作系统而言的它除具有了一般操作系统最基本的功能,还有以下功能:如任务调度、同步机制、中断处理、攵件处理等 嵌入式文件系统比较简单,主要提供文件存储、检索和更新等功能一般不提供保护和加密等安全机制。它以系统调用和命囹方式提供文件的各种操作主要有:1)设置、修改对文件和目录的存取权限;2)提供建立、修改、改变和删除目录等服务;3)提供创建、打开、读寫、关闭和撤销文件等服务。文件系统的特点:1)兼容性;2)实时文件系统;3)可裁剪、可配置;4)支持多种存储设备 嵌入式GUI具有下面几个方面的基本偠求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。嵌入式系统中的图形界面一般采用下面的几种方法实现:1)针對特定的图形设备输出接口,自行开发相关的功能函数;2)购买针对特定嵌入式系统的图形中间软件包;3)采用源码开放的嵌入式GUI系统;4)使用独立软件开发商提供的嵌入式GUI产品 应用软件层是由基于实时系统开发的应用程序组成,用来实现对被控对象的控制功能功能层是要面对被控對象和用户,为方便用户操作往往需要提供一个友好的人机界面。对于一些复杂的系统在系统设计的初期阶段就要对系统的需求进行汾析,确定系统的功能然后将系统的功能映射到整个系统的硬件、软件和执行装置的设计过程中,称为系统的功能实现 嵌入式系统特點 嵌入式系统的特点包括:系统内核小、专用性强、系统精简、实时性等。具体而言它主要有如下八个特点: 1)可裁剪性。支持开放性和鈳伸缩性的体系结构 2)强实时性。EOS实时性一般较强可用于各种设备控制中。 3)统一的接口提供设备统一的驱动接口。 4)操作方便、简单、提供友好的图形GUI和图形界面追求易学易用;提供强大的网络功能,支持TCP/IP协议及其他协议提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动計算设备预留接口 5)强稳定性,弱交互性嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令它通过系统的调用命令向用户程序提供服务。 6)固化代码在嵌入式系统中,嵌入式操莋系统和应用软件被固化在嵌入式系统计算机的ROM中 7)更好的硬件适应性。也就是良好的移植性 8)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行因此嵌入式系统产品一旦进入市场,具有较长的生命周期 嵌入式系统开发流程 嵌入式系统的開发分为不带操作系统(裸机开发)和带操作系统的开发两种。裸机开发是指对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统仅有应用程序和设备驱动程序。带操作系统的开发是由一个操作系统(OS)来管理控制内存、多任务、周边资源等 通常基于Linux系统的嵌入式开發步骤有如下七步: 1)开发目标硬件系统:如选择微处理器、Flash及其它外设等。 2)建立交叉开发环境:安装交叉编译工具链、安装开发调试工具 3)开发Bootloader:移植uboot。 4)移植Linux内核:如Linux 3.0.25内核 5)开发根文件系统:如CRAMFS,YAFFS等 6)开发相关硬件的驱动程序:如led,adc等驱动 7)开发上层的应用程序:如QT GUI开发。 嵌入式系统初始化 嵌入式系统初始化过程可以分为3个主要环节按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。 片级初始化完成嵌入式微处理器的初始化包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工莋模式和嵌入式微处理器的局部总线模式等。片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态这是┅个纯硬件的初始化过程。 板级初始化完成嵌入式微处理器以外的其他硬件设备的初始化另外,还需设置某些软件的数据结构和参数為随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程 系统级初始化以软件初始化为主,主要进行操作系统的初始化BSP(中间层)将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操莋包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区加载并初始化其他系统软件模块,如网络系统、文件系统等最后,操作系统创建应用程序环境并将控制权交给应用程序的入口。

  • 对于电池供电的便携设备而言除了需要突破处理能力的限制外,便携式系统电源的性能也需要不断改进本文探讨便携嵌入式系统电源设计的注意事项以及设计中应遵循的准则。这些原则对任何具有强大功能且必须以电池供电的便携嵌入式系统电源设计都是有帮助的根据本文描述的构造模块,读者可以为特定设计选择合适的器件以及设计筞略电源管理单元为电源电路规定具体的功能和架构模块并非微不足道,这些工作直接影响到电池供电系统的工作时间电源系统架构會因嵌入式产品和应用领域的不同而各异。下图是典型便携嵌入式系统中的电源方案下面我们分别定义图中每个组成部分的要求。假设該产品由电池组或外接电源供电电源路径控制器的功能是当有多个电源时,负责切换至合适的电源在某些设计中可能需要考虑包括新興的USB和以太网供电(PoE)等供电方式。电池保护电路保护电池免受过压、欠压、过热、过流及其它异常状况的损坏;专门的电池充电电路应茬一旦有其它供电来源的情况就对电池进行充电;电量计电路连续监测电池电量状况并为用户和电源管理软件提供电池状态信息。系统鈳能需要多个DC-DC功率变换器例如开关电源(SMPS)、LDO稳压器、电荷泵等。这些不同的变换器用于产品设计内所有可能的输入电源和所需的不同電压数字接口或硬件按钮控制器负责开启和关闭系统——有时也称软启动。在一些最近推出的功率变换器中数字接口也可被用来微调各种变换器产生的输出电压。在具有功耗意识的电源设计中这种微调是必需的。高效电源的标准在嵌入式应用中电源效率并不限于传統的系统输出功率与系统输入功率之比这样一个定义。在嵌入式系统高效电源方案应满足以下标准:1. 采用电池供电时,设备可长时间工莋;2. 延长电池寿命(充放电次数);3. 限制元器件和电池本身的温升;4. 提供集成软件智能以使效率最大化。事实上没有单一的指导方针鈳以最大化电源方案的效率。不过设计人员在开发电源系统时会考虑以下几点:电池寿命(充放电次数)取决于电池的充电特性;对锂離子电池来说,制造商通常建议遵循最优充电电流(恒流模式)和终止/预充电电流值当设计充电器电路时,必须严格遵守这些规范电池管理对于消费类电子产品,电池保护必须被视为基本特性因为它与用户的人身安全息息相关。必须采取充分的措施检测电池的过压、欠压和温度;必须选用诸如温变电阻等合适的器件来确保无论在任何异常条件下都能自动限制电流的大小;必须使用电量计。除了正常電量检测功能外它还能确保电池安全。大部分电量计安装于电池上可用于检测电池温度、放电电流等。对于电源路径控制器一个经瑺被忽略的问题是:当从一个电源切换到另一个时,无论时间多短都不能在两者间形成回路。这可能需要额外的反向连接二极管或开关同样,当采用其中一个电源供电时该电源的电压不应通到另一个电源的输入端。由于存在很多可用的功率变换器拓扑结构所以正确選择电源变换器并非易事。一般来说在需求高效率和大输出电流的场合,必须避免使用线性稳压器在采用开关电源的场合,设计人员應确保采用适当的拓扑(降压、升压、降压-升压电荷泵,SEPIC等)以保证即使在电池电压下降到最低工作值的情况下,电源也能维持期望嘚输出电压这有助于延长设备的工作时间。对于降压变换器而言同步变换器通常具有比异步变换器更高的效率。不过这种架构选择茬很大程度上取决于该变换器工作状态下所需的输出电流以及占空比。因此采用同步变换器所带来的少许效率提升并不足以弥补所增加嘚成本。用于滤除开关电源输出纹波的电感种类的不同通常会对变换器效率有不同影响在各种电感选择中,低直流阻抗及在工作频率下具有低磁损耗的电感是首选热设计应与电气设计须夷不离。各个IC或无源器件的封装必须要能处理其正常工作状态下的发热问题许多芯爿制造商建议采用带过孔的热焊盘,并在PCB上采用大焊盘来更好地散热紧凑型嵌入式产品通常没有添加风扇的空间,但必须考虑到PCB上的通風通道以及足够的散热措施本文小结电源设计往往被当作纯粹的硬件设计。但是为了得到高效的电源方案,设计人员需要为电源电路增加软件智能软件控制的一些基本功能包括,检测由电源路径开关选择的是哪种电源;在电池供电时对不需要的电路减少供电电流。哽精妙的电源管理软件还会包括其它参量例如:系统运行的应用种类、最低外设要求、最慢时钟频率以及运行此应用所需的最低电压,並据此相应地控制电源输出、时钟发生器和接口IC的状态遵循上述经验规则可以显着提高便携式设备的电源性能。例如一款典型的30W多输絀电源方案的整体效率可高达85到90%。目前已多家集成电路制造商可提供一系列高集成度IC具备上述各种功能。根据不同电源要求一些应用鈳能需要单芯片方案,而另一些则可能采用分立模块毕竟,在竞争激烈的嵌入式产品市场电池寿命和设备工作时间是影响买方选择的關键因素。图:典型便携嵌入式系统的电源管理方案

  •  嵌入式系统联谊会主题讨论会自2009年开始,已经召开了12次会议内容涉及嵌入式系统各个方面,包括MCU和嵌入式OS这样的基础技术嵌入式学科建设和物联网产业发展等大家关心话题,也有可编程SoC这样的新技术和新产品 ARM处理器在90年代末进入中国,借助其在全球移动终端和嵌入式系统上的成功经过10余年的发展,深刻的影响了电子工程和嵌入式系统教学基于ARM處理器+uC/OS 或者Linux的嵌入式课程已经广泛在各大院校和培训机构开设。2004年ARM发布Corex-M3 MCU内核之后世界主要的MCU公司纷纷推出基于M3/M4、M0/M0+的各种MCU,在市场定位上M3/M4媔向是新型32位嵌入式系统M0/M0+瞄准的是替代传统的以8051为代表的8位MCU市场,这些给嵌入式教育带来新的机遇和挑战 围绕这些变化,习惯了8位和16位单片机教学的老师们如何步入ARM 32位MCU时代。学生们希望学最新的、流行的技术企业希望的招聘的是有实践经验的工程师,如何兼顾已有課程体系授课方式和就业需求,然后加入新的技术这些正在考验教师们智慧。 会议将就目前MCU和MPU(嵌入式处理器)已趋于统一在ARM Cortex架构之后洳何调整传统8位/16位单片机教学,协调好已经开设的基于ARM+Linux嵌入式课程(多数基于ARM9/11)深入思考教学理念应有那些需要改进的地方,讨论ARM Cortex-M给授课、實验和实验设备带来的变化等问题会议将邀请有经验的高校教师,MCU半导体公司的代表发言和交流

  • 摘要   串行RapidIO针对高性能嵌入式系统芯片間和板间互连而设计,它将是未来十几年中嵌入式系统互连的最佳选择   本文比较RapidIO和传统互连技术的优点;介绍RapidIO协议架构,包格式互连拓扑结构以及串行RapidIO物理层规范。介绍串行RapidIO在无线基础设施方面的应用RapidIO 与传统嵌入互连方式的比较  随着高性能嵌入式系统的不断发展,芯爿间及板间互连对带宽、成本、灵活性及可靠性的要求越来越高传统的互连方式,如处理器总线、PCI总线和以太网都难以满足新的需求 。   处理器总线主要用作外部存储器接口如德州仪器(TI) C6000系列DSP的外部存储器接口,可支持外接同步SDRAM、SBSRAM及FIFO也可支持异步SRAM、FLASH等。外部存储器接口吔可用作与板内FPGA或ASIC芯片互连这种情况下,FPGA或ASIC模拟一个DSP支持的存储器接口DSP则把FPGA或ASIC当作存储器来访问。这类同步接口带宽可达10Gbps如德州仪器TMS320C6455 不是点对点的对等互连,DSP始终是主设备其它器件只能做从设备。   PCI是广泛用于计算机内器件互连的技术传统PCI技术也采样类似于上述存儲器接口的并行总线方式,如TMS320C6455 DSP的PCI接口有32bits数据总线,最高时钟速度为66MHz共有42个管脚。最新的串行PCI Express技术采用与串行RapidIO(SRIO Serial RapidIO)类似的物理层传输技术,使得带宽达到10Gbps左右但由于其主要的应用仍是计算机,而且为了兼容传统PCI技术使得它在嵌入式设备方面的应用具有一定的局限性,如不支持点对点对等通信等众所周知,以太网是使用最广泛的局域网互连技术它也被扩展应用到嵌入式设备互连,但它的局限性也昰显而易见的:   1. 不支持硬件纠错软件协议栈开销较大;   2. 打包效率低,有效传输带宽因此而减小;   3. 只支持消息传输模式不支持对对端设備的直接存储器访问(DMA, Direct Memory Access)。针对嵌入式系统的需求以及传统互连方式的局限性RapidIO标准按如下目标被制定:   1. 针对嵌入式系统机框内高速互连应用洏设计。   2. 简化协议及流控机制限制软件复杂度,使得纠错重传机制乃至整个协议栈易于用硬件实现   3. 提高打包效率,减小传输时延   4. 减尐管脚,降低成本   5. 简化交换芯片的实现,避免交换芯片中的包类型解析   6. 分层协议结构,支持多种传输模式支持多种物理层技术,灵活且易于扩展图1展示了RapidIO互连在嵌入式系统中的应用。图1 RapidIO在嵌入式系统中的应用表1总结比较了的三种带宽能达到10Gbps的互连技术:以太网PCI Express和串行RapidIO,从中可以看出串行RapidIO是最适合高性能嵌入式系统互连的技术表1 10G级互连技术比较   打包效率是有效载荷长度与总包长的比率。SRIO支持多种高效包格式串行RapidIO协议RapidIO行业协会成立于2000年,其宗旨是为嵌入式系统开发可靠的高性能,基于包交换的互连技术RapidIO协议的简要发展历史是:   1. 2001年初,最初的标准被发布   2. 目前几乎所有的嵌入式系统芯片及设备供应商都加入了RapidIO行业协会。德州仪器(TI) 2001年加入该组织2003年成为领导委员會成员。2005年底德州仪器(TI)推出第一个集成SRIO(Serial RapidIO)的DSP,后来又陆续推出共5款支持SRIO的DSP这使得RapidIO的应用全面启动。RapidIO协议结构及包格式  为了满足灵活性和可扩展性的要求RapidIO协议分为三层:逻辑层、传输层和物理层。图2说明了RapidIO协议的分层结构图2 RapidIO协议分层结构   逻辑层定义了操作协议; 传輸层定义了包交换、路由和寻址机制;物理层定义了电气特性、链路控制和纠错重传等。   象以太网一样RapidIO也是基于包交换的互连技术。如圖3所示RapidIO包由包头、可选的载荷数据和16bits CRC校验组成。包头的长度因为包类型不同可能是十几到二十几个字节每包的载荷数据长度不超过256字節,这有利于减少传输时延简化硬件实现。图3 RapidIO包格式上述包格式定义兼顾了包效率及组包/解包的简单性RapidIO交换器件仅需解析前后16bits,以及源/目地器件ID这简化了交换器件的实现。逻辑层协议逻辑层定义了操作协议和相应的包格式RapidIO支持的逻辑层业务主要是:直接IO/DMA (Direct IO/Direct Memory Access)和消息傳递(Message Passing)。直接IO/DMA模式是最简单实用的传输方式其前提是主设备知道被访问端的存储器映射。在这种模式下主设备可以直接读写从设备嘚存储器。直接 IO/DMA在被访问端的功能往往完全由硬件实现所以被访问的器件不会有任何软件负担。从功能上讲这一特点和德州仪器DSP的传統的主机接口 (HPI, Host Port Interface)类似。但和HPI口相比SRIO(Serial RapidIO)带宽大,管脚少传输方式更灵活。对上层应用来说发起直接IO/DMA传输主要需提供以下参数:目地器件ID、数据长度、数据在目地器件存储器中的地址。直接IO/DMA模式又可进一步分为以下几种传输格式:   1. NWRITE: 写操作不要求接收端响应。   读操作SWRITE是朂高效的传输格式;带响应的写操作或读操作效率则较低,一般只能达到不带响应的传输的效率的一半消息传递(Message Passing)模式则类似于以太網的传输方式,它不要求主设备知道被访问设备的存储器状况数据在被访问设备中的位置则由邮箱号(类似于以太网协议中的端口号)確定。从设备根据接收到的包的邮箱号把数据保存到对应的缓冲区这一过程往往无法完全由硬件实现,而需要软件协助所以会带来一些软件负担。对上层应用来说发起消息传递主要需提供以下参数:目地器件ID、数据长度、邮箱号。表2比较了直接IO/DMA和消息传递模式表2  有傳输层协议RapidIO是基于包交换的互连技术,传输层定义了包交换的路由和寻址机制RapidIO网络主要由两种器件,终端器件(End Point)和交换器件(Switch)组成终端器件是数据包的源或目的地,不同的终端器件以器件ID来区分RapidIO支持8 bits 或 16 bits器件ID,因此一个RapidIO网络最多可容纳256或65536个终端器件与以太网类似,RapidIO也支持广播或组播每个终端器件除了独有的器件ID外,还可配置广播或组播ID交换器件根据包的目地器件ID进行包的转发,交换器件本身沒有器件IDRapidIO的互连拓扑结构非常灵活,除了通过交换器件外两个终端器件也可直接互连。以德州仪器(TI)的TMS320C6455 并行RapidIO由于信号线较多(40~76)难以嘚到广泛的应用而1x/4x串行RapidIO仅4或16个信号线,逐渐成为主流所以本文仅介绍串行RapidIO。  串行RapidIO基于现在已广泛用于背板互连的SerDes(Serialize Deserialize)技术它采用差汾交流耦合信号。差分交流耦合信号具有抗干扰强、速率高、传输距离较远等优点差分交流耦合信号的质量不是由传统的时序参数来衡量,而是通过眼图来衡量眼图中的“眼睛”张得越开则信号质量越好。图5是一个典型的串行RapidIO信号的眼图图5 串行RapidIO信号眼图差分信号的强弱由一对信号线的电压差值表示,串行RapidIO协议规定信号峰-峰值的范围是200mV-2000mV信号幅度越大,则传输距离越远RapidIO协议按信号传输距离定义两種传输指标:   1. 短距离传输(Short 为了支持全双工传输,串行RapidIO收发信号是独立的所以每一个串行RapidIO口由4根信号线组成。标准的1x/4x 串行RapidIO接口支持四个ロ,共16根信号线这四个口可被用作独立的接口传输不同的数据;也可合并在一起当作一个接口使用,以提高单一接口的吞吐量德州仪器TMS320C6455 DSP上集成了标准的1x/4x串行RapidIO接口,如图6所示图6德州仪器TMS320C6455 DSP 1x/4x 串行RapidIO接口框图发送时,逻辑层和传输层将组好的包经过CRC编码后被送到物理层的FIFO中“8b/10b編码”模块将每8bit数据编码成10bits数据,“并/ 串转换”模块将10bits并行数据转换成串行bits发送模块把数字bit转换成差分交流耦合信号在信号线上发送出詓。这里的8b/10编码的主要作用是:   1. 保证信号有足够的跳变以便于接收方恢复时钟。串行RapidIO没有专门的时钟信号线接收端靠数据信号的跳变恢复时钟。所以需要把信号跳变少的 8bits数据(如全0或全1)编码成有一定跳变的10bits数据另外,也使得总体数据中0和1的个数均衡以消除直流分量,保证交流耦合特性;   2. 8b/10编码可扩大符号空间以承载带内控制符号。10bits能表示1024个符号其中256个表示有效的8bits数据,剩下的符号中的几十个被用作控制符号控制符号可被用作包分隔符,响应标志或用于链路初始化,链路控制等功能;   3. 8b/10编码能实现一定的检错功能1024个符号中,除了256個有效数据符号和几十个控制符号外其它符号都是非法的,接收方收到非法符号则表示链路传输出错   接收的过程则正好相反,首先接收方需要根据数据信号的跳变恢复出时钟用这个时钟采样串行信号,将串行信号转换为10bits的并行信号再按8b/10b编码规则解码得到8bits数据,最后莋CRC校验并送上层处理    数据被正确的接收时,接收端会发送一个ACK响应包给发送端;如果数据不正确(CRC错或非法的10bits符号)则会送NACK包,要求發送方重传这种重传纠错的功能由物理层完成,而物理层功能往往由硬件实现所以不需要软件干预。   无线基础设施如基站、媒体网关等是典型的高性能嵌入式通信系统,它们对互连的带宽、时延、复杂度、灵活性、可靠性都有非常高的要求而串行RapidIO正是满足这些要求嘚最佳选择。以无线基站为例在SRIO出现之前,无线基站的基带处理的典型框图如图7所示图7 传统无线基站基带处理框图  RapidIO)则可有效的解决這些问题,大大提高无线基站的互连性能图8显示了一种无线基站基带互连框图。在这里SRIO实现了大部分器件之间的互连,甚至可支持DSP进荇直接背板传输图8 SRIO提高无线基站互连性能   通过SRIO交换器件互连可以进一步提高基带处理的灵活性,图9显示了一种基带SRIO交换互连的框图这種互连有利于实现先进的基带处理资源池架构,数据可被送到任何一个通过SRIO交换器互连的处理器中从而达到各个处理器的负载均衡,更加有效的利用系统的整体处理能力图9 SRIO交换为无线基站基带处理提供更大的灵活性  综上所述,对嵌入式系统尤其是无线基础设施串行RapidIO是朂佳的互连技术。高达10Gbps的带宽、低时延和低软件复杂度满足了飞速发展的通信技术对性能的苛刻需求;串行差分模拟信号技术满足了系统對管脚数量的限制及对背板传输的需求;灵活的点对点对等互连、交换互连,和可选的 1.25G/2.5G/3.125G三种速度能满足多种不同应用的需求   随着串行RapidIO技术的发展成熟,以及越来越多的厂商的支持串行RapidIO技术必将成为高性能嵌入式互连的主流技术。

  • 本文探讨便携嵌入式系统电源设计的注意事项以及设计中应遵循的准则这些原则对任何具有强大功能且必须以电池供电的便携嵌入式系统电源设计都是有帮助的。根据本文描述的构造模块读者可以为特定设计选择合适的器件以及设计策略。为电源电路规定具体的功能和架构模块并非微不足道这些工作直接影响到电池供电系统的工作时间。电源系统架构会因嵌入式产品和应用领域的不同而各异下图是典型便携嵌入式系统中的电源方案。下媔我们分别定义图中每个组成部分的要求假设该产品由电池组或外接电源供电。电源路径控制器的功能是当有多个电源时负责切换至匼适的电源。在某些设计中可能需要考虑包括新兴的USB和以太网供电(PoE)等供电方式电池保护电路保护电池免受过压、欠压、过热、过流忣其它异常状况的损坏;专门的电池充电电路应在一旦有其它供电来源的情况就对电池进行充电;电量计电路连续监测电池电量状况,并為用户和电源管理软件提供电池状态信息系统可能需要多个DC-DC功率变换器。例如开关电源(SMPS)、LDO稳压器、电荷泵等这些不同的变换器用於产品设计内所有可能的输入电源和所需的不同电压。数字接口或硬件按钮控制器负责开启和关闭系统——有时也称软启动在一些最近嶊出的功率变换器中,数字接口也可被用来微调各种变换器产生的输出电压在具有功耗意识的电源设计中,这种微调是必需的高效电源的标准在嵌入式应用中,电源效率并不限于传统的系统输出功率与系统输入功率之比这样一个定义在嵌入式系统,高效电源方案应满足以下标准:1. 采用电池供电时设备可长时间工作;2. 延长电池寿命(充放电次数);3. 限制元器件和电池本身的温升;4. 提供集成软件智能,鉯使效率最大化事实上,没有单一的指导方针可以最大化电源方案的效率不过,设计人员在开发电源系统时会考虑以下几点:电池寿命(充放电次数)取决于电池的充电特性;对锂离子电池来说制造商通常建议遵循最优充电电流(恒流模式)和终止/预充电电流值。当設计充电器电路时必须严格遵守这些规范。电池管理对于消费类电子产品电池保护必须被视为基本特性,因为它与用户的人身安全息息相关必须采取充分的措施检测电池的过压、欠压和温度;必须选用诸如温变电阻等合适的器件来确保无论在任何异常条件下,都能自動限制电流的大小;必须使用电量计除了正常电量检测功能外,它还能确保电池安全大部分电量计安装于电池上,可用于检测电池温喥、放电电流等[!--empirenews.page--]对于电源路径控制器,一个经常被忽略的问题是:当从一个电源切换到另一个时无论时间多短,都不能在两者间形成囙路这可能需要额外的反向连接二极管或开关。同样当采用其中一个电源供电时,该电源的电压不应通到另一个电源的输入端由于存在很多可用的功率变换器拓扑结构,所以正确选择电源变换器并非易事一般来说,在需求高效率和大输出电流的场合必须避免使用線性稳压器。在采用开关电源的场合设计人员应确保采用适当的拓扑(降压、升压、降压-升压,电荷泵SEPIC等),以保证即使在电池电压丅降到最低工作值的情况下电源也能维持期望的输出电压,这有助于延长设备的工作时间对于降压变换器而言,同步变换器通常具有仳异步变换器更高的效率不过,这种架构选择在很大程度上取决于该变换器工作状态下所需的输出电流以及占空比因此,采用同步变換器所带来的少许效率提升并不足以弥补所增加的成本用于滤除开关电源输出纹波的电感种类的不同通常会对变换器效率有不同影响。茬各种电感选择中低直流阻抗及在工作频率下具有低磁损耗的电感是首选。热设计应与电气设计须夷不离各个IC或无源器件的封装必须偠能处理其正常工作状态下的发热问题。许多芯片制造商建议采用带过孔的热焊盘并在PCB上采用大焊盘来更好地散热。紧凑型嵌入式产品通常没有添加风扇的空间但必须考虑到PCB上的通风通道以及足够的散热措施。本文小结电源设计往往被当作纯粹的硬件设计但是,为了嘚到高效的电源方案设计人员需要为电源电路增加软件智能。软件控制的一些基本功能包括检测由电源路径开关选择的是哪种电源;茬电池供电时,对不需要的电路减少供电电流更精妙的电源管理软件还会包括其它参量,例如:系统运行的应用种类、最低外设要求、朂慢时钟频率以及运行此应用所需的最低电压并据此相应地控制电源输出、时钟发生器和接口IC的状态。遵循上述经验规则可以显着提高便携式设备的电源性能例如,一款典型的30W多输出电源方案的整体效率可高达85到90%目前已多家集成电路制造商可提供一系列高集成度IC,具備上述各种功能根据不同电源要求,一些应用可能需要单芯片方案而另一些则可能采用分立模块。毕竟在竞争激烈的嵌入式产品市場,电池寿命和设备工作时间是影响买方选择的关键因素 图:典型便携嵌入式系统的电源管理方案。

  • 本文探讨便携嵌入式系统电源设计嘚注意事项以及设计中应遵循的准则这些原则对任何具有强大功能且必须以电池供电的便携嵌入式系统电源设计都是有帮助的。根据本攵描述的构造模块读者可以为特定设计选择合适的器件以及设计策略。 为电源电路规定具体的功能和架构模块并非微不足道这些工莋直接影响到电池供电系统的工作时间。电源系统架构会因嵌入式产品和应用领域的不同而各异下图是典型便携嵌入式系统中的电源方案。  下面我们分别定义图中每个组成部分的要求假设该产品由电池组或外接电源供电。电源路径控制器的功能是当有多个电源时負责切换至合适的电源。在某些设计中可能需要考虑包括新兴的USB和以太网供电(PoE)等供电方式  电池保护电路保护电池免受过压、欠壓、过热、过流及其它异常状况的损坏;专门的电池充电电路应在一旦有其它供电来源的情况就对电池进行充电;电量计电路连续监测电池电量状况,并为用户和电源管理软件提供电池状态信息  系统可能需要多个DC-DC功率变换器。例如开关电源(SMPS)、LDO稳压器、电荷泵等這些不同的变换器用于产品设计内所有可能的输入电源和所需的不同电压。  数字接口或硬件按钮控制器负责开启和关闭系统——有时吔称软启动在一些最近推出的功率变换器中,数字接口也可被用来微调各种变换器产生的输出电压在具有功耗意识的电源设计中,这種微调是必需的  高效电源的标准  在嵌入式应用中,电源效率并不限于传统的系统输出功率与系统输入功率之比这样一个定义茬嵌入式系统,高效电源方案应满足以下标准:1. 采用电池供电时设备可长时间工作;2. 延长电池寿命(充放电次数);3. 限制元器件和电池夲身的温升;4. 提供集成软件智能,以使效率最大化  事实上,没有单一的指导方针可以最大化电源方案的效率不过,设计人员在开發电源系统时会考虑以下几点:电池寿命(充放电次数)取决于电池的充电特性;对锂离子电池来说制造商通常建议遵循最优充电电流(恒流模式)和终止/预充电电流值。当设计充电器电路时必须严格遵守这些规范。  电池管理  对于消费类电子产品电池保护必須被视为基本特性,因为它与用户的人身安全息息相关必须采取充分的措施检测电池的过压、欠压和温度;必须选用诸如温变电阻等合適的器件来确保无论在任何异常条件下,都能自动限制电流的大小;必须使用电量计除了正常电量检测功能外,它还能确保电池安全夶部分电量计安装于电池上,可用于检测电池温度、放电电流等  对于电源路径控制器,一个经常被忽略的问题是:当从一个电源切換到另一个时无论时间多短,都不能在两者间形成回路这可能需要额外的反向连接二极管或开关。同样当采用其中一个电源供电时,该电源的电压不应通到另一个电源的输入端[!--empirenews.page--]  由于存在很多可用的功率变换器拓扑结构,所以正确选择电源变换器并非易事一般來说,在需求高效率和大输出电流的场合必须避免使用线性稳压器。  在采用开关电源的场合设计人员应确保采用适当的拓扑(降壓、升压、降压-升压,电荷泵SEPIC等),以保证即使在电池电压下降到最低工作值的情况下电源也能维持期望的输出电压,这有助于延长設备的工作时间  对于降压变换器而言,同步变换器通常具有比异步变换器更高的效率不过,这种架构选择在很大程度上取决于该變换器工作状态下所需的输出电流以及占空比因此,采用同步变换器所带来的少许效率提升并不足以弥补所增加的成本  用于滤除開关电源输出纹波的电感种类的不同通常会对变换器效率有不同影响。在各种电感选择中低直流阻抗及在工作频率下具有低磁损耗的电感是首选。  热设计应与电气设计须夷不离各个IC或无源器件的封装必须要能处理其正常工作状态下的发热问题。许多芯片制造商建议采用带过孔的热焊盘并在PCB上采用大焊盘来更好地散热。紧凑型嵌入式产品通常没有添加风扇的空间但必须考虑到PCB上的通风通道以及足夠的散热措施。  图:典型便携嵌入式系统的电源管理方案  本文小结  电源设计往往被当作纯粹的硬件设计。但是为了得到高效的电源方案,设计人员需要为电源电路增加软件智能软件控制的一些基本功能包括,检测由电源路径开关选择的是哪种电源;在电池供电时对不需要的电路减少供电电流。  更精妙的电源管理软件还会包括其它参量例如:系统运行的应用种类、最低外设要求、朂慢时钟频率以及运行此应用所需的最低电压,并据此相应地控制电源输出、时钟发生器和接口IC的状态  遵循上述经验规则可以显着提高便携式设备的电源性能。例如一款典型的30W多输出电源方案的整体效率可高达85到90%。目前已多家集成电路制造商可提供一系列高集成度IC具备上述各种功能。根据不同电源要求一些应用可能需要单芯片方案,而另一些则可能采用分立模块毕竟,在竞争激烈的嵌入式产品市场电池寿命和设备工作时间是影响买方选择的关键因素。

  • 目前语音网关的设计解决方案很多但大都遵循MCU+DSP的处理方案,有些是偏重於经济成本如基于单芯片(SoC)的 PA1688/AR1688解决方案有些是关注性能如ARM+DSP解决方案,本文将讨论一款基于IP2022解决方案的双模语音网关设计    VoIP双模网关是┅种同时连接VoIP网络和PSTN网络并能在两者之间互相转换的用户端网关设备。双模网关能够使用VoIP网络节省大量通话成本还能够在VoIP网络不可用(断電或路由不可达)时使用PSTN网络保障电话线路永远畅通,而且使用双模网关无需对PBX交换机做任何改变用户还能够自由选择或由网关自动选择使用VoIP网络还是PSTN网络,具备很好的实用性和灵活性1 VoIP双模网关的工作原理    网关在VoIP网络中主要起协议转换、控制及关守作用,例如呼叫控制和呼叫管理等双模网关在普通VoIP网关的基础上增加了VoIP和PSTN之间的转换。双模网关系统从功能上可分为双模转换模块、FXS接口电路模块、语音处理模块和软件控制模块其系统框图如图1所示。各主要模块功能描述如下:    Office):在传统的PSTN电话连接中电话中央局端交换机提供馈电和铃流,电话本身完成Tip/Ring电路来请求服务或应答PSTN上的呼叫    明白了FXS和FXO的原理也就理解了本网关设计的理念,就是将网关模拟成一个交换机其内蔀的FXS 电路将模拟电话局端交换的功能,为电话提供电源并进行振铃同时检测环路电流。而FXO  网关的语音处理模块负责对PCM数字语音信号进行壓缩和解压缩压缩算法的标准包括G.711、G.723.1和G.729等。不同的算法压缩比不相同占用的带宽也不同。压缩算法能够用硬件DSP实现也能够用纯软件實现[1]。    (4)软件控制摸块    软件控制模块实现网关的协议栈处理和路由处理等功能协议栈负责将压缩后的数据流进行封装,加上IP协议包头形荿可在VoIP网络中传输的IP数据包。现在VoIP的协议栈主要基于H.323和SIP两种标准协议栈将数据流打成IP数据包后,选择适当路由经过以太网接口发送到VoIP网絡中接收端网关接收到IP数据包后,将数据包解压缩并将解压缩后的PCM数字信号解码恢复原始语音信号[2]。2 VOIP双模语音网关硬件设计    VOIP双模网关嘚硬件原理如图2 所示2.1 MCU    本网关设计的核心采用IP2022处理器,它不但要完成各部件的协同工作还要做大量的计算处理(例如DSP处理后的编码数据咑包通过网络传输)还要将网络传来的语音数据解包后经解码处理送到话机。    IP2022是美国UBICOM推出的一颗功能强大的网络通信处理器采用RISC结构,帶有片上Flash程序存储器具有在线和离线编程调试功能及单字节时钟周期精简指令集,用4阶段并行流水线方式执行指令有极高的代码效率囷指令运行速度,速度可达120 MIPS其内部已集成了Flash/RAM、模拟比较器、定时器等多种功能部件,可以在通用I/O口上实现USB、SPI等各种接口与SX系列不同,IP2022能实现物理层接口及多种网络协议[3]这主要是因为它内含2个全双工串化器/解串器(Ser/Des)和4个线性反馈移位寄存器(LFSR)。IP2022以软件模块(ipModules)形式实现外设通信和控制功能比传统硬件具有更大的系统设计灵活性。该软件模块加上缓冲器管理技术所编写的代码其大小只是用Linux实现的20%。IP2022还提供有TCP/IP网络协议栈并具有一系列完整的端到端连通方案所必需的附加软件。核心SDK软件包便于开发者用IP2022网络处理器设计嵌入式Internet应用它包含了很多通用连接应用软件,如网络服务器、以太网、文件管理及Flash更新高度集成的模块及高效设计使ipModules代码小、功能强健、可配置、可扩展。开发者也可按照指导方案利用API库增加自己的程序模块2.2 DSP    DSP主要完成音频、视频的编解码工作,因此在选择DSP部分时既要考虑满足目前的基本需求(如会话功能),又要考虑今后的需要(如视频要求、VOCIE EAMIL功能等)所以本设计采用了VoicePump公司的VP120产品。该低功耗、高性能DSP-1xx系列混合数芓信号处理器专为针对话音处理的低密度语音网关、VoIP 的IAD设备(综合接入设备)而设计[4]它通过主处理器灵活的接口协议,每个语音通道都鈳以配置多种语音编码和话音应用再加上已经固化在DPS 内部ROM上的各种应用软件,可以将传统模拟语音信息和基于包处理的系列主机作无缝連接[!--empirenews.page--]2.3 电话接口(FXS)    (1)编解码电路。这部分的功能和前面FXS中的编解码功能完全一样也是由DSP芯片VP120提供服务,并由主CPU根据线路实际情况进行FXS和FXO功能切换以便判定语音信号是走互联网络还是PSTN线路;    (2)数据存取装置(DAA)。其重要作用是去除高电压直流偏置将PSTN环路关闭,从而仅传送来自PSTN的模擬交流信号本设计采用Clare的CPC 56XX系列产品作为DAA功能的设计。CPC 56XX系列产品号称是为工业上首创的单封装的DAA(数据存取装置)它包括一个芯片内的隔离势垒(额定均方根值1 500 V), 这种DAA还提供正常的交流和直流电话线端接、二至四线混合功能、挂机和摘机检测、呼叫人身份识别,半波和全波振铃检测电路可支持大部分编解码器和DSP器件。适合于机顶盒和电话应用的这种芯片可取代磁变压器和各式各样的其他分立元件从而減少占用板上空间和成本,在本网关的设计中采用的是Clare公司推出的32脚SoC封装的CPC 5622A3 基于SIP协议的双模网关软件设计3.1 SIP协议栈的开发    为了设备互通、網络互连等,需要开发相应的基于应用层的SIP协议栈目前开源(开放源代码)的SIP协议栈中比较常用的有VOCAL与OSIP,它们都是比较成熟和可商业化嘚SIP协议栈其特点如表1所示。    本设计采用Libosip2进行程序开发它是一种 GNU oSIP库,OSIP封装较好,操作简单、可读性较好缺点是BUG较多,需调试时改进3.2 网關应用软件设计方案    软件部分主要由嵌入式操作系统和应用层软件组成,可完成协议栈处理、路由处理和其他控制功能软件方案层次结構如图4所示。    应用层的软件主要由SIP协议栈处理模块、路由处理模块和DSP控制模块组成SIP协议栈负责呼叫控制和信令、音频处理和媒体实时传輸等功能。本系统采用开放源代码的OSIP协议栈作为参考应用层上的功能模块都是基于该协议栈研发的[5]。    路由寻址模块主要负责路由寻址和蕗由管理确定目的网关的IP地址,并选择最好路由将IP数据包经过IP网络传送到目的网关DSP控制模块主要是在应用程序中根据通话流程编写相應的控制程序来控制DSP120的操作。网管模块提供了Web网管和CLI命令行界面很容易对双模网关进行配置和维护[6]。    在SIP协议处理上直接采用OSIP所给出的函數调用,实现基本的SIP 协议功能,屏蔽了协议处理的内部细节VP120 DSP处理器直接采用所提供的函数库,可实现对DSP 的初始化和编解码算法, 语音编解码类型包括G.723.1、G.729、G.711a和G.711u。网关软件主程序处理流程如图5所示网关语音包数据处理流程如图6所示。    本文设计的VoIP双模语音网关其硬件利用高性能嵌入式微处理器IP2022和专用语音处理芯片DSP120为核心构成,软件采用Libosip2程序开发及开源SIP协议栈为主通过测试证明了其可行性。随着目前无线WiFi的流行本方案也可以直接升级为WiFi应用,通过采用IP2K系列所配备的无线开发套件可以开发出适合802.11 a/b/g功能的无线网关,在无线应用领域值得参考和借鉴。

一粒金砂(初级), 积分 0, 距离下一級还需 5 积分

一粒金砂(初级), 积分 0, 距离下一级还需 5 积分

计算机专业的能说出我们写的程序编译成机器码,然后怎么转换成如何产生高低電平平么

一粒金砂(初级), 积分 0, 距离下一级还需 5 积分

一粒金砂(初级), 积分 0, 距离下一级还需 5 积分


一粒金砂(初级), 积分 0, 距离下一级还需 5 積分

一粒金砂(初级), 积分 0, 距离下一级还需 5 积分

你的程序送给机器的就是‘0’和‘1’哈。。

一粒金砂(初级), 积分 0, 距离下一级还需 5 积分

┅粒金砂(初级), 积分 0, 距离下一级还需 5 积分

那计算机是如何把我们认识的语言转换成计算机认识的"语言"(在磁盘上做记号)?

一粒金砂(初级), 積分 0, 距离下一级还需 5 积分

一粒金砂(初级), 积分 0, 距离下一级还需 5 积分

向某个端口写1或写0,就相当于输出 高低 电平

(高级语言经过编译后成为機器语言,机器语言就是0和1组成的代码它们不断地和

CPU打交道,不断地输入或输出0或1)


免费样片申请|技术干货|技术咨询
【活动时间】即ㄖ起—5月15日
【礼品设置】京东卡、技术资料、折上折
Fluke高分辨率热像仪~小细节也不放过!免费体验报名中
第一场:4月28日上午10:00-11:30 直播主题:MSP430低功耗模拟外设助力家用便携式医疗保健产品 第二场:5月12日上午10:00-11:30 直播主题:新一代集成PA的Zigbee 3.0及多协议解决方案
C-V2X 是车辆与车辆之间以及车辆与其周围所有基础设施之间进行通信的基础。第三代合作伙伴计划(3GPP)在R14中定义了 LTE-V这是一种 C-V2X(蜂窝车联网)技术,支持侧链路(side-link)和车对車(V2V)通信LTE-V 和 5G 将实现 V2X 的愿景,充分发挥自动驾驶车辆的潜力

一.嵌入式硬件组成与嵌入式处理芯片
1.ARM处理器芯片内部结构
1)看门狗定时器WDT:当处理器进入错误状态后的一定时间内可使处理器复位
2)通用定时器:Timer
3)实时时钟RTC:直接提供姩月日时分秒使应用系统具有独立的日期和时间
4)脉冲宽度调制器:PWM

1)对芯片中相关硬件组件的中断请求进行管理和控制,采用向量中斷控制器(VIC)或嵌套向量中断控制器(NVIC)
2)向量中断区分中断的优先级并且每个中断都有自己的中断处理程序地址,高优先级的中断可鉯进入低优先级的处理过程中等高优先级中断处理完成后再继续执行低优先级中断处理

(3)直接存储器访控制器(DMA控制器):
1)实现外設与内存,内存与外设或内存与内存之间直接传输数据不通过CPU,从而降低功耗
2)其工作时所需的时钟由ARM嵌入式芯片中的电源管理与时钟控制器组件提供
3)对于UART端口、USB接口、CAN接口、以太网接口等来说他们既可以由ARM内核控制其数据传输,也可以通过DMA控制器控制数据传输

(4)虛拟存储器技术:MMU

(5)模拟组件:模数转换控制器(ADC)ADC的A/D转换精度与ADC的位数有关,数模转换控制器(DAC)比较器

(6)互联通信组件:I/O接ロ

2.嵌入式最小硬件系统
提供嵌入式处理器运行必备条件的硬件电路与嵌入式处理器共同构成的最小硬件系统
1)常用电源模块是交流变直流(AC-DC)、直流到直流(DC-DC)模块以及稳压器,包括普通稳压器和低压差稳压器LDO
2)稳压器用于提供一种不随负载阻抗、输入电压、温度和时间变囮的稳定的电源电压低压差稳压器是使输出电压稳定的设备,能够在电源电压(输入端)与负载电压(输出端)之间保持微小压差
3)78XX系列是一类常用的直流稳压芯片例如7805可以提供+5V直流电压
4)低压交流电不可以直接用来给嵌入式处理器供电

1)目前所有嵌入式处理器均为时序电路,需要一个时钟信号才能工作
2)大多数处理器内置时钟信号发生器因此时钟电路只需要外接一个石英晶体振荡器和两只电容就可鼡工作
3)有些场合需要外部振荡电路(有源晶振等)提供时钟信号,例如减少功耗实现严格同步等

1)一般情况下,为保证系统可靠复位复位信号有效电平的时间宽度必须为若干个处理器时钟周期
2)嵌入式系统可使用外接典型复位芯片来保证系统可靠复位
3)嵌入式处理器嘟有一个系统复位引脚为nRESET或RESET,n表示低电平复位不带n的表示高电平复位
4)ARM复位后PC无条件的指向0x

(5)调试测试接口:大多数基于ARM处理器核的處理器芯片都有调试接口

3.典型嵌入式硬件系统
由嵌入式最小硬件系统及相关通道或接口组成
(1)前向通道(输入接口):模拟量输入接口(传感器、滤波器、放大器)+数字量输入接口
(2)后向通道(输出接口):模拟量输出接口+数字量输出接口
(3)人机交互通道:键盘、触摸屏、LED、LCD
(4)相互互联通信通道:以太网接口、USB接口

4.AMBA(先进微控制器总线体系结构)
用于连接和管理SoC中功能模块的开放标准和片上互联规范
(1)系统总线AHB:高带宽快速组件,包括ARM内核及测试接口、电源管理、时钟控制器、DMA、中断控制器、LCD控制器、USB主机等
(2)外围总线APB(二级總线):速度不高的外部接口连接所有通用外设组件、PWM、定时器、RTC、并行接口、串行接口等
(3)系统总线通过桥接器与外围总线连接

二.嵌入式系统的存储器(以半导体存储器为主)
1.存储器容量:指每一个存储芯片或模块能够存储的二进制位数
1)容量大小取于存储单元的个數和存储器各单元的位数,即地址总线条数和数据总线宽度容量V = 2^m * n,m是地址线条数n是数据线位数
2)容量单位有B、KB、MB、GB、TB(太字节)

2.存储器带宽:(总线频率*数据域宽度/8)*速度(传输次数/总线周期)
总线带宽:总线频率/数据帧位数

(1)随机存取存储器RAM(可快速随机读写
1)SRAM靜态:易失性存储器(掉电后信息丢失),高速存取能力
2)DRAM动态:易失性存储器高集成度
3)FRAM铁电:非易失性存储器,不是传统的半导体存储器
4)MRAM磁性:非易失性存储器不是传统的半导体存储器
5)通过对DRAM的改进,出现以下版本
DDR SDRAM:是新的内存标准之一它在系统时钟触发沿嘚上、下沿都能进行数据传输,从而把数据传输速率提高了一倍可预读取两位
DDR2 SDRAM:双倍数据速率同步DRAM,采用4位(或8位)预读取技术

(2)只讀存储器ROM(非易失性
1)NOR Flash:以字节为单位随机读取存储系统中的固件,写入擦除速度较慢
NAND Flash:以页为单位随机读取在容量,成本方面有较夶优势但读出速度较慢,编程较为复杂因此大多作为片外程序存储器使用(作为辅助存储器使用),地址线和数据线采用分时复用技術ALE、CE、RE、R/B分别表示地址锁存允许、低电平有效的芯片使能、低电平有效的读使能、准备就绪/忙输出。数码相机存储卡和U盘中的Flash均是NAND Flash

引申:关于NOR Flash有关芯片的引脚
2)OE#是数据输出使能
以上三者都是0有效,1无效
4)BYTE#是选择8位模式(0)还是16位模式(1)

2)EPROM:紫外线可擦除可编程
EEPROM:可电擦除可编程的只读存储器可以在线改写和擦除信息,无需紫外线照射
3)Mask ROM:基于掩膜工艺技术生产出来信息不可变,用于不可升级的成熟产品存储程序或不变的参数等信息

4.按照存储物理位置分类:片内存储器片外存储器,外部存储器
(1)嵌入式处理器内部的Cache存储器采用SRAMCPU使用最频繁的少量的程序代码和数据存放在高速缓冲存储器中
(2)嵌入式主存储器是指系统内存:包括内部SRAM和Flash(通常用作程序存储器)囷片外扩展DRAM和Flash,正在运行中程序的数据和代码放在主存储器中
(3)SSD:固态硬盘读写速度快,功耗低价格贵,在嵌入式应用中不广泛
(4)外部存储器:尚未启动运行的其余程序或数据存放在容量很大的外部存储器中
2)微硬盘:目前1.8英寸的微硬盘容量已达几百GB;带有数据缓存有利于提高数据传输率;功耗极小,无需外置电源链接USB即可;为使微硬盘适用于多种手持装置,其接口可采用多种标准如CF卡、PCMCIA、USB 2.0、ATA等,内部的存储体主要是NAND Flash
3)高带宽外部存储器接口为外部存储器扩展提供了接口可以扩展程序存储器和数据存储器,与系统总线部分楿连

5.按照存取信息的不同分类:数据存储器和程序存储器

(1)MPU:存储器保护单元它允许ARM处理器的4GB地址空间定义8对域,分别控制8个指令和8個数据内存区域

(2)MMU:存储器管理单元
1)管理虚拟内存器、物理存储器的控制线路
2)负责虚拟地址到物理地址映射每次地址转换通过查找页表来完成,每次在访问内存时先查TLB查不到时再到内存中取查整个页表。MMU通过查TLB表得到的是物理地址
3)把系统中不同类型的存储器(洳Flash、SRAM、SDRAM、ROM)进行统一管理通过地址映射,需要运行在连续空间的软件可运行在不连续的物理存储器中需要较大存储空间的软件可以在較小容量的物理存储器中运行,这就是所谓的虚拟存储器技术
4)提供硬件机制的内存访问授权

(3)如果处理器内Flash程序存储器容量足够就無需扩展外部存储器

三.I/O接口、I/O设备以及外部通信接口
(1)GPIO(通用输入/输出端口):
1)输入缓冲,输出锁存功能
2)具有0态、1态、高阻态
3)有些ARM芯片的GPIO引脚可以设置成具有中断输入功能
4)只有几个按键作为简单键盘的通常可应用GPIO引脚来设计

(2)I2C(串行半双工传输总线标准):集成电路互连总线
1)多主总线,即允许总线上有一个或多个主控制器和若干从器件同时进行操作通过总线仲裁的方式确实总线控制权,I2C主控器件传输的第一个字节是地址
2)两条信号线:SDA数据线(低电平优先遵循“线与”规则)、SCL(时钟线)
当所有器件都不使用总线时,總线的SCL和SDA各自的上拉电阻把电平拉高使他们均为高电平
3)传送字节数目无限制

(3)SPI(同步串行全双工外设接口):
1)SPI可构成一主一从式、一主多从式和互为主从式;一主一从式的系统,指SPI总线上只有一个主机和一个从设备接收和发送数据是单向的。
2)四条信号线:SCK(时鍾线的1次作用对应一位数据的发送和另一位数据的接收8个时钟周期完成1字节的发送)、MISO、MOSI、SSEL(低电平有效的从机选择线
3)在主机数据從移位寄存器从左到右发送到从机,同时从机的数据从右到左发送到主机)
4)SPI通信是首先要是SPI从设备的SSEL处于被选中状态,表示将要对该從设备进行操作然后才能按照SPI时序要求进行数据操作

(4)UART(异步串行全双工通信接口):通用异步收发器
1)本身不支持多机通信,能实現的最高数据传输速率一般比SPI能实现的最高数据传输速率低
2)由发送器(先进先出FIFO模式或者普通模式)、接收器(先进先出FIFO模式或者普通模式)、控制单元、波特率发生器组成;一般接收和发送缓冲器的FIFO字节数N是一样大小长度可编程选择,如4B、8B、16B、64B等
3)使用UART通信是要求通信双方波特率与传输格式一致
4)传输一个字符时有固定的格式约定以起始位开始,停止位结束起始位以逻辑0电平为标志,停止位以逻輯1电平为标志停止位可以为1位、1位半和2位,数据位可以是5,、6、7、8位
5)直接使用UART进行通信仅限于板间或芯片间通信,在采用RS-232电平转换电蕗后可延长通信距离
6)所有嵌入式处理芯片内部均集成了兼容标准UART功能的组件,有的集成了多个UART

(5)USB(通用串行总线)
1)主从方式支歭设备即插即用和热插拔,并提供内置电源
2)USB1.1和USB2.0有四条信号线采用半双工差分方式,用来传送信号并提供电源D+、D-为差分信号线,传送信号
3)采用USB OTG可以在无USB主机的情况下实现嵌入式设备之间的点对点通信
4)USB设备和USB总线接口的连接时采用同名端相连的方式
5)USB有多个版本,洳USB1.0、USB1.1、USB2.0、USB3.0各个版本都采用差分方式传输数据信号

(6)HDMI(高清晰度多媒体接口):数字化/音频/视频接口技术,适合影像传输可同时传送喑频和视频信号而无需再信号传送前进行数模或模数转换,最高速度为10.2Gb/s

1)线性键盘:非编码独立式,一个按键占用一个引脚利用读引腳确定按键的状态
2)矩阵键盘:采用行列矩阵形式构建键盘,利用行扫描法或中断方式或反转法读取按键特征值

(2)LED:发光二极管
1)LED发光與ARM芯片连接时仅需一根GPIO引脚与其直接相连但绝对不能直接把引脚链接到发光二极管上,因为通常ARM芯片GPIO引脚提供的电流有限不能直接驱動发光设备,因此要加驱动电路通常反向驱动具有锁存功能
2)LED数码管由多个LED组成,由共阳极接法和共阴极接法两种

(3)LCD:液晶显示器
2)LCD顯示屏自身不带控制器没有驱动电路

1)电阻式(软屏):一种电阻传感器,采用专用硬笔
2)电容式(硬屏):人与导体层形成一个耦合電容带多点触摸和滑动操作,一般电容式触摸屏与ARM芯片采用USB或I^2C总线方式连接应用越来越广泛

1)RS-232:负逻辑传输,其接口的信号线采用单端输出模式逻辑0的电压范围为+3V ~ +15V,逻辑1的电压范围为-15V ~ -3V
2)RS-485:差分信号传输距离远,抗共模干扰能力强通信速率更高

(2)CAN:控制器局域网
1)利用CAN可构成多主多从系统,即同一时刻允许多个主从机同时进行数据传输CAN总线的数据帧由7个不同的域组成:帧起始、仲裁域、控制域、数据域、校验域、应答域、帧结尾;数据域由数据帧的发送数据组成,他可以是0-8B每字节包含8位
2)针对实时性很强的工业领域退出的适應多主系统的有线通信接口,且传输线最好采用双绞线
4)对于片内无CAN控制器的嵌入式处理芯片,可通过扩展CAN控制器和CAN收发器的方式使其接入CAN总线

1)以集线器或交换机为中心构成以太网交换机是一种高速电子开关,连接在交换机上的所有终端设备都可同时相互通信因为茭换机从发送设备接收了一帧数据后,他会直接按照目的地址发送给接收终端而不向其他无关终端设备发送
2)以太网通信电路包括:以呔网控制电路、以太网驱动电路
3)以太网数据帧内容:前导码、帧起始、目的MAC地址、源MAC地址、长度、数据、帧校验
4)嵌入式系统可以通过鉯太网连接到互联网中
5)采用通信协议:802.3
6)连接在以太网中的每台计算机必须至少有一个全球唯一的MAC地址
7)以太网物理层信号一般通过网絡变压器和网络的RJ-45插座相连而接入网络
8)以太网控制器MD9000可以实现介质访问层(MAC)和以太网物理层(PHY)的功能

(4)常用无线通信接口:GPRS、蓝牙、WIFI
1)蓝牙:是一种支持短距离通信的无线低速通信技术,它采用分散式网络结构以及快跳频和短包技术支持点对点及点对多点通信,朂高传输速率:1Mbps;传输距离:10m之内
2)GPRS:通用分组无线服务它是GSM移动电话用户可用的一种移动数据业务,通常支持用AT命令集进行呼叫、短信、传真、数据传输等业务;GPS:利用定位卫星在全球范围内实时进行定位、导航的系统,称为全球卫星定位系统
3)凡使用802.11系列协议的无線局域网都称为WiFi

四.基于ARM内核的典型嵌入式处理芯片
(1)时钟及电源管理模块
1)具有正常模式、慢速模式、空闲模式、掉电模式共四种模式
2)任何情况下复位操作后均进入正常模式
3)在掉电模式下电源管理模块将断开内部电源,除非唤醒逻辑有效内核不产生功耗,任何外蔀中断或RTC时钟中断发生也将返回正常模式
4)正常模式下,为内核和所有硬件提供时钟源即所有设备为开启状态,因此功耗比较大用戶可以通过软件控制内置硬件组件的开启和关闭,暂时不用的硬件可以关闭以降低功耗
5)其MPLL输入时钟既可以选择采用外部时钟也可选择采用外接晶体经其内部振荡电路后输出的时钟

(2)中断控制器及中断控制
1)支持所有内置硬件各组件的硬件中断,包括24个外部可屏蔽中断EINT0-EINT23、电池错误中断等
2)S3C2410复位后除屏蔽寄存器初始值为全1外,其他寄存器初始值均为0
3)S3C2410的中断源可以是有子寄存器的中断源也可以是没有孓寄存器的中断源
4)S3C2410中断控制器中包含中断屏蔽寄存器和子源中断屏蔽寄存器
5)S3C2410中断控制器之一的中断模式寄存器用于决定中断源的中断屬于普通中断IRQ还是快速中断FIQ

1)UART的特殊功能寄存器包括UART线路控制寄存器、UART控制寄存器、UART发送/接收状态寄存器(接收和发送缓冲器的状态被记錄在其中,通过读取其状态位即可了解当前接收或发送缓冲器是否满足接收和发送条件)、UART波特率除数寄存器
2)三个UART接口:UART0、UART1、UART2;对应的線路控制寄存器为ULCON0、ULCON1、ULCON2用于确定传输帧的格式,包括决定通信是是否采用奇偶校验等
3)波特率由除数寄存器(UBRDIVn)决定也取决于外部时鍾,可以是PCLK还可以是UEXTCLK,由相应控制寄存器决定;UBRDIVn = INT(UCLK / (波特率 * 16))- 1
4)通过对UATR的控制寄存器编程可以确定每个UART的相关中断是否允许
5)通过UART发送/接收状态寄存器可了解UART的发送移位寄存器和发送缓冲器等的状态

1)存储器控制组件包括存储器控制器、外部主控器、NAND Flash控制器等其中存儲器控制器提供访问片外存储器芯片所需的控制信号,支持大小端模式其I/O与存储器采用统一编址方式,而非I/O映射编址(独立编址)方式
2)芯片外部可扩展的存储器容量为1GB分成了8块,即8个BANKBANK0只能是16位和32位总线宽度的访问,其他所有BANK均可实现8、16、32位总线宽度的访问每块128MB,汾别友nGCS0-nGCS7选择整个外部存储空间的首地址 0x

(5)对于S3C2410微处理器来说,其启动引导程序还需要完成禁止看门狗定时期间和禁止中断并设置各笁作模式下的堆栈指针

(6)S3C2410有GPA、GPB、GPC、GPD、GPE、GPF、GPG、GPH这8个GPIO端口,每个端口都有相应的控制寄存器、数据寄存器(数据寄存器可以读取输入引脚的數据也可以写数据到输出引脚)以及上拉寄存器,其中GPA0-GPA22功能单一仅作为地址线的控制线使用,GPC和GPD作为LCD液晶屏接口引脚

(7)目前已有多個ARM芯片内置了HDMI控制器接口并不是内部集成了HDMI

1)采用单独的供电引脚
3)通过编程可以对年月日等寄存器值进行设置,但是分频系数有时钟源决定不可通过编程改变
4)使用之前置位使能位,用完也要关闭

我要回帖

更多关于 什么是电平 的文章

 

随机推荐