分享7道最近常问的嵌入式面试题

李肖遥 2024-03-04 22:13
    关注、星标公众号,直达精彩内容
来源 | 网络

链接:https://www.cnblogs

1.关键字static的作用是什么?为什么static变量只初始化一次?

1)修饰局部变量:使得变量变成静态变量,存储在静态区,存储在静态区的数据周期和程序相同,

在main函数开始前初始化,在退出程序时销毁(无论是局部静态还是全局静态)。

2)修饰全局变量:全局变量本身就是存储在静态区,因此static并不能改变其存储位置。但是,static

限制了其链接属性,被static修饰的全局变量只能被该包含该定义的文件访问(即改变了作用域)

3)修饰函数:是的该函数只能在包含该函数定义的的文件中被调用,对于静态函数,申明和定义需要放到同一个文件夹中。

4)修饰成员变量:使用static修饰类的数据成员使其成为类的全局变量,会被类的所有对象共享,包括派生类的对象,所有的对象都只维持同一个实例。

因此,static成员必须在类外进行初始化(初始化格式:int base::var=10;),而不能在构造函数内进行初始化,不过也可以使用const修饰的static数据成员在类内初始化。

5)修饰成员函数:使用static修饰成员函数,使这个类只存在这一份函数,所有对象共享该函数,不含this指针,因而只能访问类的static成员变量。

静态成员是可以独立访问的,也就是说,无需创建任何对象实例就可以访问。例如可以分装某些算法,比如数学函数,如sin,cos等,这些函数本就没必要属于某一个对象,所以从类上调用更好。

注意:不可以用const static修饰成员函数。

对于所有的对象(不仅仅是静态对象),初始化都只有一次,而由于静态变量具有“记忆”功能,初始化后,一直都没有被销毁,都会保存在内存区域中,所以不会再次初始化。

存放在静态区的变量的生命周期一般比较长,一般与整个源程序“同生死、共存亡”,所以它只需初始化一次。

2.关键字voliate作用和含义/使用场景?

1)volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

2)如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

3)一般用处:

1)并行设备的硬件寄存器(如:状态寄存器)

存储器映射的硬件寄存器通常也要加 voliate,因为每次对它的读写都可能有不同意义。

2)中断服务程序中修改的供其它程序检测的变量,需要加volatile

当变量在触发某中断程序中修改,而编译器判断主函数里面没有修改该变量,因此可能只执行一次从内存到某寄存器的读操作,而后每次只会从该寄存器中读取变量副本,使得中断程序的操作被短路。

3)多任务环境下各任务间共享的标志,应该加volatile

在本次线程内, 当读取一个变量时,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;

当内存变量或寄存器变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致 。

4)一个参数既可以是const还可以是volatile吗?

可以的,例如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。

5)volatile的本意是“易变的” 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化,但有可能会读脏数据。

当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。

3.sizeof和strlen的区别,使用场景?

sizeof() 和 strlen() 的主要区别在于:

1)sizeof() 是一个运算符,而 strlen() 是一个函数

2)sizeof() 计算的是变量或类型所占用的内存字节数,而 strlen() 计算的是字符串中字符的个数。

3)sizeof() 可以用于任何类型的数据,而 strlen() 只能用于以空字符 '\0' 结尾的字符串。

4)sizeof() 计算字符串的长度,包含末尾的 '\0',strlen() 计算字符串的长度,不包含字符串末尾的 '\0'。

4.两个float怎样比较相同,为什么这样比较?什么原因导致的?

1)float小数点前后加起来有效数字只有6位。当给定的float有效数在6位以内转换为字符不会丢失精度,当有效位数大于6位就会存在精度丢失。

2)double小数前后加起来的有效数字只有16位,当给定的double有效数在16位以内转换为字符串不会丢失精度,当有效位数大于16位就会存在精度丢失。

3)我们在判断浮点数相等时,推荐用范围来确定,若x在某一范围内,我们就认为相等,至于范围怎么定义,要看实际情况而已了,float,和double 各有不同。

比如要判断浮点数floatA和B是否相等,我们先令float x = A –B ;

并设constfloat EPSINON = 0.00001;

if ((x >= - EPSINON)&& (x <= EPSINON); //或者if(abs(x) <= EPSINON)

cout<<”A 与B相等<

else

cout<<”不相等”<

根据上面分析建议在系统开发过程中设计到字符转换建议采用double 类型,精度设置为%.8lf即可,在比较浮点数十建议EPSINON=0.00000001

5.stm32使用浮点会对中断效率产生什么影响?

1)答:在中断或某个线程中进行浮点数操作,会导致另一个 TCP 通讯线程数据出错。

