精华内容
下载资源
问答
  • 嵌入式操作系统总结

    2018-12-18 14:21:42
    挖个坑,以后填,立个flag

    挖个坑,以后填,立个flag

    展开全文
  • 结课作业,可直接使用,对课程的一个总结性论文。方便快捷。
  • 嵌入式操作系统》实验报告
  • 河北工业大学《嵌入式操作系统》实验报告 实验一 Linux下C编程 实验二 搭建NFS服务器 实验三 守护进程 实验四 进程间通信——有名管道 实验五 进程间通信——信号机制 实验六 进程间通信——共享内存 综合实验——...
  • 系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础... 嵌入式操作系统(Embedde...

      系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。

      嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。相对于一般操作系统而言,它除具有了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下嵌入式操作系统的特点:

      1)可裁剪性。支持开放性和可伸缩性的体系结构。

      2)强实时性。EOS实时性一般较强,可用于各种设备控制中。

      3)统一的接口。提供设备统一的驱动接口。

      4)操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。

      5)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。

      6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。

      7)更好的硬件适应性,也就是良好的移植性。

      以上是尚观教育小编总结的嵌入式操作系统的特点,同学们有什么不懂得问题记得随时与小编沟通。
     

    转载于:https://my.oschina.net/u/3918053/blog/2208367

    展开全文
  • 嵌入式操作系统复习总结

    千次阅读 2018-01-02 16:27:58
    第一讲:嵌入式系统基础 1.1 绪论 嵌入式系统的概念? 传统定义(狭义嵌入式):以应用为中心,以计算机技术为基础,软件、硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等要求的专用计算机系统。...

    第一讲:嵌入式系统基础

    1.1 绪论

    嵌入式系统的概念?
    传统定义(狭义嵌入式):以应用为中心,以计算机技术为基础,软件、硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等要求的专用计算机系统。
    当前客观定义(泛嵌入式):除PC之外的一切计算机系统都可以叫嵌入式系统。典型代表如:智能手机、工业机器人、车载电子、航空航天、安防监控等。

    嵌入式系统的三要素?
    嵌入+专用+计算机

    典型的EOS有哪些?
    嵌入式Linux,VxWorks,QNX,Windows Embedded,UC/OS-II,Delta OS ,Android,IOS

    嵌入式应用软件有哪些?
    车辆机器人,移动电话,掌上电脑,视听设备,医疗设备,交通管理,应用设备

    1.2 实时系统

    实时系统概念?
    实时系统(Real Time System)是指产生系统输入的时间对系统至关重要的系统。从输入到输出的滞后时间必须足够小到一个可接受的时限内。因此,实时逻辑的正确性不仅依赖于计算结果的正确性,还取决于输出结果的时间。
    实时系统是一个能够在指定或者确定的时间内完成系统功能以及对外部或内部事件在同步或异步时间内做出响应的系统。

    实时系统的衡量指标?
    响应时间(Response Time):指计算机从识别一个外部事件到做出响应的时间。
    生存时间(Survival Time):指数据的有效等待时间,在这段时间里数据是有效的。
    吞吐量(Throughput):指在一段给定时间内,系统可以处理事件的总数。

    实时系统的分类?

    • 根据响应时间分类
      • 强实时系统:强实时系统中,各任务不仅要保证执行过程和结果的正确,同时还要保证在系统能够允许的时间内完成任务。它的响应时间在毫秒或微秒数量级上。这对于关系到安全、军事领域的软硬件系统来说至关重要。
      • 弱实时系统:弱实时系统中,各个任务运行得越快越好,但并没有严格限定某一任务必须在多长时间内完成。弱实时系统更多地关注软件运行出结果与否,而对任务执行时间的要求相对宽松。一般它的响应时间可以是数十秒或更长,可能随着系统的负载轻重而有所变化。
      • 一般实时系统:一般实时系统是弱实时系统和强实时系统的一种折衷。它的响应时间可以在秒的数量级上,可广泛应用于许多消费电子设备中。如PDA、手机等都属于一般实时系统。
    • 根据确定性分类
      • 硬实时:硬实时指系统对系统响应时间有严格的要求。如果系统响应时间不能满足,就会引起系统崩溃或出现致命的错误。
        必须遇上一个硬时限。
        如果任何硬时限在任何时候被错过了,那么这个系统是不合适的。
        需要一种方法来确认遇上时限。
        硬实时系统:一个实时系统,其时限都是硬时限。
        举例:
        核电站的控制
        飞行的控制
      • 软实时:软实时指系统对系统响应时间有要求。但是如果系统响应时间不能满足,它并不会导致系统出现致命的错误或崩溃。
        一个软时限可能偶然地错过。
        软实时系统:一个实时系统,其一些时限是软时限。
        举例:
        电话交换
        多媒体应用

    1.3 重要概念

    冯诺依曼结构与哈佛体系的区别?
    哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
    哈佛结构与冯·诺依曼结构的最大区别在于冯·诺依曼结构的计算机采用代码与数据的统一编址,而哈佛结构是独立编址的,代码空间与数据空间完全分开。
    与冯.诺伊曼结构处理器比较,哈佛结构处理器有两个明显的特点:
    使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
    使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

    交叉编译与交叉调试(远程调试)?
    交叉编译:在一个平台上生成另一个平台上的可执行代码。
    交叉调试:就是宿主机(一般是电脑)与目标机(嵌入式系统)之间跨平台进行调试(一个是x86架构处理器,一个是ARM或其他嵌入式微处理器),这种跨平台的调试就叫交叉调试。

    练习题

    1. 写出下列英文缩写的英文原文以及中文含义。
      MPU: Microprocessor Unit
      微处理器
      MCU: Microcontroller Unit
      微控制单元
      H/W: HardWare
      硬件
      S/W:software
      软件
      AI: artificial intelligence
      人工智能
      RAM: random-access memory
      随机访问内存或者随机存取存储器
      ROM: read only memory
      只读存储器
      EPROM: Electrically Programmable Read-Only-Memory
      电可编程序只读存储器,可擦可编程只读存储器
      EEPROM: Electrically Erasable Programmable Read - Only Memory
      电可擦只读存储器
      RTOS: Real Time Operating System
      实时操作系统
      SOC: System on a Chip
      片上系统
      SOPC: system-on-a-programmable-chip
      可编程片上系统
      IP:
      知识产权
      API: Application Program Interface
      应用程序界面
      OS: Operating System
      操作系统
      HAL: Hardware Abstraction Layer
      硬件抽象层
      BSP: Blog Services Provider
      blog服务提供商
      MIPS:
      一款CPU
      IrDA:Infrared Data Association
      红外数据通讯
      SPI: Single Program Initiation
      单个程序启动
      UART: Universal Asynchronous Receiver/Transmitter
      通用非同步收发传输器
      PCMCIA: Personal Computer Memory Card International Association
      个人计算机存储卡国际协会
      MMU: Memory Management Unit
      存储器管理单元
      IDE: integrated development environment
      集成开发环境
      OCD: Off-Chip Driver
      离线驱动调整
      ICD: Interface Control Document
      界面控制文件
      BDM: Binary Digital Multiplier
      二进制数字乘法器
      IIS:
      集成音频接口

    2. 嵌入式系统的组成结构包括哪些部分?
      嵌入式计算机系统和执行装置

    3. 什么是实时系统?实时系统的性能指标有哪些?
      实时系统:实时系统的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。实时系统能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力;系统能够处理和储存控制系统所需要的大量数据。
      性能指标:响应时间、生存时间、吞吐量

    4. 哈佛结构的计算机有什么优缺点?
      优点:
      数据Cache和指令Cache区分开来,消除了数据引用与指令之间的冲突,使得取指令与取数据可以同时进行:而且允许独立地选择和优化各个Cache的大小、行大小和相联度
      缺点:
      (1)如果程序通过写指令而修改本程序的自身代码,则这些新指令将被写入到数据Cache,在程序能够执行这些指令前,两个Cache都必须被刷新,并且修改了的指令必须被写入存储器以便Cache能从中取得指令
      (2)不允许大幅度地调节指令Cache和数据Cache的容量分配比例

    5. 写出交叉编译和平台的定义
      交叉编译:就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
      平台:平台包含两个概念体系结构(Architecture)、操作系统(Operating System)

    第二讲:嵌入式系统开发的过程

    2.1 嵌入式系统开发的特点

    需要软硬件交叉开发环境和工具?

    • 上位机:宿主机(HOST)
      编辑、编译、链接和调试程序
      通用计算机,一般是PC,也称为宿主机。
      特点:软硬件资源比较丰富
      OS:如Windows和Linux
      各种开发工具:Tornado、GNU开发套件
      编辑、编译、链接和调试应用程序代码
    • 下位机:目标机、目标班(TARGET)
      运行程序
      也称为目标机
      体积较小,集成度高
      软硬件配置恰到好处
      硬件资源有限
      软件可裁剪、配置
      应用软件和操作系统绑定在一起运行
      运行嵌入式应用软件
    • 主机和目标机之间调试管道
      主机往往和目标机的体系结构不同。因此,需要有通信转换器对调试信息进行转换
    • 交叉软件开发工具包
      • 工程管理器
      • 源程序编辑器
      • 交叉编译器
      • 交叉链接器
      • 交叉调试器

    2.2 嵌入式系统调试技术

    嵌入式系统调试方式?

    • 本地调试
      调试器和被调试程序都运行在下位机。
      通用计算平台调试、嵌入式平台调试
    • 远程调试(交叉调试)
      调试器程序运行在上位机
      被调试程序运行在下位机
      上位机和下位机通过通信信道连接起来
      嵌入式平台调试。

    都有哪些调试技术?

    • 指令集模拟器(ISS)
    • ROM仿真器
    • 实时在线仿真器
    • 偏上 调试与背景调试
    • 基于Angel的调试
    • 基于JTAG的调试
    • 版主及调试
    • 常用ARM调试工具

    2.3 ARM开发工具

    映像文件概念?
    映像文件(image)是一个计算机上的可执行文件,在执行之前被加载到计算机的存储器中。
    通常,一个映像文件中包含多个线程。
    一个映像文件的内部包含若干个执行域,而每一个执行域包含自己的代码段和数据段。段的内部存储排列方式符合国际或行业的技术标准以及操作系统的内存管理要求,能够按照操作系统指定的浮动地址装入目标机存储器,之后由操作系统调度执行。

    ADS下文件目标文件和映像,.bin文件与.axf文件的区别?
    ARM处理器的映像文件是.axf文件或者.bin文件。
    .axf文件
    包含有调试信息和注释信息
    .bin文件
    不包含有调试信息和注释信息
    编译器输出的ARM映像文件以.axf文件为主。
    通过fromelf工具,可以把AXF文件转换成.bin文件。
    实际下载到系统板的映像文件多数是.bin格式文件。

    映像文件的组成?
    ARM映像文件内部组织具有层次结构的性质,含三种成分:

    • 域(region)
    • 输出段(output section)
    • 输入段(input section)。

    注意:以下讲解ARM映像文件内部成分时,不光考虑了链接视图,还考虑了加载视图和执行视图的描述,所以对英文术语“section”统称为中文术语“段”。

    域、输出端和输入段之间的关系?
    各成分的关系如下:各输入段包含了目标文件中的代码和数据。连接器读入并处理若干个由程序员指定的输入段,而后输出一个映像文件。一个映像文件由一个或多个域组成,每个域包含1~3个输出段,每个输出段包含一个或多个输入段。

    练习题

    1.在搭建嵌入式系统交叉开发环境时,宿主机与目标板(或目标机)有哪几种连接方式?
    串口通信、以太网、JTAG

    2.什么是BootLoader?它有什么作用
    在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。
    作用:
    可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序

    3.什么是嵌入式交叉调试?交叉调试的方式有哪几种?
    就是宿主机(一般是电脑)与目标机(嵌入式系统)之间跨平台进行调试(一个是x86架构处理器,一个是ARM或其他嵌入式微处理器),这种跨平台的调试就叫交叉调试。
    方法:基于JTAG的片上调试方法,基于调试代理的远程调试方法

    4.ARM仿真器的作用是什么?
    ARM仿真器是用于调试基于ARM内核的硬件模块

    5.何谓半主机方式?
    半主机是这么一种机制,它使得在ARM目标上跑的代码,如果主机电脑运行了调试器,那么该代码可以使用该主机电脑的输入输出设备

    6.什么是映像文件?什么是映像文件的加载视图和执行视图。
    是一个计算机上的可执行文件,在执行之前被加载到计算机的存储器中。 通常,一个映像文件中包含多个线程。 一个映像文件的内部包含若干个执行域,而每一个执行域包含自己的代码段和数据段。段的内部存储排列方式符合国际或行业的技术标准以及操作系统的内存管理要求,能够按照操作系统指定的浮动地址装入目标机存储器,之后由操作系统调度执行。
    加载视图:根据映像文件装载到存储器时的地址描述每一个域和段,该视图是映像文件开始执行前它的域和段的位置视图。
    执行视图:该视图根据映像文件在执行时每一个域和段的地址描述映像的各个组成部分。

    第三讲:ARM体系结构分析

    3.1 ARM处理器的特征及流水线

    流水线问题?
    ARM7流水线架构图:

    这里写图片描述

    ARM9流水线架构图:

    这里写图片描述

    3.2 ARM的工作模式和工作状态

    ARM的7种工作模式

    这里写图片描述

    ARM的2种工作状态
    (1)ARM状态
    机器指令为32位的ARM指令集,字对齐取指执行ARM指令。
    (2)Thumb状态
    机器指令为16位的Thumb指令集,半字对齐取指执行Thumb指令。

    3.3 ARM的寄存器组织

    ARM的寄存器分布情况
    这里写图片描述

    寄存器R0~R3(a0~a3):传递参数。被调用的子程序在返回前无需恢复寄存器R0~R3的内容。
    寄存器R4~R11(v1~v8):保存局部变量。如果在子程序中使用了寄存器v1~v8中的某些寄存器,则子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值。在Thumb程序中,通常只能使用寄存器R4~R7来保存局部变量。
    寄存器R12(IP):中间临时寄存器。在子程序之间的连接代码段中常常有这种使用规则。
    寄存器R13(SP):堆栈指针。在子程序中寄存器R13不能用作其他用途。寄存器SP在进人子程序时的值和退出子程序时的值必须相等。
    寄存器R14(LR):连接寄存器。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
    寄存器R15(PC):程序计数器。它不能用作其它用途。

    3.4 存储体系与数据类型

    存储体系(大端序)
    字数据的高位字节存储在低地址中
    字数据的低字节则存放在高地址中

    3.5 ARM的指令集及寻址方式

    指令码表
    这里写图片描述
    这里写图片描述

    寻址方式 — 基址寻址
    基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:
    LDR R2,[R3,#0x0C]
    读取R3+0x0C地址上的存储单元的内容,放入R2。
    STR R1,[R0,#-4]!
    ;[R0-4]←[R1],R0=R0-4,符号“!”表明指令在完成数据传送后应该更新基址寄存器,否则不更新;属前索引。

    3.6 ARM的指令解析

    Load/Store指令
    Load/Store指令用于在存储器和处理器之间传输数据。Load用于把内存中的数据装载到寄存器,Store指令用于把寄存器中的数据存入内存。
    共有3种类型的Load/Store指令:

    • 单寄存器传输指令
    • 多寄存器传输指令
    • 交换指令

    数据处理指令
    ARM数据处理指令大致分为以下6种类型。

    • 数据传送指令(MOV、MVN)
    • 算术运算指令(ADD、ADC、SUB、RSB、SBC、RSC)
    • 逻辑运算指令(AND、ORR、EOR)
    • 比较指令(CMP、CMN)
    • 测试指令(TST、TEQ)
    • 乘法指令(MUL、MLA、UMULL、UMLAL、SMULL、SMLAL)

    伪指令
    ARM伪指令不是ARM指令集中的指令,只是为了编程方便编译器定义了伪指令。可以像其它ARM指令一样使用伪指令,但在编译时这些指令将被等效的ARM指令代替。
    ARM伪指令有4条,分别为ADR伪指令、ADRL伪指令、LDR伪指令和NOP伪指令。

    3.7 ARM的异常处理

    异常有哪几类?

    ARM异常按照起因的不同分为3类:
    1.指令执行引起的直接异常

    • 软件中断(SWI)
    • 未定义指令(UND)
    • 预取指令中止(ABT)

    2.指令执行引起的间接异常

    • 数据中止(在读取和存储数据时的存储器故障)(ABT)

    3.外部产生的与指令流无关的异常

    • 复位
    • IRQ
    • FIQ

    中断向量表
    中断向量表中存放了各个异常中断以及处理程序的对应关系。
    在ARM体系结构中,异常中断向量表的大小只有32个字节。其中,每个异常中断向量占4个字节。系统初始化时,中断向量表从0号存储单元开始存放。
    这里写图片描述

    异常处理过程

    1.将CPSR的内容保存到将要执行的异常中断模式的SPSR中,主要包括当前模式、中断掩码和条件标记。
    例如:如果异常类型是FIQ,则SPSR_FIQ=CPSR
    2.设置当前程序状态寄存器CPSR中的模式字段位。
    3.将异常发生时程序的下一条指令地址保存到新的异常模式的R14寄存器。
    4.强制对程序计数器赋值。使程序从异常所对应的向量地址开始执行中断服务子程序。

    练习题

    1.ARM处理器工作模式有几种?各种工作模式下分别有什么特点?
    7种
    用户模式,特点:不能访问某些受操作系统保护的资源,也不能改变工作模式。
    6种特权模式:(特点:能访问全部资源,能 改变工作模式)

    • 系统模式
    • 5种异常模式
      • 管理(SVC):操作系统内核代码运行的模式
      • 普通中断(IRQ)、快速中断(FIQ):微处理器收到中断信号后强制处理器进入的模式,用于中断处理。
      • 中止(ABT)、未定义(UND):是真正意义上的“异常”,一旦出现就要进入对应的异常中断服务子程序进行处理。

    2.ARM处理器总共有多少个寄存器,这些寄存器按其在用户编程中的功能是如何划分的?这些寄存器在使用中各有何特殊之处?
    37个
    寄存器R0~R3(a0~a3):传递参数。被调用的子程序在返回前无需恢复寄存器R0~R3的内容。
    寄存器R4~R11(v1~v8):保存局部变量。如果在子程序中使用了寄存器v1~v8中的某些寄存器,则子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值。在Thumb程序中,通常只能使用寄存器R4~R7来保存局部变量。
    寄存器R12(IP):中间临时寄存器。在子程序之间的连接代码段中常常有这种使用规则。
    寄存器R13(SP):堆栈指针。在子程序中寄存器R13不能用作其他用途。寄存器SP在进人子程序时的值和退出子程序时的值必须相等。
    寄存器R14(LR):连接寄存器。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
    寄存器R15(PC):程序计数器。它不能用作其它用途。

    3.假设R0的内容为0x8000,寄存器R1、R2内容分别为0x01与0x10,存储器内容为空,执行下述指令后,说明PC如何变化?存储器及寄存器的内容如何变化?
    STMIB R0! , {R1 , R2}
    LDMIA R0! , {R1 , R2}

    4.什么是ARM处理器的影子寄存器?
    即专用寄存器

    5.请阐述ARM异常中断向量表的结构
    中断向量表中存放了各个异常中断以及处理程序的对应关系,有中断向量地址、异常中断类型、异常中断模式、优先级(6级最低)

    6.异常处理结束后,CPU是如何返回到主程序断点的?

    • 将所有修改过的用户寄存器从处理程序的保护栈中恢复。
    • 将SPSR复制回CPSR中,将连接寄存器LR的值减去相应的偏移量后送到PC中。
    • 若在进入异常处理时设置了中断禁止位,要在此清除。复位异常处理程序不需要返回。

    7.ARM异常中断的返回有哪几种情况?对应的中断服务子程序分别要做哪些处理?
    这里写图片描述

    8.就ARM处理器而言,相对寻址时的基准地址是什么?
    相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。

    9.数据块传送指令与堆栈指令有何不同?
    最基本的数据传送 一、通用数据传送指令 1.MOV指令 格式:MOV 目的操作数,源操作数 功能:将源操作数传送到目的操作数空间,源操作数不变。 使用要求: 源操作数和目的操作数不能同为存储器操作数,所有双操作数指令都应遵循这一语法要求。

    10.如何区别前索引偏移和后索引偏移?
    前索引偏移:
    LDR
    Rd, [Rn, #0x04]! ;将Rn+0x04之后的内存地址中的数据加载到Rd中;
    然后更新Rn的值Rn= Rn + 0x04
    上面的例子中如果没有!那么最后Rn的值将得不到更新

    后索引偏移
    LDR Rd, [Rn], #0x04;将Rn中的地址指向的内存中的数据加载到Rd中;
    然后将Rn更新Rn = Rn + 0x04

    前索引偏移就是在索引前偏移,看有无!决定时候更新寄存器的内容。后索引偏移就是在索引后偏移,索引时并不偏移,索引后更新寄存器内容。

    11.如何辨别LDR指令是ARM机器指令,还是伪指令。请你各举出3条数据传送LDR指令的例子和3条LDR伪指令的例子
    两者相比较,伪指令LDR的参数前面有“=”符号

    ARM机器指令
    LDR R2,[R3,#0x0C]
    LDR R1,[R0,R3,LSL#1]
    LDR R0,[LR,#-4]
    LDR伪指令
    LDR R0,=0x12345678
    LDR r0,=DATA_BUF+60
    LDR R1,[R0]

    12.LDR和STR指令有前变址、后变址和回写前变址三种变址模式,请你举例说明之。

    前变址
    LDR R0, [R1,#4]
    回写前变址
    LDR R0,[R1,#4]!
    后变址
    LDR R0,[R1],#4

    第四讲:ARM的嵌入式程序设计

    4.1 ARM会变程序指示符

    • ARM汇编语言源程序中语句由指令、指示符和宏指令组成。
    • 在ARM中将directive称做指示符
      • ARM的指示符指令相当于x86的伪指令
    • 在ARM中pseudo-instruction被称为伪指令
      • ARM指令集中只有4条伪指令
    • 而宏指令则是通过指示符定义的。
      • 使用MACRO和 MEND指示符

    4.2 ARM过程调用标准

    堆栈名与子程序名
    ATPCS规定堆栈为FD类型,即满递减堆栈,并且对堆栈的操作是8字节对齐。
    对于汇编程序来说,如果目标文件中包含了外部调用,则必须满足下列条件:
    (1)外部接口的堆栈必须是8字节对齐的。
    (2)在汇编程序中使用PRESERVE8伪指令告诉连接器,本汇编程序数据是8字节对齐的。

    子程序中结果返回的规则如下:

    • 结果为一个32位整数时,可以通过寄存器R0返回;
    • 结果为一个64位整数时,可以通过寄存器R0和Rl返回;
    • 结果为一个浮点数时,可以通过浮点运算部件的寄存器f0、d0或s0来返回;
    • 结果为复合型浮点数(如复数)时,可以通过寄存器f0~fn或d0~dn来返回;
    • 对于位数更多的结果,需要通过内存来传递。

    练习题

    1.子程序或者过程调用时,如果参数超过4个,如何编程实现正确地参数传递。
    当参数个数不超过4个时,可以使用寄存器R0~R3来传递参数;当参数超过4个时,还可以使用堆栈来传递参数。在传递参数时,将所有参数看作是存放在连续的内存字单元的字数据。然后,依次将各字数据传递到寄存器R0,R1,R2和R3中。如果参数多于4个,则将剩余的字数据传递到堆栈中。入栈的顺序与参数传递顺序相反,即最后一个字数据先入栈。对于参数个数可变的子程序,当参数个数不超过4个时,可以使用寄存器R0~R3来传递参数;当参数超过4个时,还可以使用堆栈来传递参数。在传递参数时,将所有参数看作是存放在连续的内存字单元的字数据。然后,依次将各字数据传递到寄存器R0,R1,R2和R3中。如果参数多于4个,则将剩余的字数据传递到堆栈中。入栈的顺序与参数传递顺序相反,即最后一个字数据先入栈。

    展开全文
  • 本文通过对uclinux和eCos的对比,分析和总结嵌入式操作系统应用中的若干重要问题,归纳出嵌入式系统开发中操作系统的选型依据。关键词 嵌入式 操作系统 eC0s uClinux 1 两种开源嵌入式操作系统介绍 uClinux是一...
  • 摘要:本文主要阐述了利用嵌入式操作系统VxWorks的图形开发组件WindML进行图形界面开发的相关技术,并且总结出了程序设计的总体框架以及一些在实际编程中遇到的问题的解决方法,实现了WindML功能的扩展。 关键词:...
  • 嵌入式系统知识总结

    2021-01-19 17:16:27
     (2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。  (3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的...
  • 但与商业嵌入式操作系统相比Linux遵循GPL,具有源代码开放、定制方便、支持广泛的计算机硬件等优点,所以,近年来嵌入式Linux成为嵌入式系统方向上的一个研究热点。本文首先分析了实时系统的特点和Linux内核在实时...
  • 国产嵌入式操作系统发展思考

    千次阅读 2020-09-18 12:53:20
    点击上方“大鱼机器人”,选择“置顶/星标公众号”福利干货,第一时间送达!作者 | 何小庆责编 | 屠敏出品 | CSDN(ID:CSDNnews)嵌入式操作系统历史悠久、门类繁多、用途广...

    点击上方“大鱼机器人”,选择“置顶/星标公众号”

    福利干货,第一时间送达!


    作者 | 何小庆

    责编 | 屠敏

    出品 | CSDN(ID:CSDNnews)

    嵌入式操作系统历史悠久、门类繁多、用途广泛,不仅包括嵌入式实时多任务操作者系统(RTOS)、开源的 Linux、机器人和路由器操作系统,还包括新型的物联网操作系统,以及边缘计算操作系统平台。笔者认为,只要是国人开发的,国人参与维护的开源项目,都是广义上的“国产嵌入式操作系统”,随着中国物联网产业迅猛发展,国产装备自主可控需求旺盛,国产嵌入式操作系统发展步入快车道。

    1.  国产物联网操作系统颇具影响力

    睿赛德电子科技公司这个名字大家不是很熟悉,但是他们的产品 RT-Thread 在物联网和嵌入式开发者心目中是非常棒的开源软件,RT-Thread 是国内目前合作和支持芯片和厂商众多、社区开发者踊跃、组件丰富、应用领域广泛的国产物联网操作系统。2017 年以前,RT-Thread 还是一个传统的嵌入式操作系统,经过过去两年的发展,RT-Thread 在缩短产品开发周期、加快端云互联对接和提升设备端软件质量等方面做了大量工作,取得显著的成效。

    华为 LiteOS 是另外一个在物联网领域颇具影响力的嵌入式操作系统。今天名气已经很大的华为可穿戴产品,比如 Huawei WatchGT,2015 年开始使用 LiteOS。超低功耗和超小的尺寸要求,给了 LiteOS 一个发展成熟的机会,到了 2017 年正式推出开源的物联网操作系统,LiteOS 已经初具规模很快在 NB-IoT 领域站稳了市场,特别是 OPEN CPU 的 NB-IOT 芯片和模组方案里面,都有 LiteOS 身影。在 HDC 2019 大会上,鸿蒙 OS 的当前的架构里面,LiteOS 也是其内核之一(Linux、鸿蒙和 LiteOS)。随着鸿蒙出现,未来 LiteOS 还是一个谜,但其针对 IoT 设备特有的素质,必将会融合进华为操作系统的布局里面。

    2.  开源嵌入式操作系统助力创新发展

    Zephyr 是 2016 年由 Intel、Synopsys、NXP 等公司发起的开源实时操作系统平台项目,现在由 Linux 基金会管理。项目旨在联合整个行业的领导者,构建针对资源小型受限设备,开发一个可扩展的嵌入式实时操作系统。Zephyr 虽然历史比较短,但起点很高,是发起公司和组织多年的经验教训的总结,最初的代码来自风河,风河的 vxwork RTOS 在工业和航空航天极有影响力。Zephyr 虽然只有 3 年的历史,相对 FreeRTOS 和 Contiki 等开源 RTOS,Zephyr 比较完备,中间件丰富。在安全设计方面 Zephyr 有缜密的考量,在代码规范中,Zephyr 用 MISRA C;在功能安全认证上,Zephyr 选择 IEC61508,这些功能开源嵌入式操作系统里面还没有其他项目能做到。Zephyr 有一个充满活力的国际开发社区,它和物联网操作系统中的 ARM Mbed OS、nuttX 和 RIOT 比较,活跃度很高。虽然 Zephyr 目前在中国关注度目前比较低,但技术上产品发展思路很值得国内同行的借鉴。

    3.  自主可控、安全先行

    国产嵌入式操作系统发展一个重要方向就是打造航空航天、工业装备和轨道交通、通信设备和汽车电子的自主可控的操作系统。面向装备与国防系统的嵌入式操作系统在可靠性、环境适应性、电磁兼容性、实时控制性方面都有自己的一套要求。华为在嵌入式操作系统方面的起步比较早,目前已经有基于开源的 Linux 自研的高可靠、高安全与高实时性的操作系统,覆盖了公司通信产品中的各个业务。华为的 RTOS 面向 5G 万物互联的物联网时代,对于操作系统安全方面的考虑尤其重视,可满足安全、可靠、自主的嵌入式实时操作系统要求。

    上海华元创信研发的锐华高安全嵌入式操作系统(ReWorks Cert),符合功能安全标准 IEC 61508 SIL/SC3(通用)和EN 50128 SW SIL4(轨道交通),是国内目前少数通过国际第三方认证公司认证的嵌入式实时操作系统。目前ReWorks Cert 已率先成功应用于轨道交通信号领域龙头公司卡斯柯信号有限公司的安全计算机平台中,该计算机平台已成功通过 EN 50126 SIL4 等级认证。ReWorks Cert 有望在城市轨道交通领域获得规模化应用。

    4.  技术发展、标准领航

    嵌入式操作系统的发展离不开相关国家标准的制定,中国电子技术标准化研究院物联网中心正在着手物联网操作系统国家标准体系制订的前期研究工作。物联网操作系统的应用领域比较广泛,包括智慧城市、智能家居、交通运输、智能电网等场景,物联网操作系统标准的制定,工作需要产业和学术届的支持和帮助,为物联网的标准化建设贡献力量。物联网操作系统标准制定,对于物联网产业生态建设将更为重要,期待政府出台一些政策来促进物联网操作系统的健康良性发展等。

    5.  嵌入式操作系统发展新趋势

    物联网安全需要嵌入式操作系统通过安全认证,比如医疗电子 IEC 60601/62304、汽车电子 ISO 26262、航空电子 DO-178B/C 和核电 IEC 61513。老牌的嵌入式操作系统 QNX、Vxwork、Integrity 和 SafeRTOS 在安全认证起步比较早,Thread-X、uC/OS 和 embOS 这两年也迎头赶上,开源的 Zephery 正在做认证的工作,将要成为首家通过安全认证的开源嵌入式操作系统。上面讲到上海锐华的 RTOS 成功应用于轨道交通信号领域龙头公司卡斯柯信号有限公司的安全认证计算机平台中, 这说明国产嵌入式操作系统已经具备安全的能力并具备相应的技术能力。

    嵌入式操作系统的虚拟化已经由来已久,几乎所有大的 RTOS 公司都有自己 Hypervisor 比如 ENEA 和风河,但是 Hypervisor 存在性能不高和缺少统一设备驱动的问题。随着容器技术在服务器和云计算成功采用,容器技术被证明具备应用级安全,这样轻量型容器技术受到物联网和嵌入式系统的关注。目前基于 Linux 轻量级容器技术研究进展比较大,比如 Canonical 推出的针对物联网以及边缘计算平台 Ubuntu Core 和它类似 Docker 的 Snap package 包管理软件,以及针对 IoT 的支持容器技术 ResinOS(现更名为 BalenaOS)。

    IoT 设备大量使用 MCU,无法运行 Linux,包括翼辉信息和华为等企业推出轻量级安全容器技术,即在它们 RTOS 基础上实现容器技术,已满足物联网时代安全、实时和快速布置和管理的新的需求。

    嵌入式操作系统的内核继续呈现百花齐放局面,基于宏内核的 RTOS 仍占多数。微内核技术应用在商业 RTOS 的历史可以追溯到 90 年初,比如 VRTXsa,目前依然活跃在市场上代表性产品是 QNX,因为实时性等因素,微内核技术在代码受限的 MCU 上应用很少,比如 uc/OS、FreeRTOS 和 RT-Thread 都是宏内核技术。在 MCU 中如何能享受到大型 OS 的一些特性,同时保留 RTOS 在尺寸、实时性等方面的优势呢?AliOS Things 在 ARM 架构Cortex M 和 A 处理器上做了有益尝试,他们实现安全、多应用、内核可靠和动态低流量升级等技术特征。

    AIOT 应用的对传统的操作系统提出新的课题,比如可扩展的内核技术、功能安全和信息安全、边缘计算架构的支持和应用 App 的便捷布置和管理。传统的移动操作系统比如 Android 和开源的 Linux 无法满足功能安全认证和强实时性的需要,传统的基于宏内核的 RTOS 无法满足系统扩展、维护和应用便捷的需要,针对 AIOT 场景的广义的嵌入式操作系统和泛 IoT OS 技术正在探索和研究中,比如无人驾驶汽车上的操作系统技术正在吸引产业和学术界关注。

    6.  结束语

    可以预见,嵌入式操作系统和 IoT OS 将向大型复杂和可配置、更小更安全和硬化两个方向发展,以适应物联网和人工智能时代,计算架构和应用软件平台发展的新需求。嵌入式软件经历了 80 年代微处理器和硬件设计占主导地位,软件在系统中比例很低;90 年代商业 RTOS 出现,解决了一部分软件复杂性问题;2000 年之后开源软件大规模采用,开发方法发生巨大的变革;2010 年之后 IoT 架构和应用驱动分布式实时软件回归;预计到了 2020 年“软件定义硬件”将驱动嵌入式软件开发方法变革,包括嵌入式和 IoT OS 的操作系统技术将迎来新的发展机遇。

    作者:何小庆,嵌入式系统知名专家、长期从事嵌入式与物联网技术、产业和教育方面工作,著有《嵌入式操作系统风云录:历史演进与物联网未来》等五本书籍和数十篇论文。

    -END-

    往期好文合集

    模块化编程到底有多重要?

    造成电路板焊接缺陷的三大因素详解

    干货 | 嵌入式系统软件架构设计

      最 后  

     

    若觉得文章不错,转发分享,也是我们继续更新的动力。

    5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等

    在公众号内回复「更多资源」,即可免费获取,期待你的关注~

    展开全文
  • 1.嵌入式操作系统行业竞争对手 由于本人工作主要在物联网和工业领域,所以收集的操作系统主要集中在物联网和工业领域。故桌面操作系统厂商深度、新起点、麒麟、微软、安卓等没有介绍。而主要收集的是嵌入式操作系统...
  •  (2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。  (3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的...
  • 确认是否为Linux可以识别的文件系统 2.确定设备的名称可通过使用命令fdisk-l查看 3.必须确定挂载点已经存在也就是在/mnt下的相应子目录已经存在 4.进行挂载使用完后可用umount卸载 2.shell脚本三个步骤 3.shellpot...
  • uClinux和eCos操作系统是两种性能优良、源码公开且被广泛应用的免费嵌入式操作系统。本文通过对uclinux和eCos的对比,分析和总结嵌入式操作系统应用中的若干重要问题,归纳出嵌入式系统开发中操作系统的选型依据。
  • 嵌入式设计课程总结(一)

    千次阅读 2020-03-01 14:58:27
    2、掌握嵌入式Linux操作的使用;(命令) 3、掌握嵌入式Linux开发工具的使用;(gcc、gbd、make、shell) 4、掌握嵌入式Linux应用开发;(文件、多任务、网络、数据库) 5、了解嵌入式产品开发流程;(硬件–软件–...
  •  目前,大多数实时系统都是嵌入式的,并且实际运行中的嵌入式系统也都有实时性的需求,因此,在诸多类型的嵌入式操作系统中,实时嵌入式操作系统是最具代表性的一类,它融合了几乎所有类型的嵌入式操作系统的特点,...
  • 嵌入式操作系统与物联网演进之路

    千次阅读 2017-05-05 10:27:10
    物联网是新一代信息技术的重要组成部分,回顾其发展,其中不得不提的必然是嵌入式系统。在如今的物联网热潮之下,嵌入式系统也面临着全新的...本期我们与嵌入式系统专家何小庆共同探索嵌入式物联网操作系统的演进之路。
  • 嵌入式操作系统-ucos是什么?

    千次阅读 2021-07-25 09:14:08
    一句话概括ucos系统:一款源代码开放的,抢占式多任务实时操作系统。其在整个嵌入式产品的架构中的角色和主要功能代码如下图所示:ucos 系统建立了用户程序和底层硬件之间沟通的渠道。通过ucos系统的管理和调度,一...
  • 但与商业嵌入式操作系统相比Linux遵循GPL,具有源代码开放、定制方便、支持广泛的计算机硬件等优点,所以,近年来嵌入式Linux成为嵌入式系统方向上的一个研究热点。本文首先分析了实时系统的特点和Linux内核在实时...
  • 嵌入式操作系统是ARMCPU的软件基础,从8位/16位单片机发展到以ARMCPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。更重要的是嵌入式操作系统对应用...
  • 一篇讲透嵌入式操作系统任务调度

    千次阅读 2020-06-20 22:50:17
    进互联网公司操作系统和网络库是基础技能,面试过不去的看,这里基于嵌入式操作系统分几章来总结一下任务调度、内存分配和网络协议栈的基础原理和代码实现。处理器上电时会产生一个复位中断,接下来会...
  • 为了在阅读启动代码的过程中不会出现很大的阅读与理解障碍,就总结了启动代码中用到的伪操作以供熟悉和查阅  PS: 这里说一下自己对汇编指令的看法,感觉就如英语单词似的,在进行阅读之前必须具备一些词汇量,但不...
  • 好东西。 我只我辛辛苦苦整理了两个周的时间才弄好的一份完整的报告,希望可以给与帮助。
  • 看到 21ic 公众号发布了一篇文章 主流嵌入式操作系统(RTOS)有哪些?看看这14种,收藏过来。 看到里面介绍了我在用的一个 RTOS 系统 RT-Thread。使用国内最有可能成为 Top 1 的 RTOS ,我很荣幸啊
  • 正好之前有做FreeRTOS,但都是偏上层的API函数的调用,这种仅会应用的层面给人带来一种不踏实的虚假感,因此为加强自己对整个系统的理解,一周内恶补了七、八本经典的书籍,针对各本书前几章对整个嵌入式操作系统的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,050
精华内容 21,620
热门标签
关键字:

嵌入式操作系统总结