嵌入式笔试面试刷题(day16)
文章目录
- 前言
- 一、PWM波形的占空比计算公式是什么?
- 二、ADC和DAC在嵌入式系统中的应用场景有哪些?
- 三、watchdog定时器的作用及其在系统中的使用是什么?
- 四、JTAG接口在嵌入式开发中的作用是什么?
- 五、实时操作系统(RTOS)的任务调度策略有哪些?
- 六、RTOS中任务同步的常用方法有哪些?
- 七、使用DMA的优势是什么?
- 八、优先级反转问题及其解决方法是什么?
- 总结
前言
本篇文章我将继续带大家开启嵌入式笔试和面试刷题,希望大家可以好好总结学过的内容和知识。
一、PWM波形的占空比计算公式是什么?
PWM(脉冲宽度调制)波形的占空比(Duty Cycle)是指高电平信号在一个周期内的持续时间与整个周期时间的比例。占空比通常用百分比表示。
计算PWM波形的占空比的公式为:
占空比 (%) = 高电平的时间 / 整个周期的时间 * 100%
二、ADC和DAC在嵌入式系统中的应用场景有哪些?
ADC(模数转换器)和DAC(数模转换器)在嵌入式系统中有许多应用场景,它们分别用于将模拟信号转换为数字信号(ADC)和将数字信号转换为模拟信号(DAC)。以下是它们在嵌入式系统中的一些常见应用场景:
应用场景 | 描述 |
---|---|
传感器接口 | ADC常用于读取传感器输出的模拟信号,如温度、光线、声音等传感器。 |
数据采集 | ADC用于将模拟信号转换为数字信号,以便微处理器或微控制器进行处理、存储和分析。 |
控制系统 | DAC用于将数字控制信号转换为模拟控制信号,例如控制电机速度、输出电压或电流等。 |
音频处理 | DAC用于将数字音频数据转换为模拟音频信号以驱动扬声器或耳机,ADC用于将模拟音频信号转换为数字音频数据以进行处理和分析。 |
通信系统 | 在数字通信系统中,ADC用于将模拟输入信号转换为数字形式进行编码和传输,而DAC用于接收端将数字信号解码为模拟信号。 |
自动化控制 | ADC和DAC在自动化控制系统中用于采集传感器数据并生成控制信号,例如工业控制、机器人控制等。 |
音乐和音频设备 | DAC用于数字音乐播放器、音频接口、合成器等设备中将数字音频转换为模拟音频信号,ADC用于将模拟音频信号转换为数字音频信号以进行处理或录制。 |
医疗设备 | 在医疗仪器中,ADC用于读取生物传感器、体温、心电图等模拟数据,DAC用于控制治疗设备、药品输送等。 |
电源管理 | ADC用于监测电源电压、电流和温度等参数,以便系统实时监控和调节,而DAC用于调节电源输出、实现电源调整和管理。 |
模拟信号处理 | ADC和DAC用于模拟信号的采集、处理、调节和生成,例如音频处理、图像处理、信号调制等。 |
这些只是一些常见的应用场景,实际上ADC和DAC在嵌入式系统中的应用非常广泛,几乎涵盖了所有需要进行模拟信号处理或数字信号处理的领域。 |
三、watchdog定时器的作用及其在系统中的使用是什么?
看门狗定时器(Watchdog Timer)是嵌入式系统中的一种特殊类型的定时器,其作用是监视系统的运行状态,并在系统出现故障或停滞时采取预先定义的应对措施。
在系统中,看门狗定时器通常被配置为一个定时器,在系统的正常运行期间会周期性地被重置。如果系统正常运行,看门狗定时器会在每个设定的时间间隔内被重置。但是,如果系统出现故障、死锁或停滞,导致看门狗定时器未能被及时重置,那么看门狗定时器就会超时,并触发事先定义的操作,通常是系统复位(reset)或采取其他预定的紧急处理措施。
使用看门狗定时器可以提高嵌入式系统的可靠性和稳定性,确保系统在出现异常情况时能够自动重启或采取其他适当的应对措施,从而防止系统陷入无响应状态或因异常情况而导致的数据丢失或损坏。
在系统中使用看门狗定时器时,一般的步骤包括:
1.初始化:配置看门狗定时器的定时周期和操作模式。
2.定期重置:在系统的正常运行代码中,定期重置看门狗定时器,确保其不会超时。
3.监视系统状态:在程序的关键部分、循环或中断服务程序中定期重置看门狗定时器,以确保系统在运行期间不会超时。
4.异常处理:当看门狗定时器超时时,执行预定义的应对措施,例如系统复位或其他故障处理机制。
四、JTAG接口在嵌入式开发中的作用是什么?
JTAG(联合测试行动组)接口在嵌入式开发中扮演着多种重要角色,其主要作用包括:
1.调试和验证:JTAG接口允许开发人员连接调试器或仿真器到目标嵌入式系统上,以便调试和验证硬件和软件设计。通过JTAG接口,开发人员可以读取和写入目标系统的内部状态、寄存器和内存内容,以诊断问题、跟踪代码执行和验证系统行为。
2.烧录和下载:JTAG接口可用于将编译好的程序下载到目标嵌入式系统的非易失性存储器中,如闪存、EEPROM等。这使得在嵌入式系统中加载固件、固件升级或修改程序变得更加方便。
3.生产测试:JTAG接口可用于生产测试,以验证和测试嵌入式系统的硬件和软件功能。通过JTAG接口,可以执行自动化的测试脚本,检查目标系统的性能、功能和一致性,并诊断生产中的问题。
4.硬件调试:JTAG接口可用于硬件调试,包括验证电路连接、检查电路板布局、诊断硬件故障等。通过连接JTAG接口,可以访问和控制目标系统的各种硬件组件,以便调试硬件设计和解决硬件问题。
5.固件安全性:JTAG接口的物理安全性是系统安全性的一部分。通过在产品生产环节禁用JTAG接口或采取其他安全措施,可以防止未经授权的访问者通过JTAG接口对嵌入式系统进行未经授权的访问或修改。
五、实时操作系统(RTOS)的任务调度策略有哪些?
实时操作系统(RTOS)的任务调度策略可以分为以下几种:
时间片轮转调度(Round-Robin Scheduling):
时间片轮转调度是一种基于时间片的调度策略,其中每个任务被分配一个固定大小的时间片(时间量),在这个时间片结束时,系统将任务挂起并将CPU分配给下一个任务。被挂起的任务会被放置到就绪队列的末尾,等待下一次轮到它执行。
时间片轮转调度适用于多个任务优先级相近且轮流执行的场景,能够保证公平性和响应性。
抢占式调度(Preemptive Scheduling):
抢占式调度允许更高优先级的任务在任何时候抢占CPU资源,以执行紧急任务。当一个新任务到达或一个更高优先级的任务变为就绪状态时,RTOS会立即中断当前任务的执行,并将CPU分配给新的任务。
抢占式调度可以确保高优先级任务及时响应,适用于需要实时性能和响应性的系统。
协作式调度(Cooperative Scheduling):
协作式调度依赖于任务主动让出CPU资源的行为。任务只有在完成自己的工作并主动释放CPU资源时,RTOS才会调度下一个任务执行。
协作式调度适用于相对简单、不需要严格的实时性能的系统,因为它依赖于任务的自律性,可能导致低优先级任务长时间占用CPU而影响系统的响应性。
这些调度策略可以根据系统的需求进行灵活选择和配置。时间片轮转调度适用于多任务环境中的任务公平性和响应性,抢占式调度适用于需要实时性能和高优先级任务响应的系统,而协作式调度适用于简单任务和资源有限的系统。
六、RTOS中任务同步的常用方法有哪些?
1.队列(Queue):
队列是一种常用的任务间通信机制,允许一个任务向另一个任务发送消息或数据,并且支持先进先出(FIFO)的消息传递方式。
发送任务将消息或数据放入队列,接收任务则从队列中取出消息或数据。队列可以用于任务间的数据传输和同步。
2.信号量(Semaphore):
信号量是一种用于任务同步和互斥访问共享资源的机制。它可以控制对资源的访问,防止多个任务同时访问某个共享资源。
信号量通常分为二进制信号量(只能取0和1)和计数信号量(可以取多个值)。二进制信号量通常用于互斥访问共享资源,而计数信号量用于限制资源的访问数量。
3.互斥量(Mutex):
互斥量是一种特殊的信号量,用于保护临界区的同步机制。它确保在任意时刻只有一个任务可以访问临界资源,防止多个任务同时执行临界区代码。
4.事件组(Event Groups):
事件组是一种用于任务间通信和同步的机制,允许任务等待多个事件的任意组合。
每个事件组包含多个事件位,任务可以等待一个或多个事件位的设置或清除,以触发相应的操作。
5.任务通知(Task Notification):
任务通知是一种轻量级的任务同步机制,用于在任务间发送简单的信号和事件。
任务可以发送通知给其他任务,通知可以包含事件标志、状态信息等,接收任务可以根据通知的内容执行相应的操作。
七、使用DMA的优势是什么?
使用直接内存访问(DMA)的优势包括:
1.降低CPU负载:DMA允许外设和内存之间的直接数据传输,而无需CPU的直接干预。这意味着CPU可以将更多的时间用于执行其他任务,从而提高系统的效率和性能。
2.提高数据传输速率:DMA可以在不占用CPU的情况下执行数据传输操作,因此可以实现更高的数据传输速率。这对于需要大量数据传输的应用程序(如高速数据采集、音视频处理等)尤为重要。
3.减少数据传输延迟:由于DMA直接管理数据传输,而无需CPU干预,因此可以减少数据传输的延迟。这对于对实时性要求较高的应用程序(如音频处理、图像处理等)尤为重要。
4.减少系统总功耗:由于DMA可以在不占用CPU的情况下执行数据传输,因此可以降低系统的总功耗。这对于功耗敏感的嵌入式系统和移动设备尤为重要。
5.简化软件设计:使用DMA可以将数据传输的管理和控制从CPU中分离出来,从而简化软件设计和开发流程。这使得软件开发人员可以更专注于应用程序的逻辑,而无需过多考虑数据传输的细节。
八、优先级反转问题及其解决方法是什么?
优先级反转问题(Priority Inversion)是指在一个多任务系统中,一个高优先级任务需要等待一个低优先级任务释放某个资源,但中等优先级任务不断抢占CPU,使得低优先级任务无法运行并释放资源,从而导致高优先级任务被“反转”为低优先级。这种情况会导致高优先级任务的执行被延迟,从而影响系统的实时性和性能。
具体示例
假设有三个任务A、B和C,优先级分别为高、中、低。任务A需要访问某个资源,而任务C当前持有该资源。当任务A和任务C在运行时,任务B突然开始运行并且由于其优先级高于任务C而抢占了CPU。任务A只能等待任务C释放资源,而任务C由于被任务B抢占了CPU,无法继续执行并释放资源。最终,任务A的优先级被“反转”为低于任务B,直到任务B完成运行为止。
解决方法
优先级继承(Priority Inheritance):
当低优先级任务持有资源并且高优先级任务正在等待该资源时,低优先级任务会暂时继承高优先级任务的优先级。这样,中等优先级任务就无法抢占CPU,确保低优先级任务能够尽快完成并释放资源。
优点:简单且有效,能够防止大部分优先级反转问题。
缺点:在多级优先级反转情况下,继承链可能变得复杂。
总结
本篇文章就总结到这里了,大家有什么疑问都有提出来。
相关文章:
嵌入式笔试面试刷题(day16)
文章目录 前言一、PWM波形的占空比计算公式是什么?二、ADC和DAC在嵌入式系统中的应用场景有哪些?三、watchdog定时器的作用及其在系统中的使用是什么?四、JTAG接口在嵌入式开发中的作用是什么?五、实时操作系统(RTOS)的任务调度策…...

