1.嵌入式Linux开发概述

2019-07-12 18:17发布

[1].嵌入式系统定义

从20世纪70年代起,将微型处理器“嵌入”到一个对象体系中,进行某类智能化的控制,为了区别于通用计算机系统,将这类为了某个“专用”的目的,而“嵌入”到对象体系中的计算机系统,称为嵌入式计算机系统,简称嵌入式系统。

[2].嵌入式设备定义

除电脑、超级计算机等具备强大计算能力及系统资源的等电子系统之外,凡具备计算能力的设备都可称为嵌入式设备。

[3].嵌入式系统的特点

<1>.软件、硬件可裁剪。 <2>.对功能、可靠性、成本、体积、功耗严格要求。

[4].嵌入式技术的发展历史

通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。
嵌入式计算机系统的技术要求这是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力于控制的可靠性。
  • <1>.SCM(Single Chip Microcomputer)
    简称单片机,将CPU、RAM、ROM、定时器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。
  • <2>.MCU(Micro Controller Unit)
    简称微控制器,实际上,MCU、SCM之间的概念在日常工作总并不严格区分,随着能够运行更复杂软件的SoC的出现,“单片机”通常是指不运行操作系统、功能相对单一的嵌入式系统,但这不是绝对的,例如8051可以运行RTX51实时操作系统,系统大小仅此6kB。
  • <3>.SoC(System on a Chip)
    简称片上系统,是一个芯片上由于广泛使用于预定制模块IP(Intellectual Property)而得以快速开发的集成电路。

[5].基于ARM处理器的嵌入式Linux系统

