嵌入式开发系统的简介

article/2025/4/20 5:33:56

小白日志(一)

嵌入式开发系统的简介

嵌入式系统是一种以硬件为载体,以计算机技术为基础,以应用程序为核心,满足特定功能、要求以及应用环境的专用计算机系统。所谓“嵌入式”,顾名思义,嵌入到某个物体中,使其一定程度上的智能化,自动化,由原来的不可控变为可控,由随机性趋于规律性。例如,在一套制冷制热系统上加上“嵌入式”就可以打造空调,在一个音响上加入“嵌入式”就拥有自己的“小i同学”。

嵌入式系统的主要特点

  1. 功耗限制
    在空间有限的开发板上,嵌入式系统的功耗问题是首要因素,或许开发板的能源提供只是几节电池而已。
  2. 低成本
    包含硬件成本和软件成本。硬件成本来源于微型处理器;软件成本一般难以预测,取决于设计方法。
  3. 专用性强
    嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念
  4. 多速率
    同时运行多个实时性任务,系统必须同时控制这些动作,但这些动作有些速度慢,有些速度快。
  5. 系统内核小
    由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。例如ENEA公司的OSE实时OS,内核只有5K,而Windows的内核则要大得多。
  6. 不可垄断性
  7. 产品稳定性

嵌入式系统的分类

类型举例
系统级各种类型的工控机、PC104模块
片级各种以单片机、DSP、微处理器为核心的产品
板级各种类型的带CPU的主板及OEM产品

嵌入式系统的软/硬件框架

在这里插入图片描述
简单解释一下图中一些名词:

  • D/A:数模转换器,又称D/A转换器,简称DAC,是把数字量转变成模拟量的器件。

  • A/D:模数转换器,又称A/D转换器,简称ADC,是把模拟量转变成数字量的器件。
    “看到这里,电子类自动类的同学有没有很亲切,没错,数电模电就是搞这个东西。”

  • I/O:输入/输出(Input/Output)分为IO设备和IO接口两个部分。在一些POSIX兼容的系统上,如Linux系统,I/O的操作可有多种方式。

  • ROM:只读存储器(Read-Only Memory),一种只能读出事先所存数据的固态半导体存储器。

  • SDRAM:同步动态随机存取内存,也就是我们现在常说的“内存”,如今已经发展出多代,其中DDR便是SDRAM中的一种,是我们今天普遍使用的内存条。

  • BSP/HAL(板级支持包/硬件抽象层):研究这部分的都是些“大牛”,你可以就理解为操作系统和硬件对接的一个“润滑层”,没有这个“润滑层”,用户不能很流畅的操作硬件。

实时操作系统(RTOS)

实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,他是嵌入式系统的“大脑”,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中, 每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。

实时操作系统特点

IEEE 的实时UNIX分委会认为实时操作系统应具备以下的几点:

  • 异步的事件响应
  • 切换时间和中断延迟时间确定
  • 优先级中断和调度
  • 抢占式调度
  • 内存锁定
  • 连续文件
  • 同步

总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。它强调的是实时性可靠性和灵活性, 与实时应用软件相结合成为有机的整体起着核心作用, 由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。

嵌入式操作系统的优缺点

  • 优点

1.使程序的设计和扩展变得容易,大大提高了开发效率
2.充分发挥32位CPU多任务的潜力,实现多任务设计,能够充分利用硬件资源和实现资源共享。
3.实时性和健壮性能够得到更好的保证。

  • 缺点
    嵌入式操作系统会增加ROM/RAM等额外开销,以及5~10%的CPU额外负荷。

有关嵌入式操作系统的一些零散概念——

前后台系统

在这里插入图片描述

任务

一个任务,也称作一个进程,是一个简单的程序,该程序可以认为CPU完全属于该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。

  • 任务切换
    当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即保存CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自已的栈区之中。入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的栈中重新装入CPU的寄予存器,并开始下一个任务的运行。这个过程就称为任务切换。这个过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。
  • 任务优先级
    任务的优先级是表示任务被调度的优先程度。每个任务都具有优先级。任务越重要,赋予的优先级应越高,越容易被调度而进入运行态。