【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
目录 一、 动态SQL1.1 \<if>标签1.2 \<trim>标签1.3 \<where>标签1.4 \<set>标签1.5 \<foreach>标签1.6 \<include>标签 二、 #{}与${}的区别2.1 #{}是预编译sql,${}是即时sql2.2 SQL注入2.3 #{}性能高于${}2.4 ${}用于排序功能…...

[Zer0pts2020]easy strcmp 分析与加法
查壳 Ubuntu上的64位程序 第一步应该尝试运行一下 啥也不是 (这里我改了程序,原来应该是a1>1) 但是我动调发现a1值是1 我就改了判断 但是还是没什么用 也找不到a2的引用 找一下有没有什么improt调用 发现还是啥也不是 思路这里断了 刚好这个程序几个代码而已 函数看…...
力扣7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输…...
Mac/Linux getline 无法读取文件内容(读取内容无法显示)
如下面代码 #include <iostream> #include <fstream>using namespace std;int main() {string file_name "1.txt";std::ifstream file(file_name);if (file.is_open()) {std::string line;while (std::getline(file, line)) {char c line.back();cout…...
NBM 算法【python,算法,机器学习】
朴素贝叶斯法(Naive Bayes model)是基于贝叶斯定理与特征条件独立假设的分类方法。 贝叶斯定理 P ( A ∣ B ) P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B)\frac{P(B|A) * P(A)}{P(B)} P(A∣B)P(B)P(B∣A)∗P(A) 其中A表示分类,B表示属性&…...
spark3.0.1版本查询Hbase数据库例子
需求背景 现有需求,需要采用spark查询hbase数据库的数据同步到中间分析库,记录spark集成hbase的简单例子代码 import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.{ConnectionFactory, Scan} import org.apach…...

