嵌入式软件面试问题总结

2023-05-16

1.DCS

答:DCS一般指分散控制系统。 分散控制系统是以微处理器为基础,采用控制功能分散、显示操作集中、兼顾分而自治和综合协调的设计原则的新一代仪表控制系统。集散控制系统简称DCS。也可直译为“分散控制系统”或“分布式计算机控制系统”。

2.FreeRTOS 优先级设置

答:FreeRTOS 操作系统是设置的数值越小任务优先级越低

3.全双工和半双工的区别?

答:全双工和半双工的区别是传输过程不同以及速度不同等。

1、半双工是指传输过程中同时只能向一个方向传输.一方的数据传输结束之后,另外一方再回应。

2、全双工是指两方能同时发送和接受数据。在这种情况下就没有拥堵的危险,数据的传输也就更快。

4.FreeRTOS任务调度的方式

答:FreeRTOS 操作系统支持三种调度方式:抢占式调度,时间片调度和合作式调度。 实际应用主要是
抢占式调度和时间片调度,合作式调度用到的很少。

拓展:
 抢占式调度
每个任务都有不同的优先级,任务会一直运行直到被高优先级任务抢占或者遇到阻塞式的 API 函数,
比如 vTaskDelay。
 时间片调度
每个任务都有相同的优先级,任务会运行固定的时间片个数或者遇到阻塞式的 API 函数,比如
vTaskDelay,才会执行同优先级任务之间的任务切换。
在小型的嵌入式 RTOS 中,最常用的的时间片调度算法就是 Round-robin 调度算法。这种调度算法
可以用于抢占式或者合作式的多任务中。另外,时间片调度适合用于不要求任务实时响应的情况

5.FreeRTOS中各个任务访问同一资源,怎么保证不冲突

答:任务间的通信和同步机制

在裸机编程时,使用全局变量的确比较方便,但是在加上 RTOS 后就是另一种情况了。 使用全局变量相比事件标志组主要有如下三个问题:

1、使用事件标志组可以让 RTOS 内核有效地管理任务,而全局变量是无法做到的,任务的超时等机制需
要用户自己去实现。
2、使用了全局变量就要防止多任务的访问冲突,而使用事件标志组则处理好了这个问题,用户无需担心。
3、使用事件标志组可以有效地解决中断服务程序和任务之间的同步问题。

拓展:
事件标志组:事件标志组是实现多任务同步的有效机制之一。 每创建一个事件标志组,用户可以使用的事件标志是
24 个。
消息队列:重要的通信机制 。个或者多个任务可以通过 RTOS 内核服务从队列中得到消息。通常,先进入消息队列的消息先传
给任务,也就是说,任务先得到的是最先进入到消息队列的消息,即先进先出的原则(FIFO),FreeRTOS
的消息队列支持 FIFO 和 LIFO 两种数据存取方式。
信号量:计数信号量 + 二值信号量
计数信号量:任务间的同步和资源共享机制 。
平时使用信号量主要实现以下两个功能:
(1)两个任务之间或者中断函数跟任务之间的同步功能,这个和前面章节讲解的事件标志组是类似的。其实就是共享资源为 1 的时候。
(2)多个共享资源的管理,就像机房上机的例子 。(多个资源可以被多个任务访问的情况,是什么情况呢?)
二值信号量:当共享资源为一个时,和多值信号量一样,和事件标志组类似,只是它最多有24的标志(相当于创建24个二值信号量)。
互斥信号量:,通二值信号量类似,但是它有优先级继承(Priority inheritance)的功能,这样就有效地防止出现优先级翻转的问题 。

6.FreeRTOS是怎么实现任务的现场保护的

答:freertos在初始化的时候,会占用一块静态内存,作为操作系统用的栈,然后在这个栈上面进行入栈 出栈操作,在任务调度的时候,会将之前那个任务的局部变量存到这些栈里面

freertos对全局变量加上互斥,主要是防止两个任务同时对这个全局变量修改和读取,导致任务之间的数据出现错误,所以一般都是要加上对应的互斥量的

7.RS232与RS485的区别

请添加图片描述

8.为什么要使用嵌入式实时操作系统?什么情况下需要使用嵌入式实时操作系统?

(1)操作系统可以降低开发难度。

操作系统协调了不同功能程序以让他们共同完成同一个工作。同时操作系统又隔离了各个功能程序让它们的耦合程度降低。这样就方便设计人员编写各个功能模块,同时整个系统的结构也更加清晰。特别是系统逻辑结构复杂,功能模块较多的情况下操作系统的这一优点体现的更加明显。

