虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
虚拟计算平台——Vmware. VMware 可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。
嵌入式系统:
以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专用计算机系统。
嵌入式系统软件的特征:
(1) 软件要求固态化存储
(2) 软件大拿高质量,搞可靠性
(3) 系统软件的高实时性是基本要求
(4) 系统多任务
嵌入式系统开发的环境和工具:
对于嵌入式系统而言,应用程序可以没有操作系统直接在芯片上运行,但是为了合理的调度多任务,利用系统资源,系统函数以及和专家库函数接口,用户必须自行选配RTOS开发平台。以保证程序执行的实时性,可靠性,并减少开发时间,保障软件质量。
嵌入式系统引导程序设计:
引导程序主要工作是对嵌入式系统中的CPU,NAND Flash,SRAM,系统Cache等硬件进行初始化。
比较有代表性的是U-Boot程序。它包括四个子目录部分:CPU子目录,Board目录,Drivers目录,Li-barm
硬件初始化:
(1) 建立中断向量表,当程序出现异常后可跳转到相应子程序执行。
(2) 屏蔽所有的中断。
(3) 设置CPU的速度和时钟频率。
(4) RAM初始化
(5) 初始化LED
Bootloader运用于系统的RAM(stage2)时,通常依次执行以下主要步骤:
(1) 进入stage2的入口程序
(2) 初始化本阶段要使用到的硬件设备
(3) 检测系统的内存映射(内存映射是只在整个4GB物理空间中有哪些地址范围被分配用来殉职系统的RAM单元)
(4) 加载内核映象和根文件系统映象并从Flash上拷贝,规划内存占用的布局
1. 内核映象所占用的内存范围
2. 根文件系统所占用的内存范围
(5) 设置内核的启动参数
(6) 调用内核
Linux内核配置方法有三种:
命令行方式
菜单方式(简单明了,受条件限制小,用的多)
在Linux主机上执行命令make xconfig
嵌入式Linux的内核编译大致相似,其步骤如下:
(1) 执行#make clean命令,删除过时文件
(2) 执行#make dep命令,进行一来性编译
(3) 执行#make 命令,生成可执行内核印象文件
嵌入式Linux系统应用程序的开发,是以PC+桌面Linux操作系统(如Red Hat 9.0)平台为基础,应用程序的编辑,通过交叉编译和连接生存目标平台上可以运行的二进制代码格式,再下载到特定的嵌入式系统中运行。
设备驱动程序是操作系统内核和机器硬件之间的接口。为应用程序屏蔽了硬件细节。应用程序可以把硬件设备当作普通文件看待,并进行操作。
设备驱动功能:
对设备进行初始化;
使设备投入运行和推出服务;
把数据从内核传送给设备和从设备接受数据;
检测和处理设备出现的错误。
USB摄像头驱动编写:
(1) 注册和注销驱动设备
(2) 实现USB摄像头的文件操作调用
硬件的可靠性设计
造成对系统不能正常工作的干扰形成需要具备三个条件:干扰源;传播途径;对干扰敏感的接受电路
干扰源:电压变化率du/dt(主要来自自然界和系统周边的电气设备),电流变化率di/dt(由装置内部的各种元器件引起)大的地方就是干扰源,通常可分为外部和内部干扰。
抑制干扰源:其实就是尽可能的减小干扰源du/dt,di/dt。抗干扰设计中最优先考虑的最重要的原则,也最有效。
减小du/dt:在干扰源两端并联电容
减小di/dt:在干扰源回路串联电感或电阻以及增加续流二极管来实现。
切断干扰传播途径:
(1) 充分考虑电源的影响(MCU等处理芯片对电源噪声很敏感,可以给这些芯片的电源家滤波电路或者稳压器)
(2) MCU和I/O输出控制应加隔离。
(3) 注意晶振布线。(晶振应与MCU引脚尽量靠近,并用地线把时钟区隔离开,最好将晶振外壳接地固定)
(4) 电路板合理分区
(5) 合理利用地线
(6) 单独接地
(7) 采用抗干扰元件
提高敏感器件的抗干扰性
(1) 对于闲置端的处理,MCU闲置的I/O接口不要悬空,要接地或者接电源。
(2) 布线时尽量减少回路环的面积,以降低感应噪声
(3) IC尽量直接焊在电路板上,少用IC座
(4) 布线时,电源线和地线要尽量粗
(5) 在速度能满足要求的前提下,尽量降低MCU的晶振和选用低速数字电路
(6) 在有通信线时,讲Data线,CLK线,INH线常态设置为高,其抗干扰性要比设置低好
(7) 对MCU使用电源监控以及看门狗电路
总体来说,硬件抗干扰设计通过提高硬件的性能和功能来增强抗干扰能力,具有稳定快捷等优点,但会使成本增加
软件可靠性设计
1. 数据冗余设计
在一些对程序流向起决定作用的指令之前插入两条NOP指令,以保证弹飞的程序迅速纳入正轨。为了增强程序的可靠性,可尽可能多的采用单字节指令,少用多字节指令。
采用冗余技术使程序自动恢复正常状态的条件有两个:
(1) 被感染爱的程序设计计数器PC须指向程序运行区
(2) 弹飞的程序没有陷入死循环,且能执行到冗余指令
2. 软件陷阱与软件拦截技术
3. (1)未使用的中断向量区
(3) 未使用的FlashROM区
(4) 程序区
(5) 表格区