android高效读图方式——Hardwarebuffer读图
安卓上有许许多多使用OpenGL来渲染的原因,比方说做特效/动画/硬解/人脸识别等等。渲染完成后如何从gpu中把数据快速读取出来也是高效图像处理中的重要的一环。 相对于glReadPixel的同步读取方式,安卓GLES3.0提供了更高效快速的Hardwarebuffer读图方式&a…...
悉数六大设计原则
悉数六大设计原则 目录 悉数六大设计原则前言☕谁发明了设计模式设计原则设计原则与设计模式的关系 单一职责什么是单一职责不遵循单一职责原则的设计遵循单一职责原则的设计单一职责的优点示例代码: 里氏替换原则什么是里氏替换原则示例代码:违反里氏替…...
hdfs复习
一.hadoop概述 1.4高(优势) 1).高可靠性:hadoop底层多个数据副本,即使某个计算节点存储出现故障,不会导致数据丢失。 2).高扩展性:可以动态增加服务器节点。 3).高效…...

css-Ant-Menu 导航菜单更改为左侧列表行选中
1.Ant-Menu导航菜单 导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。一般分为顶部导航和侧边导航,顶部导航提供全局性的类目和功能,侧边导航提供多级结构来收纳和排列网站架构。 2.具体代码 html <!-- 左侧切换 --><…...