同时,由于用任务划分整个流程,编写程序的时候逻辑以及时序会相对简单。只需要考虑单个任务所完成的功能,不用过多的考虑人物之间的耦合关系。

(2)增加代码可读性。给后续代码维护带来方便。

使用操作系统。可对代码进行层次管理,驱动归驱动,应用层归应用层。而且任务里的功能都很明显。每个任务的优先级,执行周期都是可以预期的。程序比较庞大的时候,拥有操作系统的程序的可读性将远远高于裸奔的芯片。(详情可以看看multiwii飞控的程序。。)

(3)增加代码可移植性。

使用操作系统的时候,每个任务的执行时间,优先级,延时的长短。也就是大部分逻辑方面,操作系统中都已经设定好了。且对需要处理的事分成多个任务处理。每个任务相对独立。当需要对代码进行移植的时候,只需要将操作系统移植,然后再将驱动程序移植就基本可以完成原功能。若未使用操作系统,移植一个逻辑,时序较为复杂的代码将是一场灾难。。

(4)需要用到操作系统的情况一般都是:

【1】需要同时处理多个任务(其实就是做到非阻塞);

【2】对实时性要求较高(各式各样的中断处理);

【3】mcu用得起操作系统(资源太少就别想了那么多,费力不讨好)

9.串口通讯,9600bit/s的波特率,数据格式是8,N,1, 请问一秒可以传输多少个字节的数据

答:波特率通常单位是bit/s,也就是 二进制位/秒

无校验位时9600/(8+1+1)=960bit(有校验位时8+1+1应该再加 1)

拓展:
CAN波特率的常用单位Kbps(每秒千比特),也就是kbit/s

10.Linux中进程和线程的区别

答:进程是具有一定独立功能的程序关于某个数据集的划分尺度小于进程,使得多线程程序的并发性高;

(1)一个程序至少有一个进程,一个进程至少有一个线程;

(2)线程的划分尺度小于进程,使得多线程程序的并发性高;

(3)进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率;

(4)每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制;