TCP 协议栈中大量使用了 memcpy,而 memcpy 又使用了 FPU 的寄存器,极有可能在 TCP 处理数据的过程中,另一个中断来了,进行了浮点运算并修改了 FPU 的寄存器,以致 TCP 数据出错。

2)对于32单片机在中断中使用浮点运算会使内存开销太大,如果有FPU硬件加速运算可以缓解CPU软件运算的压力

3)代码中关于浮点的计算数值,一定要在浮点数后面加个f。比如10.1f,这是单精度浮点;而不要直接用10.1,这是双精度浮点。因为双精度浮点计算耗时很长,差10倍左右

6.讲讲IIC协议?stm32上的IIC速度?

1)两线——串行数据(SDA) 和串行时钟(SCL)。

2)每个器件都有一个唯一的地址识别,而且都可以作为一个发送器或接收器

3)多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。I2C通过总线仲裁,以决定哪台主机控制总线

4)数据位的有效性规定:SDA 线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。

5)起始和停止条件:其中一种情况是在SCL 线是高电平时,SDA 线从高电平向低电平切换表示起始条件。当SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件。

6)起始信号和终止信号都是由主机发送的。在起始信号产生之后,总线就处于被占用的状态,在终止信号产生之后,总线就处于空闲状态。

7)每当发送器传输完一个字节的数据之后,发送端会等待一定的时间,等接收方的应答信号。接收端通过拉低SDA数据线,给发送端发送一个应答信号,

以提醒发送端我这边已经接受完成,数据可以继续传输,接下来,发送端就可以继续发送数据了。

8)数据传送格式:主机发送给从机,每一个字节必须保证是8位,先传送最高位,每一个字节后面需要一个应答位,即一帧数据有9位。

9)软件模拟IIC时,从机不对主机寻址信号应答时,它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。

10)每次数据传送总是由主机产生的终止信号来结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。

11)硬件和软件IIC的区别是:

硬件的IIC时序由IIC外设自己控制,不需要CPU去干预,CPU只需要把对应的数据写到寄存器即可。

软件IIC,的时序需要CPU自己控制,占用CPU的资源。

如果需要高速通信,建议选择硬件IIC;如果需要多路通信或者灵活的时序控制,建议选择软件IIC。

硬件IIC移植起来比较麻烦,软件IIC移植起来就很简单。

7.IIC从机地址是如何配置的?主机地址是如何配置的?

1)从机地址的确定:第0位是读写位。(如对于24C02这块存储器,它若作为从机,那么它的地址中7~4位是固定的,更改不了,

第3~1位是可以更改的,每一位根据硬件的管教连接来确定,连接高电平那就是1,低电平就是0)

2)在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。


版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“加群”按规则加入技术交流群。


点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

