嵌入式系统

嵌入式系统学习总结

嵌入式系统的理解
嵌入式系统的历史

嵌入式系统起源于20世纪70年代,它是硬件和软件交替发展的双螺旋式发展;早期的嵌入式系统以功能简单的单片机为核心,这种系统大部分应用于各类工业控制,这一阶段嵌入式系统的主要特点是系统结构和功能比较单一,处理效率比较低;随着微处理器的诞生,嵌入式系统得到了广泛的发展,这一时期出现了一些商用的嵌入式系统并得到了迅速发展,并且具备了高度的模块化和扩展性,具有大量的应用程序接口,嵌入式应用软件也变得丰富起来;随着微电子技术、IC设计和EDA工具的发展,基于SoC的嵌入式系统有了较大的发展,SOC使得嵌入式系统越来越小,功能越来越强,嵌入式技术与Internet的结合推动了嵌入式技术的快速发展。

嵌入式系统的定义

嵌入式系统一般是指非PC系统,它是以应用为中心、以计算机技术为基础、并且软硬件可裁剪的,适用于应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统和用户应用程序等组成,用于实现对其他设备的控制、监视和管理功能。

嵌入式系统包括硬件和软件两部分。硬件包括处理器、微处理器、存储器、外围器件、I/O端口和图形控制器等。软件部分包括操作系统软件和和应用程序编程。应用程序控制着系统的运作和行为,操作系统控制着应用程序编程与硬件的交互作用。

嵌入式系统的特点
  1. 专用性强:嵌入式系统通常是基于面向特定应用的嵌入式CPU,通常具有体积小、功耗低和集成度高等特点,通常是面向用户、面向产品、面向应用的,它必须与具体的应用相结合才具有生命力。

  2. 集成度高:嵌入式系统是将计算机技术、半导体技术以及各个行业的具体应用相结合的产物,所以它是一个技术密集、资金密集、高度分散、不断创新的集成系统。

  3. 系统精简:嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积、功耗等要求。

  4. 高可靠性和实时性:为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都是固化在存储器芯片中,而不是存储在磁盘中。

  5. 需要专门的开发工具和环境:嵌入式系统本身不具备自主开发能力,设计完成以后用户通常不能直接对其中的程序功能进行修改,所以必须有一套开发工具和环境才能进行开发。

主要知识点汇总

嵌入式系统基本组成
嵌入式系统硬件层

硬件层包含嵌入式微处理器,存储器,如FALSH、ROM、RAM等,I/O接口,在微处理器上的电源电路,时钟电路和存储器电路等,这些构成了嵌入式系统的核心控制模块。

嵌入式系统软件层

系统软件层由实时多任务操作系统、文件系统、网络系统、图形用户接口和通用组件模块组成;应用软件层由针对特定任务而开发的应用程序组成,主要面向被控制对象和用户。

CISC于RISC系统结构

CISC系统结构:指令数量多,为可变长格式,使用频率差别较大,支持多种寻址方式,指令功能复杂,研制周期长。

RISC系统结构:指令数量少,指令长度固定,寻址方式较少,大部分为单周期指令,适合采用流水线,优化编译,能够有效的支持高级语言。

冯诺依曼体系结构

微处理器:只含CPU,不含存储器、I/O接口和其他功能模块。

指令的执行周期:取指令,指令译码,执行指令,存储

哈弗体系结构

程序存储器于数据存储器分开,提供了较大的数据存储带宽,适合于数字信号处理,大多数DSP都是哈弗结构,ARM9也是哈弗结构

嵌入式处理器分类

嵌入式微控制器MCU:由CPU、内存、I/O接口电路和面向特定应用的功能模块组成,典型代表是单片机;微控制器具有成本优势,能够缩短产品的设计、开发、调试周期,系统故障率降低,芯片数减少,灵活性和通用性也会降低。

嵌入式DSP处理器:DSP处理器是规模很小、结构相对简单、速度较快的微处理器,专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。

嵌入式微处理器MPU:由通用计算机中的CPU演变而来,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。

