- 通用机
- 嵌入式
随着微处理器的出现,工业界专业人士们有了兴趣,要求将微型机嵌入到一个控制对象的体系中
80年代微处理器和微控制器各自发展为一个庞大的家族
为了区别于原有使用在PC的通用计算机,把嵌入到对象体系中、实现对象体系智能化控制的微控制器的计算机,称作嵌入式计算机
嵌入式计算机是诞生于微处理器发展时代
早期嵌入式计算机是将一个计算机嵌入到一个具体应用的控制对象的体系中去,这些是嵌入式系统发展的起点
例如,将微型计算机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监测系统 这样一来,计算机就失去了原来的形态和通用计算机功能
嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁减,适于应用系统对功能、可靠性、成本、题记、功耗严格要求的专用计算机系统
生活中,嵌入式计算机的数量远远超过了通用计算机,因为每一台通用计算机实际都包含了5-10个嵌入式处理器,例如键盘、显卡、显示器、鼠标、硬盘、网卡、打印机等均是由嵌入式处理器控制的
制造工业、过程控制、通讯、仪器仪表、汽车、航天、军事装备、消费类产品
嵌入式系统是一个综合的概念,它将计算机技术、半导体技术和电子技术和各个背景行业的具体应用结合起来,是一个技术密集、资金密集、高度分散、不断创新的知识系统
高效率设计,量体裁衣,去除冗余,力争在较少的资源上实现更高的性能
比通用PC系统资源少得多 实时性强,系统内核小 为了提高执行速度和系统可靠性,嵌入式系统的目标代码通常是固化在非易失性存储器(ROM,EPROM,EEPROM,FLASH)芯片中 嵌入式系统高效、可靠、稳定工作
具有较长的生命周期
嵌入式产品本身不具备自举开发能力,即使设计完成之后用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。即,嵌入式系统需要专用开发工具和方法进行设计
嵌入式微处理器通常包含专用调试电路
- 系统硬件
- 嵌入式处理器
- 外围硬件设备
- 软件
- 嵌入式操作系统
- 用户应用程序
- 嵌入式处理器
- 外围电路
- 接口
- 外设
- 嵌入式微处理器(MPU): 运算器、控制器
- 嵌入式微控制器(MCU): 片内ROM、RA总线 I/O口、计数器、看门狗、AD、DA、Flash
- 数字信号处理器(DSP): 哈佛结构,适用于FFT(快速傅里叶)变换、谱分析、数字滤波等操作,用于音频、视频处理
- 片上系统(SOC): USB、GPRS、GPS、IEEE1394、蓝牙,可靠性强、开发时间短
- 电源部分:交流的、电池供电
- 输入部分:键盘、鼠标、触摸屏
- 输出部分:发光二极管、LEB显示器、LCD显示器、蜂鸣器
- 存储部分:ROM、EPROM、EEPROM、FLASH、RAM
- 接口电路:USB接口、CAN总线……每一种接口一般都对应一个专用的控制芯片,例如串口一般是由8250芯片来控制
- 其他硬件逻辑电路:AD转换电路、电机驱动电路、始终日期生成电路等等
致命错误时自动重启
- 顺序系统
- 分时系统
- 实时系统
- 强实时:vxworks
- 弱实时:嵌入式linux、wince
实时性强,内核可以裁剪到很小,可靠性高。但是价格很高,小公司难以承受
开源、免费、可移植性好
可分为两类 一类经过修改,专门在没有内存管理单元的硬件上运行,例如μCLinux; 另一类具有完全的Linux特性,运行于有内存管理单元的硬件平台,例如mini Linux
较简单,源码公开
界面要求较高
一个好的系统的进程调度机制,要兼顾三种不同的应用的需求
- 交互式应用。着重于系统的响应速度,当系统中有大量的进程共存时(多用户),要保证每个用户都有可以接受的响应速度,而不感到明显的延迟
- 批处理应用。往往是后台作业,对响应速度没有要求,但要考虑“平均速度”
- 实时应用。这是时间要求最强的,不但要考虑进程执行的平均速度,还要考虑到“即时速度”;不但要考虑响应速度(即从一个事件发生到系统对此作出反应,并开始执行有关程序之间所需的时间),还要考虑有关程序能否在规定时间执行完。在实时应用中,注重的是对程序执行的“可预测性”
在设计一个进程调度机制时考虑的问题有
- 调度的时机:在什么情况下,什么时候调度 什么情况下,什么时候把现在占用CPU的进程换下来
- 调度的策略:根据什么准则挑选出下一个进入运行的进程
- 调度的方式:可抢占的还是不可抢占的(一是进程主动让出CPU,进程在用户态或是在内核态调用schedule,二是强制剥夺其使用权,在发生中断或是异常或是系统调用之后,从内核态返回到用户态的前夕,由内核调用schedule)
只有在用户空间发生的中断或是异常才会引起调度 称为非抢占式内核,有条件抢占,用户抢占
实时操作系统要求就是对来自外部的请求,要求有及时的处理。及时到的程度没有一个明确的定义 当在同样的硬件条件下,Linux2.4的实时性不高,或是不如Linux2.6的实时性高。提高系统的实时性的方法有很多,比如提高CPU速度,优化操作系统等。Linux在提高系统实时性的重要贡献就是引入了“内核抢占调度模式”。那么我们也可以说Linux很好地支持了实时性
高优先级的进程不能中止正在内核中运行的低优先级的进程而抢占CPU运行。进程一旦处于核心态,则除非进程资源放弃CPU,否则该进程将一直运行下去,直至完成或退出内核
中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务
优点
- 中断响应快(与抢占式内核比较)
- 允许使用不可重入函数
- 几乎不要使用信号量保护共享数据。运行的任务占有CPU,不用担心被别的任务抢占。这不是绝对的,在打印机的使用上,仍需要满足互斥条件
优点: 最高优先级的任务什么时候可以执行是已知的
缺点: 不能直接使用不可重入函数。调用不可重入函数时,要满足互斥条件
- 函数体内使用了静态的数据结构
- 使用了malloc或free
- 调用了标准I/O函数
在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入函数的话,那么不同任务调用这个函数时可能修改其他任务使用的值
可以被中断的函数,就是说,可以在函数执行的任何时候中断它的运行,在任务调度下去执行另外一段代码而不会出现错误
- 固态化存储:软件一般都固化在存储器芯片或单片机本身中
- 高质量、高可靠性:小巧
- 高实时性
按表现形式及使用硬件种类分为
- 芯片级嵌入:系统中使用含程序或算法的处理器的嵌入式系统
- 模块级嵌入:系统中使用某个核心模块的嵌入式系统
按软件实时性需求分为
- 芯片级嵌入非实时系统(如PDA)
- 模块级嵌入软实时系统(如消费类产品)
- 硬实时系统(工业实时控制系统)
根据复杂程度划分
- 单个微处理器
- 不带计时功能的微处理器装置
- 带计时功能的组件
- 在制造或过程控制中使用的计算机系统
计算模式的演变
- 主机计算模式
- 桌面计算模式
- 网络和分布式计算模式
- 普适计算模式
- 需求分析
- 概要设计
- 详细设计
- 绘制PCB
- 印刷电路板(PCB版) 阻燃环氧树脂复合
PC端:
- ADS开发环境 编辑、编译、链接
- H-Jtag 下载、调试
- 超级终端 显示结果
目标系统:
- 并口
- 串口
嵌入式Linux系统从软件的角度看通常可以分为四个层次
- 引导加载程序。包括固化在固件中的boot代码(可选),和boot loader两大部分
- Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数
- 文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统
- 用户应用程序。特定于用户的应用程序
建立嵌入式Linux开发环境
- 安装Linux
- 交叉编译工具的安装
- 开发环境配置
- 配置网络 包括配置IP地址、NFS服务、防火墙
- Minicom的配置
- Intel 8051
MCS-51单片机内有四个8位并行IO端口,为P0,P1,P2和P3.每个端口都是8位准双向I/O口,共占32根引脚。每个端口都包含一个锁存器,一个输出驱动器和一个输入缓冲器
工作寄存器区 位寻址区 一般RAM区 特殊功能寄存器区