首页 > 其他分享 >04_嵌入式软件架构

04_嵌入式软件架构

时间:2024-06-24 12:27:51浏览次数:25  
标签:架构 操作系统 04 系统 嵌入式 硬件 嵌入式软件 内核 BIT

目录

嵌入式软件基础

嵌入式软件分类

设备驱动层

引导加载程序

设备驱动程序

嵌入式操作系统

嵌入式操作系统概述

嵌入式实时操作系统

多任务系统上下文切换

机内自检

微内核操作系统


嵌入式软件基础

嵌入式软件分类

嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。

系统软件:控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。

应用软件:嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特定的应用领域,如飞行控制软件、手机软件、地图等。

支撑软件:辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器等。

设备驱动层

设备驱动层又称为板级支持包BSP,包含了嵌入式系统中所有与硬件相关的代码,直接与硬件打交道,对硬件进行管理和控制,并为上层软件提供所需的驱动支持。

BSP的基本思想是把嵌入式操作系统与具体的硬件平台隔离,即把所有与硬件相关的代码都封装起来,并向上提供一个虚拟的硬件平台,而操作系统就运行在这个虚拟的硬件平台上。它使用一组定义好的编程接口来与BSP进行交互,并通过BSP来访问真正的硬件。

引入BSP的目的是为了分层设计的思想,将系统中与硬件直接相关的一层软件独立出来,实现应用程序的硬件无关性,由于嵌入式硬件设备都是针对特定领域的,因此BSP也是针对某个特定的单板设计的,如果某个单板没有相应的BSP,操作系统就无法运行。

一般来说,BSP主要包括两个方面的内容:引导加载程序和设备驱动程序。

引导加载程序

引导加载程序是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:

(1)片级初始化:主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。

(2)板级初始化:通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含软件和硬件在内的初始化过程。

(3)加载内核(系统级初始化):将操作系统和应用程序的映像从Flash存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。

设备驱动程序

在一个嵌入式系统当中,操作系统是可能有也可能没有的,但设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。

对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能。

(1)硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。

(2)硬件关闭:将硬件设置为关机状态。

(3)硬件停用:暂停使用这个硬件。

(4)硬件启用:重新启用这个硬件。

(5)读操作:从硬件中读取数据。

(6)写操作:往硬件中写入数据。

嵌入式操作系统

嵌入式操作系统概述

嵌入式操作系统(Embedded Operating System,EOS)是指用于嵌入式系统的操作系统。

嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。

它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。

目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统μC/OS-Ⅱ、嵌入式Linux、Windows Embedded、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。

嵌入式操作系统的特点如下:

(1)系统内核小。由于嵌入式系统一般都应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。

(2)专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大的更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全两个概念。

(3)系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样,一方面利于控制系统成本,同时也利于实现系统安全。

(4)高实时性。高实时性的系统软件是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。

(5)多任务的操作系统。嵌入式软件开发需要使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。但是为了合理地调度多任务、利用系统资源、系统函数以及和专用库函数接口,用户必须自行选配操作系统开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

嵌入式实时操作系统

嵌入式实时操作系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。确定性是指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果;可预测性是指系统在运行之前,其功能、响应特性和执行结果是可预测的。对嵌入式实时系统失效的判断,不仅依赖其运行结果的数值是否正确,也依赖提供结果是否及时。

当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行。因而提供及时响应和高可靠性是其主要特点。

实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

实时操作系统的特征包括:

(1)高精度计时系统。计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确地计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。

(2)多级中断机制。一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。

(3)实时调度机制。实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲地进行,因为涉及两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面:一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。

因此,实际上来看,实时操作系统如同操作系统一样,就是一个后台的支撑程序,可以按照实时性的要求进行配置、裁剪等。其关注的重点在于任务完成的时间是否能够满足要求。

多任务系统上下文切换

在多任务系统中,上下文切换指的是当处理器的控制权由运行任务转移到另外一个就绪任务时所执行的操作。任务的上下文是任务控制块(Task Control Block,TCB)的组成部分,记录着任务的寄存器、状态等信息。当运行的任务转为就绪、挂起或删除时,另外一个被选定的就绪任务就成为当前任务。上下文切换包括保存当前任务的状态,决定哪一个任务运行,恢复将要运行的任务的状态。保护和恢复上下文的操作是依赖特定的处理器的。上下文切换时间是影响嵌入式实时操作系统RTOS性能的一个重要指标。

机内自检

在嵌入式实时系统中,通常用机内自检BIT(Built-In Test,BIT)完成对故障的检测和定位。BIT一般包括四种:上电BIT,周期BIT,维护BIT,启动BIT等。

上电BIT是在系统上电时对所有硬件资源进行自检测的程序,它拥有100%CPU控制权,可对系统中所有硬件进行完整测试。

周期BIT是在系统运行的空闲时间,周期性对硬件进行检测,由于系统处于正常运行状态,测试程序必须采取非破坏性测试算法,对部分可测部件进行测试。

维护BIT是在地面维护状态下,对系统硬件的部分或全部进行维护性测试,测试软件拥有100%的CPU控制权,可以对系统中所有硬件进行完整的测试。

启动BIT是在系统维护或检修的时候进行,维护人员通过控制按钮等手段启动BIT,检查或确认硬件资源故障。