内核

多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核需要消耗一定的系统资源,比如2%~5%的CPU运行时间、RAM和ROM等。内核提供必不可少的系统服务,如信号量、消息队列、延时等

  • 非占先式内核
    非占先式内核要求每个任务自我放弃CPU 的所有权。非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。

  • 占先式内核
    当系统响应时间很重要时,要使用占先式内核。因此绝大多数商业上销售的实时内核都是占先式内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。

中断

中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文,即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:

  1. 在前后台系统中,程序回到后台程序;
  2. 对非占先式内核而言,程序回到被中断了的任务;
  3. 对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。

在这方式插入图片描述

  • 时钟节拍
    时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同应用,一般在10ms到200ms之间。其作用:时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍率越快,系统的额外开销就越大。
资源

程序运行时可使用的软、硬件环境统称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器。资源也可以是一个变量、一个结构或一个数组等。

  • 共享资源
    可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥。

嵌入式系统的应用

在这里插入图片描述

“第一次写东西,欢迎各路大神指点,希望做出补充和提出建议”


http://chatgpt.dhexx.cn/article/unPnlB9G.shtml

相关文章

嵌入式系统开发环境概述

嵌入式系统开发环境主要包括: 集成开发工具交叉编译器批处理文件makefileLink Script调试工具下载工具其它工具(Offline Tools)模拟器版本控制工具 接下来分别讲解以上各个工具: 1、集成开发工具 一般CPU厂商会提供针对该CPU的集成开发环境(IDE)&…

嵌入式系统概述3-嵌入式系统的开发流程和学习基础、方法

嵌入式系统的开发流程 以带有操作系统的32位微处理器为核心的嵌入式系统为例: 第一步:建立开发环境 操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linu…

嵌入式系统开发概述

1、嵌入式系统是什么 2、嵌入式系统的组成 3、嵌入式开发与传统单片机开发不同 4、嵌入式应用和就业方向 5、学习路线 1、嵌入式系统是什么? 嵌入式系统(百度):嵌入式系统是以应用为中心,以计算机技术为基础&#…

mysql给用户授予某数据库权限_mysql 数据库授权(给某个用户授权某个数据库)

mysql 数据库授权(给某个用户授权某个数据库) 2016-10-10 带你飞 1.新建用户。 //登录MYSQL >mysql -u root -p >密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"))…

MySQL数据库用户管理以及数据库用户授权

目录 一、数据库用户管理 1、新建用户 2、查看用户信息 3、重命名用户 4、删除用户 5、修改当前登录用户密码 6、修改其他用户密码 7、忘记 root 密码的解决办法 7.1 修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql 7.2 使用 update 修改 root 密…

Mysql8数据库如何给用户授权

查看用户已有权限 SHOW GRANTS FOR [用户名];使用root用户授予所有权限 -- 授权 GRANT ALL PRIVILEGES ON [数据库名].[表明] TO [用户名][连接地址] WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES;例如给numb用户的所有连接地址授权numb数据库所有表权限如下&#xff1a…

mysql授权用户多个数据库_MySQL创建用户授权数据库

MySQL等主流数据库的最高权限一般是root用户. 有时我们需要提供数据库的账号和密码以使用某些服务. 但实际上每个服务只会使用1个左右的数据库. 直接将root账号和密码随意分配是一件很危险的事情. 所以我们需要单独的创建用户, 并授权需要的数据库给它. 用户管理 创建用户 创建…

Mysql数据库给用户添加权限

1、Mysql下创建新的用户 新创建的用户默认是没有任何权限的。 语法格式: create user 用户名 identified by 密码; 2、给用户分配权限 语法结构: grant 权限 on 数据库.数据表 to 用户 主机名; 3、精确的控制用户的权限 略 参考博文: m…

mysql怎么给用户加权限_mysql怎么给用户加权限