李肖遥 公众号“技术让梦想更伟大”,作者:李肖遥,专注嵌入式,只推荐适合你的博文,干货,技术心得,与君共勉。
评论 (0)
  •        深夜的公园里,当路灯熄灭后,传统监控摄像头只能拍出模糊的黑白画面,仿佛老式胶片电影里的场景。而搭载为旌瑶光ISP的摄像头,却能像猫科动物一样,在几乎全黑的环境中捕捉到行人衣服的颜色、树叶的纹理,甚至快速跑动的宠物狗毛发细节。这种从“黑白默片”到“全彩4K电影”的跨越,背后是为旌瑶光ISP对传统红外补光技术的颠覆性创新。一、传统方案之困:被红外光“绑架”的夜视世界        传统安防摄像头依赖红外
    中科领创 2025-03-07 16:50 261浏览
  • 近年来,越来越多的企业在5S管理的基础上,开始追求6S、7S甚至8S管理,仿佛S越多,管理就越先进,企业就越优秀。于是,6S增加了“安全”,7S又加上了“节约”,8S甚至引入了“学习”……看似更加全面,实则很多企业只是机械地增加S,却忽略了管理的核心目标:提升效率、降低浪费、优化工作环境。优思学院认为,5S本身已经是一套成熟的精益管理工具,它的核心理念不仅简单高效,而且易于实施和推广。如果企业只是为了赶时髦,盲目增加S,而没有真正理解5S的本质,那么这些额外的“S”很可能会变成管理上的负担,而不
    优思学院 2025-03-07 12:43 160浏览
  • 深圳触觉智能RK3506开发板现已上市,开启预售!搭载瑞芯微RK3506B/J超低功耗工业处理器(1.5GHz三核A7+M0,主频1.5GHz);支持1280×1280显示、双百兆网口、星闪无线三模,板载高达2路CAN FD与5路串口。RK3506适用场景简介工业控制‌:RK3506适用于工业控制、工业通信、人机交互等应用场景。其多核异构架构(3xCortex-A7+Cortex-M0)和外设接口丰富,支持Buildroot、Yocto系统,适合轻量级HMI应用‌。‌工业通信‌:RK3506均支
    Industio_触觉智能 2025-03-07 10:04 112浏览
  • 深圳触觉智能SOM3506核心板现已上市,搭载瑞芯微RK3506B/J超低功耗处理器(1.5GHz三核A7+M0),低功耗满载仅0.7W,支持40℃~85℃工作环境,即日起宽温级59元/工业级68元,特价开售!芯片介绍RK3506是瑞芯微Rockchip在2024年第四季度全新推出的Arm嵌入式芯片平台,三核Cortex-A7+单核Cortex-M0多核异构设计,CPU频率达1.5Ghz, M0 MCU为200Mhz。RK3506适用场景简介工业控制‌:RK3506适用于工业控制、工业通信、人机
    Industio_触觉智能 2025-03-07 10:03 131浏览
  • 概述随着工业4.0的深入推进,制造业对自动化和智能化的需求日益增长。传统生产线面临空间不足、效率低下、灵活性差等问题,尤其在现有工厂改造项目中,如何在有限空间内实现高效自动化成为一大挑战。此次项目的客户需要在现有工厂基础上进行改造,空间有限。为此,客户选择了SCARA型线性轴机器人作为执行设备。然而,SCARA机器人的高效运行离不开强大的控制系统支持。宏集凭借其先进的智能控制系统,为客户提供了高效、灵活的自动化解决方案,确保SCARA机器人在有限空间内发挥最大效能。一、客户需求在此次改造项目中,
    宏集科技 2025-03-06 11:27 180浏览
  • 一、系统概述MYD-LD25X搭载的Debian系统包含以太网、WIFI/BT、USB、RS485、RS232、CAN、AUDIO、HDMI显示和摄像头等功能,同时也集成了XFCE轻量化桌面、VNC远程操控、SWITCH网络交换和TSN时间敏感网络功能,为工业设备赋予“超强算力+实时响应+极简运维”的体验!类别名称描述源码TF-AArm Trusted Firmware 2.8OP-TEEOP-TEE 3.19BootloaderU-boot 2022.10KernelLinux Ke
    米尔电子嵌入式 2025-03-07 14:08 217浏览
  • Sub-GHz,即工作频段低于1GHz的无线通信技术,常见频段有315MHz、433MHz、868MHz与915MHz等。其可借助无线电波在自由空间传播的特性,把数据调制到射频载波上进行传输,达成物联网设备间的无线通信,是物联网设备实现高效、稳定、无缝交互的“通信基石”。典型射频信号(无线电波)收发电路简示在工业自动化、智慧城市、智慧农业与智能家居等物联网领域中,LoRa、Wi-SUN、Z-Wave、Sigfox等工业级通信协议大多运行在Sub-GHz频段。而正是通过Sub-GHz射频技术,传感
    华普微HOPERF 2025-03-07 11:39 138浏览
  • 在企业管理和职场环境中,权力是一个常被提及却又让人感到微妙的话题。有人觉得它充满吸引力,有人却对它避之不及。然而,不管你对权力的态度如何,理解它、掌握它,甚至善用它,都是职场成功的重要一环。今天,我们就来深入探讨权力的本质,特别是个人权力和社会权力的区别,以及如何在职场中逐步建立属于自己的影响力。权力的两种面貌:你掌控自己,还是掌控他人?说到权力,首先要区分它的两种类型。个人权力是你对自己生活的掌控感。比如,你能自由决定自己的职业方向,不用总是请示他人。这种权力让人感到踏实和满足,是我们在生活中
    优思学院 2025-03-07 15:56 167浏览
  • 文/Leon编辑/cc孙聪颖2025年全国两会进行时,作为“十四五”规划收官之年,本届两会释放出坚定目标、稳中求进、以进促稳等信号。其中,企业家们的建议备受关注,关系到民营经济在2025年的走向。作为国内科技制造业的“老兵”,全国人大代表、TCL集团创始人及董事长李东生在本届两会中提出三份代表建议,包括《关于优化中国科技制造业融资环境的建议》、《关于加强AI深度伪造欺诈管理的建议》和《关于降低灵活就业人员社会保险参保门槛的建议》,表现出对科技制造、AI发展和劳动者保障方面的关注。会后,李东生接受
    华尔街科技眼 2025-03-06 19:41 120浏览
  • 在六西格玛项目中,团队的选择往往决定了最终的成败。合适的团队成员不仅能推动项目顺利进行,更能确保最终成果符合预期。因此,组建六西格玛团队时,必须挑选最合适的人才,确保他们具备必要的能力和特质。团队主管的关键特质每个精益六西格玛项目都需要一位主管来带领团队。他们不仅需要具备领导力,还要能够分析数据、制定策略,并与管理层和团队成员高效沟通。团队主管的核心职责包括:领导团队行动:能够激励成员,确保团队朝着既定目标前进。数据分析能力:精通数据处理和分析,能基于数据做出决策。沟通协调:能够在管理层和团队之
    优思学院 2025-03-06 12:51 128浏览
  • ​CS6212是一款可分别用于USB Type-C主机/显示端口源应用的带重定时的有源开关。这设备符合USB 3.2标准版本1.0和USB Type-C标准上的VESA DisplayPort Alt模式 1.0版,支持通过GPIO或12C进行灵活的模式切换。此设备支持USB 3.2第2x1代 运行速度高达10Gbps,DisplayPort 1.4运行速度高达HBR3 8.1Gbps。CS6212管脚分布及功能定义:CS6212支持重定时器训练,并支持USB 3.2标准中定义的状态状态机(RT
    QQ1540182856 2025-03-07 10:09 138浏览
  • 服务器应用环境与客户需求PCIe 5.0高速接口技术的成熟驱动着生成式AI与高效能运算等相关应用蓬勃发展。在随着企业对服务器性能的要求日益严苛,服务器更新换代的周期也持续加快。在此背景下,白牌与DIY(Do It Yourself)服务器市场迎来了新的发展契机,但同时也面临着更趋复杂的技术挑战。传统上,白牌与DIY服务器以其高度客制化与成本效益优势受到市场青睐。然而,随着PCIe 5.0等高速技术的导入,服务器系统的复杂度大幅提升,对组装技术与组件兼容性也就提出更高的要求。举个简单的例子来说,P
    百佳泰测试实验室 2025-03-06 17:00 150浏览
  • 随着自动驾驶技术的迅猛发展,构建高保真、动态的仿真场景成为了行业的迫切需求。传统的三维重建方法在处理复杂场景时常常面临效率和精度的挑战。在此背景下,3D高斯点阵渲染(3DGS)技术应运而生,成为自动驾驶仿真场景重建的关键突破。一、3DGS技术概述与原理1、3DGS的技术概述3DGS是一种基于3D高斯分布的三维场景表示方法。通过将场景中的对象转化为多个3D高斯点,每个点包含位置、协方差矩阵和不透明度等信息,3DGS能够精确地表达复杂场景的几何形状和光照特性。与传统的神经辐射场(NeRF)方法相比,
    康谋 2025-03-06 13:17 246浏览
  • ASL6328芯片支持高达 6.0 Gbps 运行速率的交流和直流耦合输入T-MDS 信号,具备可编程均衡和抖动清理功能。ASL6328 是一款单端口 HDMI/DVI 电平转换 / 中继器,具有重新定时功能。它包含 TypeC双模式 DP 线缆适配器寄存器,可用于识别线缆适配器的性能。抖动清理 PLL(锁相环)能够消除输入抖动,并完全重置系统抖动容限,因此能更好地满足更高数据速率下 HDMI 抖动合规性要求。设备的运行和配置可通过引脚设置或 I2C 总线实现。自动断电和静噪功能提供了灵活的电
    QQ1540182856 2025-03-06 14:26 121浏览
  • 多人同时共享相同无线网络,以下场景是否是您熟悉的日常?姐姐:「妈~我在房间在线上课,影音一直断断续续的怎么上课啊!」奶奶:「媳妇啊~我在在线追剧,影片一直卡卡的,实在让人生气!」除此之外,同时间有老公在跟客户开在线会议,还有弟弟在玩在线游戏,而妈妈自己其实也在客厅追剧,同时间加总起来,共有五个人同时使用这个网络!我们不论是在家里、咖啡厅、餐厅、商场或是公司,都会面临到周遭充斥着非常多的无线路由器(AP),若同时间每位使用者透过手机、平板或是笔电连接到相同的一个网络,可想而知网络上的壅塞及相互干扰
    百佳泰测试实验室 2025-03-06 16:50 127浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