(5)从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这是进程和线程的重要区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式软件面试问题总结 的相关文章

  • Raspberry - 安装Mysql 5.7

    设备 xff1a Raspberry pi 3 系统 xff1a debian 9 stretch apt get目前还没有最新的5 7可以装 xff0c 尝试自己编译安装 xff0c 结果跑了一天 xff0c 最后还是失败 xff0c 后
  • MySql - 重置root密码(版本5.7.21)

    Mysql 版本 xff1a 5 7 21 网上能搜到的文章还挺多的 xff0c 最常见的是这个 xff1a 1 修改 my ini xff0c 在 mysqld 下增加一行 xff1a skip grant tables 2 重启 mys
  • Linux - 文件复制后大小不一致的问题

    问题 xff1a 通过cp或者rsync传输文件后 xff0c 通过du s查看到的体积 xff0c 前后不一致 原因 xff1a https stackoverflow com questions 10364999 file size c
  • 基于nand flash的文件系统的整理

    一 Nandflash简介 基本概念 xff1a flash芯片 block page 附加页 1 1结构 Flash芯片的擦除以块为单位 xff0c 写以页为单位 在每个flash芯片中包括非常多的块 xff0c 同款芯片上每个块的大小相
  • 卡普的21个NP完全问题-问题描述

    以下部分为卡普21个问题的名称 xff08 来自于维基百科https zh wikipedia org wiki E5 8D A1 E6 99 AE E7 9A 84 E4 BA 8C E5 8D 81 E4 B8 80 E5 80 8BN
  • 在终端使用命令卸载交叉编译工具

    ubuntu中可以使用命令行 sudo apt install gcc arm linux gnueabi 自动安装交叉编译工具 xff0c 但是往往软件版本太过超前了 xff0c 交叉编译时候使用的命令是 arm linux gnueab
  • ubuntu系统下降低风扇转速的方式

    我的本自从装了ubuntu之后风扇就呼呼的响个不停 xff0c 看了很多教程都是说强制降低风扇转速的方式 偶然看到了转速过快的原因是因为显卡与系统自带的驱动不兼容的问题 我的显卡是nvidia xff0c 安装显卡驱动步骤如下 xff1a
  • 怎样向visual studio加入vim的强大编辑能力,让装逼防不胜防!

    经常使用vim的小伙伴知道它的强大 私认为它最大的优势就是解放了你的右手 让鼠标成为了累赘 但是其学习曲线是相当陡峭的 虽然经常使用linux系统 但是偶尔还是会迫于形势缓缓胃口的 在使用VS的时候经常不自觉的就来一串ESC shift 冒
  • JGROUPS

    package com example jgroupsdemo import jakarta annotation PostConstruct import lombok extern slf4j Slf4j import org jgro
  • android studio仿真时遇到VT-x is disabled in BIOS解决办法

    在使用android studio run app时候遇到了 xff1a Intel HAXM is required to run this AVD VT x is disabled in BIOS 的错误提示 xff0c 导致无法进行仿
  • linux系统中resolv.conf文件详解

    etc resolv conf 它是DNS客户机配置文件 xff0c 用于设置DNS服务器的IP地址及DNS域名 xff0c 还包含了主机的域名搜索顺序 该文件是由域名解析器 xff08 resolver xff0c 一个根据主机名解析IP
  • yii2.0 basic版使用CRUD生成器的时候提示错误及页面显示错误

    在使用model生成器的时候不用加命名空间 xff0c 写好表名就可以直接生成了 但是在用CRUD的时候填写完controllers和model class之后点击生成会弹出错误提示 xff1a Class 39 TelBook 39 sp
  • linux日志对应内容

    var log messages 包括整体系统信息 xff0c 其中也包含系统启动期间的日志 此外 xff0c mail xff0c cron xff0c daemon xff0c kern和auth等内容也记录在var log messa
  • 常用证书操作函数

    现有的证书大都采用X 509规范 xff0c 主要同以下信息组成 xff1a 版本号 证书序列号 有效期 拥有者信息 颁发者信息 其他扩展信息 拥有者的公钥 CA对以上信息的签名 OpenSSL实现了对X 509数字证书的所有操作 包括签发
  • MongoDB 匹配查询和比较操作符

    一 匹配查询 1 查询所有 span class token operator gt span db accounts find span class token punctuation span span class token punc
  • 我的2014——典型程序员的一年,不想再重来

    兴冲冲地拿起 xff0c 信誓旦旦的搁在一边 xff0c 以为很快就会回来 xff0c 却一晃而过 xff0c 不再回来 xff1b 我不想再重复过去 xff0c 决定去做 xff0c 写下来 题记 已经记不起我2014的年初是否有过规划
  • 我的2016——程序员年到三十,工作第四年

    看到CSDN 我的2016 主题征文活动 已经是1月6号 xff0c 而截止时间是1月8号 xff0c 对比去年的总结是在闲等活动开始 xff0c 今年在时间上真的是天差地别 但是 xff0c 一年到头 xff0c 还是需要花些时间来回顾这
  • mac下 ndk_build: command not found

    参考 http blog csdn net greenbird811 article details 7543305 在mac下调用ndk build c代码文件提示错误 fix 1 启动终端Terminal 2 进入当前用户的home目录
  • 公司分配IP地址,求主机号码的最小值和最大值。

    问题描述如下 xff1a 姐 xff1a 注意减去2的实际意义 xff1a 网络地址后的第一个主机地址是本网段的网络地址192 168 0 0 xff0c 最 后一个主机地址是本网段的广播地址192 168 255 255
  • Erlang入门

    64 author sunxu 64 copyright C 2023 lt COMPANY gt 64 doc 64 end Created 16 2月 2023 22 16 module test author 34 sunxu 34