<1>.ARM处理器介绍
  1. ARM的概念
    嵌入式处理器种类繁多,由ARM、MIPS、PPC、FPGA等多种架构。ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对以内微处理器的通称,还可以认为是一种技术的名字。ARM公司是32位嵌入式RISC微处理器技术的领导者,自从1990年创办公司以来,基于ARM技术IP核的处理器的销售量已经超过了100亿,该公司不生产芯片,而是出售芯片技术授权。
  2. ARM体系架构版本
    ARM体积架构的版本就是它所使用的指令集的版本。ARM架构支持32位的ARM指令集核16位的Thumb指令集,后者是的代码的存储空间大大减小。还提供了一些扩展功能,比如Java加速器(Jazelle)、用以提高安全性能的TrustZone技术、智能能源管理(IEM,Intelligent Energy Manager)、SIMD和NEONTM等技术。
    还在使用的ARM指令集(ISA,Instruction Set Architecture)有以下版本。
    • a)ARMv4
      只支持32位的指令集,支持32位的地址空间,一些ARM7系列的处理器和Intel公司的StrongARM处理器采用ARMv4指令集
    • b)ARMv4T
      增加了16位Thumb指令集,可以节省超过35%的存储空间,同时具备32位代码的所有优点
    • c)ARMv5TE
      改进了Thumb指令集,增加了一些“增强型DSP指令”,简称位E指令集
    • d)ARMv5TEJ
      增加了Jazelle技术用于提供Java加速功能。相比于仅用软件实现的Java虚拟机,Jazelle技术是的Java代码的运行速度提高8位,同时功耗降低了80%,该技术是的可以在一个单核的处理器上运行Java程序、已建立好的操作系统和应用程序
    • e)ARMv6
      2001年问世,对存储系统、异常处理、尤其是对多媒体功能的支持,包含了一些媒体指令以支持SIMD媒体功能拓展,SIMD媒体功能扩展为音频/视频的处理提供了优化功能,可以使音频/视频的处理性能提高4倍,还引入了Thumb-2和TrustZone技术,Thumb2技术添加了混合模式的功能,定义了一个新的32位指令集,可以运行32位指令于传统16位指令的混合代码。者能够提供“ARM指令级别的性能”与“Thumb指令的代码密度”。
      而TrustZone技术在硬件上提供了两个隔离的地址空间:安全域(secure world)和非安全域(non-secure world),给系统提供了 一个安全机制
    • f)ARMv7
      使用Thumb-2技术,还使用了NEONTM技术,将DSP和媒体处理能力提高近4倍,并支持改良的浮点运算,满足下一代3D图形,游戏物理应用以及传统嵌入式控制应用的需求
  3. ARM处理器系列
    在相同指令集下,他配不同不见就可以组装出具有不同功能的处理器,比如有无内存管理单元、有无调试功能等。它们可以分为8系列。
    系列名中有7个后缀,可以组合:
    T:表示支持Thumb指令集。
    D:表示支持片上调试(Debug)。
    M:表示内嵌硬件乘法器(Multiplier)。
    I:支持片上断电和调试点。
    E:表示支持增强型DSP功能。
    J:表示支持Jazelle技术。
    S:表示全合成式(full synthesizable)。
    处理器系列有以下8种:
    • a) ARM7
      采用32位低功耗RISC架构,最高可达到130MIPS,支持Thumb16位指令集和ARM32位指令集,包括下列核:
      ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ-S
    • b) ARM9
      站在ARM9的基础上,添加了MMU和Cache。最高可达到300MIPS,包括下列核:
      ARM920T、ARM922T
    • c) ARM9E
      在单一的处理器内核上提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。包括下列核:
      ARM926EJ-S、ARM946E-S、ARM966E-S、ARM968E-S、ARM966HS
    • d) ARM10E
      具有杰出的高性能、低功耗特点,由于使用了新的体系结构,导致拥有了ARM系列中最高的主频。采用了一种新的省电模式,支持“64-bit load-store micro-architecture”,含有浮点运算协处理器,同时符合IEEE754标准,支持向量运算,包括下列核:
      ARM1020E、ARM1022E、ARM1026EJ-S
    • e) ARM11
      是ARMv6的第一代设计实现。出 {MOD}的媒体处理能力和低功耗特点特别适用于无线和消费类电子产品,同时高数据吞吐量和高性能的结合非常适合网络处理应用,包括下列核:
      ARM11 MPCore、ARM1136J(F)-S、ARM1156T2(F)-S、ARM1176JZ(F)-S
    • f) Cortex
      基于ARMv7架构,分为Cortex-A、Cortex-R和Cortex-M。
      Cortex-A为传统的、基于虚拟存储的操作系统和应用程序而设计,支持ARM、Thumb和Thumb-2指令集。
      Cortex-R针对实时系统设计,支持ARM、Thumb和Thumb-2指令集。
      Cortex-M对价格敏感的产品设计,只支持Thumb-2指令集
    • g) SecurCore
      专门为安全需要而设计,提供了完善的32为RISC技术的安全解决方案,包括下列核:
      SecurCore SC100、SecurCore SC200。
    • h) OptimoDE Data Engines
      是一个新的IP核,针对高性能的嵌入式信号处理应用而设计
  4. 嵌入式操作系统(常见)
    • a) VxWorks
      美国WindRiver公司开发的嵌入式实时操作系统。
      优点:具有可裁剪的微内核结构、高效的任务管理、灵活的任务间通讯、微秒级的中断处理,支持POSIX 1003.1b实时扩展标准,支持多种物理介质及标准、完整的TCP/IP网络协议等
      缺点:支持的硬件相对较少,并且源代码不开放,要专门的技术人员进行开发和维护,并且授权费比较高
    • b) Windows CE
      微软公司针对嵌入式设备开发的32位、多任务、多线程的操作系统,支持x86、ARM、MIPS、SH等架构的CPU。
      优点:硬件驱动程序丰富、强大的多媒体功能、可灵活裁剪以减小系统体积,应用开发、调试便利。
      缺点:源代码不开放,开发人员难以进行更细致的定制;占用比较多的内存,整个系统相对庞大;版权许可费比较高。
    • c) uC/OS-II
      Micrium公司开发的操作系统。仅仅是一个实时内核,用户需要完成其他更多的工作,比如硬件驱动程序,文件系统操作等。
      优点:可用于8、16、32位处理器,可裁剪,对硬件要求低。
      缺点:调度方式位抢占式,总是运行最高优先级的就绪任务。
    • d) Linux
      由学生Linus(林纳斯·托瓦兹)首先编写的一款操作系统,遵循GPL协议开放源码。同时Git也是他开发的
      优点:几乎支持所有32位、64位CPU;内核中支持的硬件种类繁多,几乎可以从网络上找到所有硬件驱动程序;支持所有网络协议;提供大量的开发、编译、调试工具,均遵循GPL协议;有庞大的开发人员群体,和众多的技术论坛。
      缺点:Linux Kernel 2.6版本以前缺少实时性。但是在很多变种的Linux中做了很大的改进,例如:TimeSys Linux。