嵌入式片上系统SOC

嵌入式系统微处理器就是一种电路系统。它结合了许多功能模块,将功能做在一个芯片上,如ARM RISC、MIPS RISC、DSP或是其他的微处理器核心,加上通信的接口单元。

SOC通过改变内部工作电压,降低芯片功耗;减少芯片对外管脚数,简化制造过程;减少外围驱动接口单元及电路板之间的信号传递,可以加快微处理器数据处理的速度。

ARM结构微处理器简介

ARM处理器特点:小体积、低功耗、成本低、高性能,16位/32位双指令集,使用广泛,合作伙伴众多。

ARM处理器提供的解决方案包括:在无线、消费电子和图像应用方面的开放平台,存储、自动化、工业和网络应用的嵌入式实时系统,智能卡和SIM卡的安全应用。

ARM处理器系列:ARM7、ARM9、ARM9E、ARM10和ARM11

JTAG调试

在ARM处理器中,可以通过JTAG直接控制ARM的内部总线,IO口等信息,从而达到调试的目的

JTAG标准链:
  • Scan Chain 0:包括ARM核的所有的IO和总线的输入输出控制信号.

  • Scan Chain 1:包括ARM核的数据总线和一个断点控制信号。通过控制这个条链,可以控制ARM核执行指定的指令。

  • Scan Chain 2:通过控制EmbeddedICE宏单元,实现对ARM执行指令的断点、观察点的控制。

断点类型:
  • 硬件断点:在ARM中直接设定watchpoint中的地址,当ARM运行到制定的地址时,就进入Debug状态.

  • 软件断点:改变存储器中的ARM指令为一个特殊的数据X(ARM的未定义指令),同时,设置watchpoint中的断点数据也为X,当ARM把X数据作为指令读入的时候,ARM就进入Debug状态.

  • 优缺点:•硬件断点:数目受EmbeddedICE中的Watchpoint数目的限制;但是,可以在任何地方设置断点;•软件断点:数目不受限制,但是,软件断点是通过替换系统的断点地址的指令实现的,所以,软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置.

嵌入式系统发展

嵌入式操作系统的功能越来越丰富,不仅能提供一些基本的功能,如:内核、网络、GUI、文件系统等,而且还会具有很多新的功能,如支持J2ME(JAVA2Micro Edition)、嵌入式CORBA,XML等。

嵌入式操作系统

用于嵌入式计算机的操作系统都称为嵌入式操作系统,它实际上代表着一个集合,最低端是简单的监控程序,最高端则为通用操作系统,它具备一般操作系统的功能,同时具有嵌入式软件的特点。

嵌入式操作系统大致经历了以下几个阶段:无操作系统阶段,简单操作系统阶段,实时操作系统阶段,面向Internet操作系统阶段。

  • 无操作系统阶段:具有与一些监测、伺服、指示设备相配合的功能,一般没有明显的操作系统支持。

  • 简单操作系统阶段:以嵌入式处理器为基础,以简单监控式操作系统为核心。

  • 实时操作系统阶段:n以通用型嵌入式操作系统为标志的嵌入式系统,典型代表有:VxWorks、pSos、Windows CE等,运行在不同的微处理器,具有强大的能用型操作系统的功能。

  • 面向Internet阶段:随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。

嵌入式操作系统体系结构

包括用户模式和内核模式,其中内核模式包括文件系统、进程间管理、进程间通信、I/O和设备管理和虚存管理。

嵌入式Linux

嵌入式Linux(Embeded Linux)是指对Linux经过小型化裁剪后,能够固化在容量较小的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。

实时系统

指系统能够在限定的响应时间内提供所需水平的服务。

硬实时系统:如果计算机没有能够及时的交付计算结果,那么由这个计算机控制的系统就会发生灾难性的后果,具有强定时约束。

软实时系统:对计算任务有时限要求,但该时限要求的延迟不会引起严重的后果,一般不需要证明系统确实满足实时性能要求,具有弱定时约束。

