1.嵌入式Linux开发概述

时间:2020-12-11 18:36:35

[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的第一代设计实现。出色的媒体处理能力和低功耗特点特别适用于无线和消费类电子产品,同时高数据吞吐量和高性能的结合非常适合网络处理应用,包括下列核:
      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。