随机推荐

  • IPv4地址、IPv6地址和Mac地址的位数

    xff08 1 xff09 IPv4的地址是32位 xff0c 用点分十进制表示 xff0c 每八位划分 xff0c 也就是四个0 255的十进制数 xff0c 这是很常见的 xff08 2 xff09 IPv6的地址是128位 xff0c
  • 用C#连接数据库的方法

    连接SQL Server数据库的方法 xff1a 1 在程序中引用System Data SqlClient命名空间 2 编写连接字符串 xff0c 格式为 xff1a Data Source 61 服务器名称 Initial Catalo
  • gcc 不支持 //注释的解决

    这段时间用slickedit写代码 xff08 windows平台下 xff0c 装了Cygwin xff09 xff0c 编译器用的gcc xff0c 但是有个问题就是用 34 34 写注释的时候 xff0c 编译的时候有错 xff1a
  • python实现按照文件名称进行文件分类

    问题 xff1a 大量名称中带有数字的图片 视频 xff0c 根据名称中数字按照一定的等差数列来排序 xff0c 并且放入指定对应的文件夹中 span class token keyword import span os span clas
  • 【深度学习】Yolov3详解笔记及Pytorch代码

    Yolov3详解笔记及Pytorch代码 预测部分网络结构backbone xff1a Darknet 53output预测结果的解码 训练部分计算loss所需参数pred是什么target是什么loss的计算过程 预测部分 网络结构 DB
  • 【深度学习】各种卷积的理解笔记(2D,3D,1x1,可分离卷积)

    卷积 1 2D卷积单通道版本多通道版本 2 3D卷积3 1x1卷积作用应用 4 卷积算法5 可分离卷积空间可分离卷积深度可分离卷积 1 2D卷积 卷积的目的是从输入中提取有用的特征 在图像处理中 xff0c 卷积可以选择多种不同的滤波器 每
  • 【深度学习】(2+1)D模型框架结构笔记

    xff08 2 43 1 xff09 D 模型框架结构笔记 SpatioTemporalConv模块结构SpatioTemporalResBlock模块结构SpatioTemporalResLayer模块结构2Plus1DNet Spati
  • 【机器学习】LR回归(逻辑回归)和softmax回归

    LR回归 xff08 逻辑回归 xff09 和softmax回归 1 LR回归Logistic回归的函数形式Logistic回归的损失函数Logistic回归的梯度下降法Logistic回归防止过拟合Multinomial Logistic
  • 【深度学习】时间注意力模块与空间注意力模块

    注意力模块 通道 xff08 时间 xff09 注意力模块空间注意力模块 通道 xff08 时间 xff09 注意力模块 为了汇总空间特征 xff0c 作者采用了全局平均池化和最大池化两种方式来分别利用不同的信息 输入是一个 H W C 的
  • 【机器学习】机器学习与统计分布的关系

    这里写目录标题 1 常见的统计学分布1 xff09 离散分布a 伯努利分布b 二项分布c 泊松分布 2 xff09 连续分布a 正态分布 xff08 高斯分布 xff09 b 均匀分布 为什么我们喜欢用 sigmoid 这类 S 型非线性变
  • AKKA入门

    1 Guardian java package com example demo import akka actor typed javadsl ActorContext import akka actor typed ActorRef i
  • 【深度学习】深入理解Batch Normalization批标准化

    Batch Normalization 1 Internal Covariate Shift 问题2 BatchNorm的本质思想1 xff09 函数图像说明2 xff09 算法3 xff09 引入参数恢复表达能力4 xff09 公式 3
  • Autolabelimg自动标注工具

    目录 前言 一 工具原理和功能 1 原理 2 功能列表 二 实战 1 下载与安装 2 配置环境 3 开始使用 4 导入模型 5 选择标注类别 6 进行自动标注 三 总结 前言 在做机器视觉有监督方面 通常会面对很多数据集 xff0c 然后去
  • anchor base,anchor free和基于分割的图像检测

    目录 1 anchor base 2 anchor free 3 基于分割 reference 1 anchor base 什么是anchor based的目标检测方法呢 如果要让你定一个规则去一个图片上框一个物体 xff0c 你会怎么做呢
  • 我的2013:从北京到石家庄的软件开发历程

    记得是正月初八那天早上离开了老家 xff0c 坐上了开往北京的大巴车去北京准备新 的一年的奋斗 xff0c 车票120元了 涨价了20 xff0c 而且还没有地方报销去了 gt lt 因为年底的时候已经离职了 考虑到各公司部门人员 xff0
  • [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记 xff0c 涵盖线性回归 逻辑回归 Softmax回归 神经网络和SVM等等 xff0c 主要学习资料来自网上的免费课程和一些经典书籍 xff0c 免费课程例
  • TPMS胎压芯片选择:英飞凌SP370、英飞凌SP40、飞思卡尔FXTH87

    简介TPMS Tire Pressure Monitoring System xff08 TPMS xff09 xff0c 轮胎压力监测系统 xff0c TPMS的作用是在汽车行驶过程中对轮胎气压进行实时自动监测 xff0c 并对轮胎漏气和
  • 2014年计算机求职总结--准备篇

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 13000431 找工作是一个长期准备的过程 xff0c 突击是没什
  • Code::Blocks之设置字体

    设置 S gt 编辑器 D gt 常规设置 gt 编辑器设置 xff1b 在 34 字体 34 中选择 34 选择 34 按钮 xff0c 进行字体 字形 大小的选择 xff1b 确定
  • 嵌入式软件面试问题总结

    1 DCS 答 xff1a DCS一般指分散控制系统 分散控制系统是以微处理器为基础 xff0c 采用控制功能分散 显示操作集中 兼顾分而自治和综合协调的设计原则的新一代仪表控制系统 集散控制系统简称DCS 也可直译为 分散控制系统 或 分