版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2024年嵌入式软件工程师笔试题(含答案)一、选择题(每题只有一个正确答案)1.以下关于C语言中static关键字的作用,描述错误的是()A.static修饰全局变量,会将变量的作用域限制在当前源文件内B.static修饰局部变量,会改变其生命周期,程序运行全程保留值C.static修饰函数,会改变函数的作用域,只能被当前源文件内的函数调用D.static修饰变量,会改变变量的存储位置,static修饰的局部变量存在栈区答案:D解析:static关键字的核心作用是控制变量和函数的作用域与存储位置,static修饰的局部变量会被分配到静态存储区,而非栈区,因此其生命周期伴随整个程序运行过程,仅初始化一次,调用后保留值;static修饰的全局变量和函数都会将作用域限制在当前源文件,避免不同源文件的同名符号冲突,因此D选项描述错误。2.在32位ARM架构下,默认对齐方式的以下结构体占用字节数是多少()structTest{chara;shortb;intc;chard;};A.8B.10C.12D.16答案:C解析:32位架构默认结构体对齐规则为:结构体整体大小为结构体中最大基本数据类型大小的整数倍,每个成员的偏移地址是该成员大小的整数倍。本题中最大基本类型为int,大小4字节。chara占1字节,偏移地址0;下一个成员short大小2字节,需要对齐到偏移2,因此填充1字节;shortb占2字节,总大小到偏移4;intc占4字节,偏移正好是4,总大小到偏移8;chard占1字节,总大小到偏移9,整个结构体需要对齐到4的整数倍,因此填充3字节,总大小为12字节。字节对齐的作用是加快CPU内存存取速度,大部分ARM架构不允许非对齐访问,因此编译器默认开启对齐。3.以下关于FreeRTOS中任务优先级的描述,正确的是()A.FreeRTOS默认数值越小优先级越高B.FreeRTOS中相同优先级的任务不能同时调度C.FreeRTOS中中断优先级高于任何任务优先级D.FreeRTOS中任务优先级最多支持32级答案:C解析:FreeRTOS是抢占式实时操作系统,核心调度规则是高优先级任务抢占低优先级任务,中断服务程序的优先级高于所有任务,因此中断触发后会抢占任何任务的CPU资源。A选项错误:FreeRTOS默认优先级数值越大,优先级越高;B选项错误:FreeRTOS开启时间片轮转配置后,相同优先级的任务可以按时间片轮流调度;D选项错误:FreeRTOS的最大优先级由配置项configMAX_PRIORITIES决定,最高可配置到1024级,并非固定32级。4.RISC-V架构指令编码的特点,以下描述正确的是()A.所有指令都是32位固定长度B.支持16位、32位、64位等变长指令编码C.RISC-V只有通用寄存器,没有控制状态寄存器D.RISC-V是CISC架构答案:B解析:RISC-V是开源精简指令集(RISC)架构,为了提升代码密度,支持变长指令编码,包括16位的压缩指令、32位标准指令、64位及以上的定制扩展指令,因此A错误,B正确,D错误。RISC-V设计有专门的控制状态寄存器(CSR),用于处理中断、异常、配置芯片功能,因此C错误。5.主机发起I2C通信起始信号的定义是()A.SCL高电平时,SDA从高电平拉低到低电平B.SCL高电平时,SDA从低电平拉高到高电平C.SDA高电平时,SCL从高电平拉低到低电平D.SDA低电平时,SCL从低电平拉高到高电平答案:A解析:I2C协议规定,起始信号为SCL保持高电平期间,SDA由高电平向低电平跳变,代表通信开始;停止信号为SCL保持高电平期间,SDA由低电平向高电平跳变,代表通信结束,因此A正确。6.以下哪个场景不需要给变量加volatile关键字()A.中断服务程序中修改的供其他程序检测的全局变量B.多任务环境下各任务共享的全局标志变量C.被const修饰的存放在Flash中的只读常量D.存储器映射的硬件寄存器答案:C解析:volatile关键字的作用是禁止编译器优化,要求编译器每次访问变量都从内存读取,不将变量缓存到寄存器中。A、B、D三个场景中,变量都会被当前执行流之外的逻辑修改,编译器无法感知到修改,如果优化会导致读取到错误的旧值,因此都需要加volatile。C选项中的只读常量不会被修改,不需要加volatile。7.以下关于进程和线程的描述,错误的是()A.进程拥有独立的地址空间,线程共享进程的地址空间B.进程切换开销大于线程切换开销C.一个进程崩溃不影响其他进程,一个线程崩溃会导致整个进程崩溃D.线程之间通信必须通过操作系统提供的进程间通信机制答案:D解析:线程是进程内的执行单元,共享进程的地址空间,因此线程之间可以直接通过全局变量、静态变量等共享内存方式通信,不需要必须使用进程间通信(IPC)机制;而进程之间地址空间隔离,必须通过IPC机制通信,因此D描述错误。其余选项描述均正确。8.32位数据0x12345678存储在地址0x00000000开始的四个字节,以下小端模式的存储方式正确的是()A.地址0x00存0x12,0x01存0x34,0x02存0x56,0x03存0x78B.地址0x00存0x78,0x01存0x56,0x02存0x34,0x03存0x12C.地址0x00存0x12,0x01存0x78,0x02存0x34,0x03存0x56D.地址0x00存0x56,0x01存0x78,0x02存0x12,0x03存0x34答案:B解析:小端模式的规则是低地址存储数据的低字节,高地址存储数据的高字节;大端模式相反。0x12345678中,最低字节是0x78,最高字节是0x12,因此低地址0x00存储0x78,依次升高地址存储0x56、0x34、0x12,因此B正确。X86、ARM默认都是小端模式。9.以下关于硬实时系统和软实时系统的描述,正确的是()A.硬实时系统要求任务必须在截止时间前完成,否则会产生严重后果B.软实时系统不要求任务必须在截止时间前完成,允许偶尔超过截止时间,不会造成严重错误C.工业控制、汽车动力控制系统属于硬实时系统D.视频播放、手机桌面刷新属于软实时系统E.以上都对答案:E解析:硬实时系统对任务截止时间要求极其严格,超时会导致系统故障甚至安全事故,因此工业控制、汽车动力控制、航空航天控制等领域都属于硬实时系统;软实时系统允许偶尔超过截止时间,只会降低用户体验,不会导致系统失败,视频播放、普通消费电子的UI刷新都属于软实时系统,四个描述均正确。10.以下哪个不属于嵌入式操作系统()A.FreeRTOSB.U-BootC.RT-ThreadD.EmbeddedLinux答案:B解析:U-Boot是嵌入式系统常用的开源Bootloader,作用是上电初始化硬件、引导操作系统启动,本身不是操作系统,因此B正确。二、填空题1.嵌入式系统中,存储器分为易失性存储器和非易失性存储器,常见的易失性存储器有____、____,非易失性存储器有____、____、____。答案:SRAM、DRAM;Flash、ROM、EEPROM(答对任意对应常见类型即可)2.C语言中,一个函数不返回任何值,应该用____声明函数返回类型。答案:void3.FreeRTOS中,任务的三种基本状态是____、____、____。答案:就绪态、运行态、阻塞态4.CAN总线通信中,CAN帧分为____帧和____帧,其中标准帧ID长度是____位,扩展帧ID长度是____位。答案:标准、扩展;11、295.ARM流水线架构中,解决流水线数据冲突的常见方法有____、____。答案:数据转发、插入流水线气泡6.虚拟内存的作用主要有____、____、____。答案:扩展可用地址空间、实现进程地址空间隔离、提高内存管理灵活性7.嵌入式Linux开发中,生成交叉编译工具链的常用开源构建工具是____,ARM架构嵌入式常用交叉编译工具链的前缀是____。答案:buildroot;arm-linux-gnueabihf-(或arm-none-eabi-,均正确)三、简答题1.简述中断和轮询的区别,各自适用场景。答案:区别:(1)响应机制不同:轮询是CPU主动周期性查询外设状态,CPU全程占用;中断是外设就绪后主动向CPU发送中断请求,CPU空闲时可处理其他任务。(2)实时性不同:中断的响应延迟远低于轮询,实时性更高,轮询的响应延迟取决于查询周期,最长延迟为一个查询周期。(3)CPU利用率不同:轮询在外设未就绪时也会占用CPU资源,CPU利用率低;中断仅在外设就绪时占用CPU,大部分时间CPU可处理其他任务,利用率高。(4)实现复杂度不同:轮询实现简单,不需要额外的中断硬件资源;中断实现复杂度高,需要中断控制器、中断向量表、优先级配置等软硬件支持。适用场景:轮询适合简单的、事件频率稳定、延迟要求极低的场景,比如按键扫描、简单传感器单次读取;中断适合事件触发不确定、对实时性要求高的场景,比如串口数据接收、外部按键触发、异常事件处理。2.简述什么是野指针,产生野指针的原因有哪些,如何避免野指针?答案:野指针是指向非法内存地址的指针,和NULL指针不同,NULL指针不指向任何有效地址,不会直接访问,野指针指向随机的、未授权访问的内存地址,访问野指针会导致程序崩溃、数据损坏等严重问题。产生原因:(1)指针定义后未初始化,局部栈变量定义后默认值为随机值,成为野指针;(2)调用free释放动态内存后,未将指针置为NULL,指针仍然保留原内存地址,释放后的内存被系统回收,成为野指针;(3)函数返回局部变量的地址,函数退出后局部变量占用的栈空间被回收,地址失效,指向该地址的指针成为野指针;(4)指针操作越界,比如数组访问超出数组范围,指针指向数组外的非法区域,成为野指针。避免方法:(1)指针定义后立即初始化,没有明确指向时初始化为NULL;(2)释放动态内存后立即将指针置为NULL,避免悬空野指针;(3)不要返回局部变量的地址,不要返回栈空间的指针;(4)指针操作数组时增加边界检查,避免越界访问;(5)访问指针前先判断指针是否为NULL,提前拦截非法访问。3.简述对可重入函数的理解,如何编写可重入函数?答案:可重入函数指可以被多个执行流(多任务、中断)同时调用,调用打断后再次执行仍能得到正确结果的函数。不可重入函数通常因为使用了未保护的全局变量、静态变量等共享资源,多次调用会修改共享资源,导致结果错误,中断服务程序中调用的函数必须是可重入函数。编写可重入函数的方法:(1)尽量不要在函数内部使用全局变量和静态变量,如果必须使用共享资源,需要通过关中断、互斥锁等方式对共享资源进行互斥保护,同一时间只允许一个执行流访问;(2)不要返回静态变量或全局变量的地址,函数输出尽量通过参数或调用者分配的空间带出;(3)函数内部不调用不可重入函数,仅调用其他可重入函数;(4)函数仅操作自身栈上的局部变量,不依赖外部共享资源。4.简述SPI和I2C的区别,各自优缺点和适用场景。答案:(1)硬件连接:I2C仅需要SCL(时钟)、SDA(数据)两根线,支持多主多从,通过设备地址区分不同从设备,挂载多个设备不需要额外IO,硬件连接简单;SPI一般为一主多从,每个从设备需要单独的CS(片选)IO线,挂载n个设备需要n+3个IO,硬件连接更复杂。(2)通信速率:SPI没有速率上限,常见的SPI可以达到几十Mbps,适合高速传输;I2C最高速率一般为3.4Mbps,速率远低于SPI。(3)传输方式:SPI支持全双工同时收发,I2C为半双工,同一时间只能发或只能收。(4)可靠性:I2C设计有应答机制,接收方可以发送应答信号通知发送方数据接收正确,支持错误检测,可靠性更高;SPI没有应答机制,无法检测传输错误。优缺点:I2C优点是硬件连接简单、扩展性好,缺点是速率低;SPI优点是速率高、全双工传输,缺点是硬件开销大、扩展性差。适用场景:I2C适合低速、多设备、低功耗的场景,比如温度传感器、EEPROM、IO扩展芯片;SPI适合高速大数据量传输场景,比如NorFlash、液晶显示屏、高速ADC等。5.简述嵌入式Linux中mmap内存映射的原理和优点。答案:原理:mmap是Linux提供的内存映射机制,它将进程的一段虚拟地址空间与磁盘文件或者其他内核对象建立映射关系,当进程访问这段虚拟地址时,触发缺页异常,内核将文件内容加载到物理内存,进程可以直接像访问内存一样访问文件内容,不需要调用read/write进行拷贝。优点:(1)减少数据拷贝次数,传统read/write需要将数据从内核缓冲区拷贝到用户缓冲区,mmap只需要一次缺页拷贝,减少了一次数据拷贝,大幅提升大文件IO的效率;(2)多个进程映射同一个文件时,共享同一块物理内存,实现高效的进程间共享内存通信;(3)用户进程可以直接访问文件内容,简化编程模型,不需要手动管理IO缓冲区;(4)节省内存,多个进程运行同一个动态库时,只需要在内存中保存一份动态库的拷贝,节省内存资源。四、编程题1.请用C语言实现一个函数,判断当前CPU是大端还是小端模式。答案:利用联合体共享地址空间的特性实现,代码如下:```cintcheck_cpu_endian(void){union{intnum;charbyte;}test;test.num=1;//返回0表示小端,返回1表示大端returntest.byte==1?0:1;}```解析:联合体所有成员共享起始地址,给int类型的num赋值1后,小端模式下低地址存储低字节,因此起始地址的char类型byte读到的值是1,大端模式下低地址存储高字节,byte读到的值是0,该方法简洁高效,是笔试中最常用的实现方式。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟草评吸师岗中变更管理考核试卷含答案
- 2025年通信安全员ABC证考试资料(含答案)
- 2025年高级会计实务真题及答案
- 2025年国家计算机等级考试一级B真题试卷(含答案)
- 2026年秋季开学高中开学第一课(人际交往)课件
- 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(四级)答案
- 2026浙江卫生系统招聘考试(中药学)历年参考题库含答案详解3卷
- 2026河南省机关事业单位工勤技能岗位等级考试(收银审核员·初级/五级)历年参考题库含答案详解2卷
- 2026河南机关事业单位工勤技能岗位等级考试(装饰美工·中级/四级)历年参考题库含答案详解2卷
- 2026河北省直及地市、县事业单位招聘考试(医学专业能力测验)历年参考题库含答案详解3卷
- 2026年机械产品检验工专项题库(附答案与解释)
- 成都市龙泉中学高一入学数学分班考试真题含答案
- XX国资委防汛防台风国有企业应急预案(国资救援)
- 2026年成都市中考化学试卷(含答案)
- 护理实践中的法律风险与防范
- 中国博物馆数字技术应用及案例研究2025年度报告
- 2026中国餐厨垃圾资源化处理技术比较与投资回报分析报告
- 食品生产企业飞行检查要点培训
- 2025年辽宁省沈阳市政府采购评审专家考试真题含标准答案
- 智联eas测评理解型题库
- 优化家庭无线网络:基于电磁波理论的跨学科项目式学习-初中物理九年级教学设计
评论
0/150
提交评论