嵌入式开发
前言
嵌入式系统是一个很广泛的话题,本页面不会就技术细节深入探讨,只希望从一个大的角度给嵌入系统一个分支表,也希望对各方面有兴趣的朋友加入,丰富这里的内容。
常用嵌入式核心板的对比=
目前市场很多核心板/半成品板可以用来编程,当时各种性能不同,值得对比和选项。
嵌入式系统分类
8bit系统
51系列单片机
51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场
AVR系列单片机
AVR 单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
AVR的主要特性
高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。
早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的 CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。
AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机 (CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。当然这种速度上的升跃,是以高可靠性为其后盾的。
AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。
AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部 RAM。
AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。
AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与 8/16位定时器配合的具有多达10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。
增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过 MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。
面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。SPI支持主/从机等4种组合的多机通信。
AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。
AVR单片机具有多种省电休眠模式,且可宽电压运行(5-1.8V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。
AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时器/计数器、具替换功能的I/O端口…… )于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。
综上所述,AVR单片机博采众长,又具独特技术,不愧为8位机中的佼佼者。
总结,与其它8-bit MCU相比,AVR 8-bit MCU最大的特点是:
● 哈佛结构,具备1MIPS / MHz的高速运行处理能力;
● 超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC进行处理造成的瓶颈现象;
● 快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发;
● 作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力;
● 片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠;
● 大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comparator,WDT等;
● 大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序
AVR系列单片机的选型
AVR单片机系列齐全,可适用于各种不同场合的要求。AVR单片机有3个档次:
低档Tiny系列AVR单片机: 主要有Tiny11/12/13/15/26/28等;
中档AT90S系列AVR 单片机: 主要有AT90S1200/2313/8515/8535等; (正在淘汰或转型到Mega中)
高档ATmega系列AVR单片机: 主要有ATmega8/16/32/64/128( 存储容量为8/16/32/64/128 KB)以及ATmega8515/8535等。
AVR也是自动电压调节器的缩写
16bit系统
16位单片机目前市场上常见的有MSP430和PIC
32bit系统
ARM架构系统
粗体文字
MIPS、龙芯架构系统
嵌入式操作系统
常见的开源嵌入式非linux RTOS
Nut/OS
相关介绍
官方网站 http://www.ethernut.de,Nut/OS 作为 德国的Ethernut Project的软件部分,是一个为嵌入式平台设计的模块化开源实时操作系统,它易于配置与优化来运行于8位AVR与32位ARM微控制器上。
因为使用了模块化的结构,操作系统只会包含那些应用程序真正需要的部件,对目标系统的变化会自动适应。为了易于调整,还发布了Linux,Windows于 OS X 下的图形化用户配置界面,这一点有点类似ecos,但该操作系统要比ecos轻量化。
Nut/OS 的多线程使用起来安全并且容易。其协作式线程调度机制使得线程只在明确界定的时间点上让出处理器。在大多数情况下访问共享资源不需要任何锁机制。如此可以使得应用代码更小并且简单,同时较大地减少竞争与死锁的风险。
确定性的中断延迟可以在严格的期限内提供硬实时响应,而跟系统现有的可用资源无关。
eCos
相关介绍
中文维基百科的“ecos"词条 http://zh.wikipedia.org/w/index.php?title=ECOS&variant=zh-cn
安装步骤
参考ecos网站的Downloading and Installation ( http://ecos.sourceware.org/getstart.html ),在terminal中敲入命令就可以安装好toolchain
FreeRTOS
英文维基百科的“freertos"词条 http://en.wikipedia.org/wiki/FreeRTOS 从Freertos的官方网站可以下载到其移植到很多平台的demo,但这个操作系统还是显得很简单,其内核只有三个文件(tasks.c, queue.c 和 list.c,如果使用联合程序则会加上croutine.c),有些功能如task间发消息机制没有实现,因此建议操作系统选型时注意。
RTEMS
相关介绍
中文维基百科的“RTEMS"词条 http://zh.wikipedia.org/w/index.php?title=RTEMS&variant=zh-cn 英文维基百科的“RTEMS"词条 http://en.wikipedia.org/wiki/RTEMS
常见的开源嵌入式linux RTOS
英文维基百科的“Embedded Linux"词条 http://en.wikipedia.org/wiki/Embedded_Linux
μClinux
相关介绍
英文维基百科的“μClinux"词条 http://en.wikipedia.org/wiki/%CE%9CClinux
常见的商业嵌入式RTOS
μC/OS
一个开源但商业并不免费的RTOS,作为学习还是挺不错的,资料很多。μC/OS-II目前用的较多的一个版本,最新版本为μC/OS-III。详细介绍可登录wiki或上其官网做更多了解。
Nucleus OS
相关链接
英文维基百科的"rtos"词条: http://en.wikipedia.org/wiki/RTOS
英文维基百科之 “List of real-time operating systems” http://en.wikipedia.org/wiki/List_of_real-time_operating_systems
常用开发工具
Proteus
Proteus软件是初学者入门的首选软件,它是Labcenter Electronics公司的一款商业版电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,ISIS模块用来完成电路原理图的布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,甚至ARM处理器,以及单片机外围电路,比如键盘、LED、LCD等等,该软件附带了一些案例和丰富的帮助文件。
Keil C51
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
SDCC
SDCC支持8051单片机,Z80单片机,以及PIC单片机。为跨平台软件。生成的代码执行速度比 Keil C51 更加快速。并且汇编代码具有良好的可读性。跨平台的IDE有mcu8051ide。
常见的开源项目
Android
相关介绍
英文维基百科的"Android"词条: http://en.wikipedia.org/wiki/Android_google
安装步骤
http://source.android.com/download#TOC-Ubuntu-Linux-32-bit-x86