02-CSS3基本样式
目录 1. CSS3简介 1.1 CSS3的兼容情况 1.2 优雅降级和渐进增强的开发思想 2. 新增选择器 2.1 选择相邻兄弟 2.2 匹配选择器 2.3 属性选择器(重点) 2.4 结构性伪类选择器(重点) 2.4.1 整体结构类型 2.4.2 标签结构类型 2.4.3 指定子元素的序号&…...

USART串口外设
USART介绍 USART:另外我们经常还会遇到串口,叫UART,少了个S,就是通用异步收发器,一般我们串口很少使用这个同步功能,所以USART和UART使用起来,也没有什么区别。 其实这个STM32的USART同步模式&a…...

大模型应用之基于Langchain的测试用例生成
一 用例生成实践效果 在组内的日常工作安排中,持续优化测试技术、提高测试效率始终是重点任务。近期,我们在探索实践使用大模型生成测试用例,期望能够借助其强大的自然语言处理能力,自动化地生成更全面和高质量的测试用例。 当前…...

C++之map
1、标准库的map类型 2、插入数据 #include <map> #include <string> #include <iostream>using namespace std;int main() {map<string, int> mapTest;// 插入到map容器内部的元素是默认按照key从小到大来排序// key类型一定要重载小于号<运算符map…...
【量算分析工具-方位角】GeoServer改造Springboot番外系列六
【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…...

【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索
文章目录 引言机器学习与大模型的基本概念机器学习概述监督学习无监督学习强化学习 大模型概述GPT-3BERTResNetTransformer 机器学习与大模型的融合应用自然语言处理文本生成文本分类机器翻译 图像识别自动驾驶医学影像分析 语音识别智能助手语音转文字 大模型性能优化的新探索…...

上传图片并显示#Vue3#后端接口数据
上传图片并显示#Vue3#后端接口数据 效果: 上传并显示图片 代码: <!-- 上传图片并显示 --> <template><!-- 上传图片start --><div><el-form><el-form-item><el-uploadmultipleclass"avatar-uploader&quo…...

音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析
H264简介-也叫做 AVC H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。 原始数据YUV,RGB为什么要压缩-知道就行 在⾳视频传输过程中,视频⽂件的传输…...

Qt学习记录(15)数据库
目录 前言: 数据库连接 项目文件加上sql 打印查看Qt支持哪些数据库驱动 QMYSQL [static] QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName QLatin1String(defaultConnection)) 数据库插入 头文件.h 源…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...

leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...
深入理解 React 样式方案
React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...