嵌入式系统会在不同的状态或运行阶段选择进行相应的BIT,以保证系统故障的及时发现与定位。

微内核操作系统

微内核操作系统的基本思想是尽可能地将操作系统核心缩小,仅仅实现核心基础部分,如中断、并行调度等与硬件有关部分,而策略、应用层次则面向用户,这样大量的代码就移向进程,因此其只是操作系统中最基本的部分;微内核可以支持多处理机运行,适用于分布式系统环境。

因为微内核是尽可能地将内核做得很小,只将最为核心必要的东西放入内核中,其他能独立的东西都放入用户进程中,这样,系统就被分为了用户态和内核态,如图

实质

优点

缺点

单体内核

将图形、设备驱动及文

件系统等功能全部在内

核中实现,运行在内核

状态和同一地址空间

减少进程间通信和状态切换的系统开销,获得较高的运行效率

内核魔大,占用资源较多且不易剪裁。

系统的稳定性和安全性不好

微内核

只实现基本功能,将图形系统、文件系统、设备驱动及通信功能放在内核之外

内核精练,便于剪裁和移植

系统服务程序运行在用户地址空间,系统的可靠性、稳定性和安全性较高。

可用于分布式系统

用户状态和内核状态需要频繁切换,从而导致系统效率不如单体内核

标签:架构,操作系统,04,系统,嵌入式,硬件,嵌入式软件,内核,BIT
From: https://blog.csdn.net/qq_45937810/article/details/139922099

相关文章

  • 04串
    串串即字符串,由一个或多个字符组成的有限序列串是一种特殊线性表,限制了数据类型的线性表,数据间关系成线性关系串为了方便算法设计,第一个字符存放的下标可以从1开始串的基本操作voidStrAssign(&T,chars);//赋值操作voidstrCopy(&T,S);//复制操作boolStrEmpty(S);//判......
  • nginx配置负载均衡,nginx负载均衡404错误
    nginx在nginx.conf配置文件中通过upstream模块和server模块的配合使用,就可以实现负载均衡。在http的upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:weight:服务访问的权重,默认是1。down:表示当......
  • Klipper RP2040 display ssd1306 0.96 屏幕配置
    接线屏幕接线parampinGNDGNDVCCVCCSCLSDA编码器接线parampinGNDGNDEN1VCCEN2CLklipper配置#显示屏及旋钮[display]lcd_type:ssd1306#i2c_bus:i2c0dencoder_pins:^gpio24,^gpio23encoder_steps_per_detent:2c......
  • [图解]企业应用架构模式2024新译本讲解17-活动记录1
    100:00:01,070-->00:00:04,180下一个我们要说的就是200:00:04,190-->00:00:06,740活动记录模式了300:00:07,640-->00:00:11,210同样是数据源架构模式400:00:12,300-->00:00:18,480里面的一个,活动记录500:00:18,490-->00:00:21,710我们看这里,定义,active......
  • docker swarm 网络架构
    dockerswarm网络架构swarm网络网络架构OverlayNetwork:Swarm使用Overlay网络来实现跨主机容器的通信。Overlay网络在每个节点上创建虚拟网络,用于连接不同主机上的容器。优点:容器可以跨节点直接通信,简化了网络配置。缺点:可能会增加一些网络开销,影响到延迟和吞吐量。......
  • 04_搭建一个VUE3前端架子+gitee配置
    1.创建一个文件夹HCJV_012.vscode打开该文件夹,打开终端。3.使用vite安装,选择vue,选择JavaScript,项目名称demo01cnpmcreatevite@latest4.跳转demo01目录下cddemo015.安装cnpmcnpminstall尝试执行下:npmrundev6.安装VueRoutercnpminstallvue-router@47.......
  • RNN 和 Transformer 架构 之间的区别和联系
    递归神经网络(RNN)和Transformer是两种广泛应用于序列数据处理的神经网络架构,它们在设计原理、应用场景以及性能表现上有显著的区别和联系。RNN(RecurrentNeuralNetwork)基本概念RNN是一种能够处理序列数据的神经网络,每个时刻的输出依赖于当前输入和前一个时刻的隐藏状态。RNN通......
  • 基因调控网络(GRN)的不同架构
    在基因调控网络(GRN)研究中,不同架构的GRN反映了基因之间不同的调控关系和互动模式。以下是几种常见的GRN架构类型:主调节基因网络(MasterRegulatorNetwork):描述:由一个或多个主调节基因(MasterRegulators)控制其他基因的表达。主调节基因通常处于顶层,对一大群下游基因产生广泛影响......
  • 在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
    在Linux系统中,将本地80端口的请求转发到8080端口,可以通过使用iptables命令来实现。当前主机IP为10.0.0.104,具体命令如下:iptables-tnat-APREROUTING-d10.0.0.104-ptcp--dport80-jDNAT--to-destination10.0.0.104:8080解析:iptables:iptables命令用于配置Linux内核......
  • C++系统相关操作4 - 获取CPU(指令集)架构类型
    1.关键词2.sysutil.h3.sysutil.cpp4.测试代码5.运行结果6.源码地址1.关键词关键词:C++系统调用CPU架构指令集跨平台实现原理:Unix-like系统:可以通过uname-m命令获取CPU架构类型。Windows系统:可以通过环境变量PROCESSOR_ARCHITECTURE获取CPU......