作业调度算法:
  • 速率单调算法(Rate Monotonic),RM算法,静态优先级。

  • 时限单调算法(Deadline Monotonic),DM算法 静态优先级,按照任务的相对时限来分配优先级。

  • 最早时限优先算法(Earliest Deadline First),EDF,动态优先级,按照作业的绝对时限为其分配优先级。

  • 最迟释放时间算法(Latest Release Time), LRT反向EDF算法,动态优先级。

  • 抢占式调度:正在运行的任务可能被其他任务所打断。

  • 非抢占式调度:一旦任务开始运行,该任务只有在运行完成而主动放弃CPU资源,或是因为等待其他资源被阻塞的情况下才会停止运行。

  • 基于优先级的可抢占调度方式:如果出现具有更高优先级的任务处于就绪状态时,当前任务将停止运行,实时内核需要确保CPU总是被具有最高优先级的就绪任务所控制。

  • 优先级反转:高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象。

  • 解决优先级反转的常用协议为:优先级继承协议,优先级天花板协议。

嵌入式系统开发

嵌入式系统开发工具

嵌入式系统开发工具:需求分析工具,软件设计工具,编码、调试工具,测试工具,配置管理工具、维护工具等。

嵌入式软件测试工具:内存分析工具、性能分析工具、覆盖分析工具、缺陷跟踪工具。

内存分析工具:可以用来处理在进行动态内存分配时产生的缺陷。

性能分析工具:引导开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。

覆盖分析工具:使用代码覆盖分析工具追踪哪些代码被执行过,开发人员通过对分析结果进行总结,可以确定哪些代码被执行过,哪些代码被遗漏了。

嵌入式Linux开发

最小的嵌入式 Linux 系统需要三个基本元素:

  • 系统引导实用程序

  • Linux 内核,由内存管理、进程管理和定时服务构成

  • 系统程序:libc、busybox、GUI

开发步骤:
  • 建立交叉编译环境

  • 系统引导

  • 精简内核

  • 驱动程序开发

  • 嵌入式文件系统

  • 应用界面开发:将X-Window换成MicroWindows等适合的图形系统。

嵌入式Boot Loader
Boot Loader阶段1
  • 硬件设备初始化

  • 为加载阶段2准备RAM空间。

  • 拷贝阶段2到RAM中。

  • 设置堆栈指针SP。

  • 跳转到阶段2的C入口点。

Boot Loader阶段2
  • 初始化本阶段要用到的硬件设备。

  • 检测系统的内存映射。

  • 加载内核映像和根文件系统映像。

  • 设置内核的启动参数。

调用内核
嵌入式Linux文件系统

Linux支持ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等多种文件系统,为了统一管理,Linux引入了虚拟文件系统VFS (Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口.

Android概述

Android系统介绍

Android 是 Google 开发的基于 Linux 平台的、开源的、智能手机操作系统。

特点:
  • 全开放智能手机平台

  • 多硬件平台的支持

  • 使用众多的标准化技术

  • 核心技术完整,统一

  • 完善的开发环境和文档

  • 完善的辅助开发工具

Android内核

Linux kernel 2.6 或 3.0(Android 4.0)以上,依赖 Linux kernel 提供的核心服务,比如内存管理、进程管理、网络、硬件驱动等。

Android本地库:Android自己的C/C++库被android的上层组件使用。

Dalvik虚拟机:比标准的Java虚拟机效率高,运行快。

Android应用程序

管理程序,系统级别的服务,使用Java编写。

核心应用程序,用户自己的程序,通过Java API访问Android应用层框架,•通过Jni访问C/C++本地库。

Android启动流程

启动init进程,它是第一个由内核启动的用户级进程。

启动Servicemanager和zygote进程。

启动其他的Java服务管理程序。

启动桌面应用程序。

Android开发

Android SDK 开发环境:Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API库。

Java应用层框架API库。

模拟器(arm虚拟机)。

辅助工具:ADB(调试工具)、AAPT(生成APK)、DX(编译工具)、DDMS(调试窗口)。

开发文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值