嵌入式软件工程师面试题——嵌入式专题 (五十五)

本文主要是介绍嵌入式软件工程师面试题——嵌入式专题 (五十五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明:

  • 面试群,群号: 228447240
  • 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
  • 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
  • 博主与大家一起学习,一起刷题,共同进步;
  • 写文不易,麻烦给个三连!!!

1.什么是DDR

答案:

DDR 全称是 Double Data Rate SDRAM,也就是双倍速率 SDRAM,SDRAM 在一个 CLK 周期传输一次数据, DDR 在一个 CLK 周期传输两次数据,也就是在上升沿和下降沿各传输一次数据,这个概念叫做预取(prefetch),相当于 DDR 的预取为 2bit, DDR2 在 DDR 基础上进一步增加预取,增加到了 4bit,也就是在一个 CLK 周期传输4次数据,DDR3 在 DDR2 的基础上将预取提高到 8bit,也就是在一个 CLK 周期传输8次数据。

2.关于Cache,你了解多少

答案:

只读数据(代码段、程序里的const、字符串等)一般来说,这些数据应该放在Flash里可能有人会有疑问,放在flash里,会不会读取的速度很慢?读ROM的速度是比读RAM的数据要慢,但是不要忘了,现代CPU都有强大的cache,而且数据Dcache和指令Icache都是分开的,在系统运行中,cache的命中率可以高达80~90%,所以大部分时候CPU都可以在第一时间就拿到想要的指令和数据。

cache写操作有两种,写回和写直达

写回的优点为:

  • 处理器可以以cache而不是存储器接收的速度写单个的字
  • 同一块内的多次写只需要对存储器层次结构的较低层写一次
  • 当块被写回时,由于是写一整块,系统可以有效利用高传输带宽

写直达的优点为:

  • 缺失较简单,代价较小,因此不需要把整个块写回到较低的存储器层次中
  • 写直达比写回更易于实现,但是写直达cache仍需要一个写缓冲区

cache的映射技术,通常有三种:直接映射、关联映射、组关联映射

3.常见的CPU指令集

答案:

CISC(Complex Instruction Set Computer)复杂指令集

特点:指令系统的指令不等长,指令的数目非常多

RISC(Reduced Instruction Set Computing)是“精简指令集

特点:采用RISC指令集的微处理器处理能力强,并且采用超标量和超流水线结构,大大增强了并行处理能力

4.CPU的流水线工作原理

答案:

CPU执行一条指令时,也分为几个步骤,如

指令取指(InstrucTIon Fetch)-----> 指令译码(InstrucTIon Decode)-----> 指令执行(Execute)------- > 访存(Memory Access)-----> 写回(Write-Back)

重点:CPU并不会等一条指令完全执行完才执行下一条指令,而是像流水一样

5.嵌入式流水线工作有什么不同?

答案:

嵌入式CPU为了提高效率,采用超流水线结构,我们知道,CPU执行一条指令被分成5个步骤,每个步骤可能都需要1ns,但是有个长指令,被分成5个步骤时,指令执行这个步骤却需要2ns,那么整个时间就被限制了。

为了提高效率,我们可以把指令执行(Execute)这个步骤再拆分成两组(寄存器+组合逻辑),每组执行时间为1ns,这样我们的普通流水线成了六级流水线了,这就是超流水线。

6.uboot启动过程做了什么事

答案:

7.中断和异常

答案:

中断是指,停止当前的工作,转去执行另个任务,执行完成后发回继续执行。

异常是指,由指向内部的指令引起的错误。

 区别:中断外因引起异常CPU本身原因引起。

8.DMA和中断的区别

答案:

DMA不需要CPU参与,就可以进行数据的传输,大大提高数据传输时CPU的效率,而对于中断来说,必须要CPU的一个参与。

DMA的工作模式有两种,一种要求原地址和目标地址都必须是连续,另一种就没有这种要求。

9.中断函数的注意点

答案:

1.中断函数应该遵循快进快出,把比较消耗时间的任务放到中段下文处理,比如tasklet,工作队列

2.中断函数的返回值,应该使用内核定义的宏,而不是自定义

3.中断不能有阻塞,不能让中断进入睡眠,比如中不能有信号量

10.为什么要向内核传参

答案:

因为内核并不是对于所有的开发板都是完美适配的,内核对于开发板的环境是一无所知的,所以要想启动内核,就需要通过传参告诉内核当前的环境。

这篇关于嵌入式软件工程师面试题——嵌入式专题 (五十五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681153

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础