第一章 嵌入式系统概述

 

嵌入式系统概述

1 什么是嵌入式系统
  IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”。

2 嵌入式系统的含义
  嵌入系统就是将计算机的硬件或软件嵌入其它机电设备或应用系统中去,所构成了一种新的系统,即嵌入式系统。
  嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。

3 嵌入式系统与桌面通用系统的区别
 嵌入式系统中运行的任务是专用且比较确定的,桌面通用系统需要支持大量的、需求多样的应用程序。
 嵌入式系统往往对实时性提出较高的要求。嵌入式系统中使用的操作系统一般是实时操作系统。
 嵌入式系统运行需要高可靠性保障,比桌面系统的故障 容忍能力弱很多。
 嵌入式系统需要忍受长时间、无人值守条件下的运行。
 嵌入式系统运行的环境恶劣。
 嵌入式系统大都有功耗约束。
 嵌入式系统比桌面通用系统可用资源少得多。
  嵌入式系统的开发需要专用工具和特殊方法。
  嵌入式系统开发是一项综合的计算机应用技术。主要技术包含下面的四个:
    系统结构:状态控制器、中断控制器处理
    汇编语言:操纵外围设备、端口
    操作系统:设置运行任务、通讯、互斥
    编译原理:交叉编译、bootloader加载
★实时系统:指系统能够在限定的响应时间内提供所需要求的服务。

4 嵌入式系统应用走向纵深化发展
  应用充分普及:工业控制、数字化通讯、数字化家电。
  嵌入式微处理器32位、64位、128位
  嵌入式实时操作系统使用比率越来越高。
  嵌入式系统开发工具越来越丰富。
  嵌入式系统产业链形成。
  嵌入式系统时效性越来越明显。

5 嵌入式系统发展趋势
  软硬件系统整合
  SOC设计:体积小、散热好、低功耗、可靠性高
  应用领域拓展:传感器网络、普适计算
  内容服务增加

6 嵌入式系统目前的挑战
  1,嵌入式系统发展与计算机技术发展越行越远
    两类技术路线
      ARM为基础的嵌入式硬件技术,定制软件
      X86为基础的计算机硬件技术,通用软件
      ARM和X86两者之间共享性极差,成果难以共享。
  2,计算机技术逐步以通用化战胜专用化
  3,嵌入式技术逐步桌面化

7 嵌入式系统结构
  嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统(可选),以及用户的应用软件系统等四个部分组成。

8 一个典型的嵌入式系统应用
 

9 嵌入式微处理器
  1000多种硬件处理器,分为MCU、DSP、MPU、SOC。包括嵌入式微控制器(MCU),嵌入式DSP处理器,嵌入式微处理器(MPU),嵌入式片上系统(System On Chip)。

10 外围硬件设备
  片外总线:连接系统各个部件,进行互连和传输信息的信号线。
    ESIA总线、SCSI总线、PCI总线
    AMBA总线:ARM研发的总线规范
    专用总线
  电子盘:采用flash芯片存储数据,体积小、功耗低、抗震。
  I/O设备:A/D、D/A,中断控制器,UART,LCD
  通讯设备:有线通讯:IEEE1394、USB,无线通讯:IrDA、Bluetooth、802.11b/g。


11 典型的嵌入式实时操作系统(RTOS)
  近200种操作系统,VxWorks、QNX、WinCE、PalmOS
  面向SOC的操作系统:Symbian的Epoc、Express Logic的 ThreadX、ATI的Nucleus

12 混合编程模式
  嵌入式软件经常需要直接控制外设、进行寄存器操作等,因而较多使用高级语言、汇编语言混合编程。
  嵌入式系统经常要求去访问某特定的内存位置。例:
    unsigned short x;
    unsigned short *io_regs;
    io_regs = (unsigned short *)0x400000000;
    x = *io_regs[10];
  存储限定符volatile。
    在多任务共享变量、中断与任务共享变量时,必须使用volatile限 定符,强制读取内存中的值。
    void main(void)
    {
    volatile int *p_status;
    int *p_data;
    p_status = (int *)0x4001;
    p_data = (int *)0x4000;
    do {
    } while((*p_status & 0x01) == 0);
    ……
    }
    代码共享与可重入
    在嵌入式系统中,多个任务使用子程序的一个单一拷贝是很常见,这些子程序称为共享代码。
    由于实时系统的任务是可抢占的,因而必须保证共享代码同时被几个任务调用而不发生冲突,这就是代码的可重入。
    char * strcpy (char *des, const char *src)
    {
        static char *save = des;
        while ((* des++ = * src++) != ‘\0’);
        return (save);
    }

你可能感兴趣的:(嵌入式)