mysql给用户加权限的方法:首先创建用户,代码为【create user 用户名 identified by 密码】;然后给用户分配权限,代码为【grant 权限 on 数据库.数据表 to 用户 主机名】。 mysql给用户加权限的方法: 一、Mysql下创建新…

matlab实现参数方程求导(paradiff函数)

目录 总述函数说明应用举例函数实现 总述 函数说明 function resultparadiff(y, x, t, n) %paradiff %参数方程求导的递归实现 % 调用格式: % y1 paradiff(y, x, t, n) % 其中:yf(t), xg(t), t为参数, n为导数阶次 % % Examples: % 已知参数方程…

MATLAB 函数求导

示例:求函数 的导函数并画出两个函数的图像。 clear clc close all %% % 创建符号变量sx syms sx % 创建关于符号变量sx的符号函数sf sf1/(1exp(-sx)); % 将符号函数sf转化为普通函数f fmatlabFunction(sf); % 对符号函数sf求得导函数sdf sdfdiff(sf); % 将导函数…

matlab匿名函数求导,MATLAB进行匿名函数求导出现错误

在视距传输情况下求干扰(上行用户对下行基站传输的干扰)的拉氏变换,首先求得干扰服从LOS下的表达式如下: LOS.png (9.08 KB, 下载次数: 11) LOS传输干扰的拉氏变换 2017-3-18 20:39 上传 程序思路如下: 首先先对含有t的表达式进行描述(求解过程第一步),接下来对含有t的表达…

利用Matlab求解函数导数并绘图

利用Matlab求解函数导数并绘图 题目要求 解题思路 1、定义符号变量 x ,并建立函数表达式 f(x); 2、利用 diff 函数求解 f(x) 的一阶导数和二阶导数; 3、利用 subplot 函数确定多行多列图像位置; 4、利用 ezplot 函数绘制符号函数图像 程序…

matlab二次求导函数,原来可以这样求导函数,再复杂的函数求导不再话下!

还用去翻标准答案吗? 我们以下面这个函数为例: 一阶一维(这里的阶是求几阶导函数的阶,维指的是函数表达式的变量个数): 输入以下命令,其中diff(函数表达式名)是MATLAB内置的求导函数名。 >> syms x; >> f(…

用matlab来计算函数,Matlab函数求导教程

Matlab是一款比较出名的商业数学软件,在这个软件,我们可以解答多种数学难题,但是对于刚接触这个软件的朋友来说,Matlab怎么进行函数求导是一个很大的难题,那么如果你不懂的话,赶紧看看小编整理的Matlab函数…

MATLAB导数计算

通过调用diff命令,我们可以使用MATLAB计算符号导数,只需要把要求的求导函diff命令 例一:计算 syms x t fx.^3x.^2 gcos(10.*t) diff(f) diff(g) 输出结果: 例二:我们要得到f更高阶的导数,我们使用diff(f,n…

WEB前端--SEO优化学习笔记(9)

1.seo是什么 大家口中的SEO(Search Engine Optimization),中文翻译为“搜索引擎优化”,从本质上来说,其实就是如何迎合搜索引擎的规则,使得网站在搜索结果中能有更好的排名,比如一个PDA行业网站…

前端性能优化有哪些方法

1. 浏览器http请求并发前端如何优化 减少网络请求数: 1) 配置304请求,提高请求速度(这属于后端配置) 2) 将图标合成雪碧图,减少图片数量,减少http请求数 3) 使用webpack合并css和js,减少文件数量,减少htt…

前端性能优化CDN

就是将源站的静态资源(图片视频、html/css/js安装包apk等)缓存到位于不同区域的CDN节点服务器上,通常是终端网络提供商的机房,当用户访问网站时,会去离用户距离最近的CDN服务器上获取,从而避免了网络拥塞&a…

前端SEO优化方案

一、关于页面加载速度: 1、一般我们将CSS,JS文件通过外链的方式引入页面,当这些外链数量过多,那相应HTTP请求次数也要增加,这里我们尽量合并CSS,JS文件夹,压缩一些不需要后期维护的CSS,JS代码,CSS文件推荐压…