首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
一勺西瓜
重庆邮电大学 嵌入式软件开发
发布于重庆
关注
已关注
取消关注
@盟主acc:
必背八股文-嵌入式基础篇1
本篇有关于嵌入式开发相关内容,一般面试官会结合你个人简历中项目负责内容进行相关知识点的提问。 芯片选型考虑哪些因素? 性能:确保芯片具有足够的处理能力来满足项目需求。 内存:选择具有足够RAM和ROM(或Flash)容量的芯片。 能耗:根据项目要求,权衡功耗和性能。 外设和接口:选择支持所需通信协议和设备连接的芯片。 封装和尺寸:考虑空间限制和生产要求,选择合适的封装类型。 开发工具和支持:选用具有良好文档和支持的芯片,降低开发难度。 供应和成本:确保稳定供应并选择性价比合适的芯片。 软件和生态系统:选择具有成熟软件支持和丰富生态系统的芯片。 安全性:根据项目要求,选择具有相应安全功能的芯片。 可扩展性:选择具有一定可扩展性和升级能力的芯片,以适应项目需求变化。 STM32F4和F1的区别,为什么选用F4? 内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核; 主频不同:F1主频72MHz,F4主频168MHz; 浮点运算:F1无浮点运算单位没有硬件FPU处理浮点数运算,F4有; (没有浮点加速硬件FPU只影响浮点计算的速度,并不是不能计算浮点数,因此只能通过内核的软件进行计算。先要把这个浮点数运算转换成定点数存储,再把这个定点数转换成指数的方式进行运算,不仅中间要进行数据转换,并且要进行多次移位,而整数型就不需要这么复杂的操作,直接运算就可以,所以F1浮点数运算不仅运算量大并且会加大MCU的负载,要慢很多) 功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等; 内存大小:F1内部SRAM最大64K,F4有192K(112+64+16)。 F4的RAM和ROM:ram192K,rom大小2048K 考虑到需要浮点运算和使用RTOS系统,最后选择F4; STM32启动过程: 处理器复位:当STM32芯片上电或者外部复位信号触发时,处理器的复位引脚将会被拉低,导致处理器执行复位操作。在复位期间,处理器会将各个寄存器的值初始化为默认值,并开始执行复位向量表中的第一条指令。 复位向量表:在STM32微控制器中,复位向量表是一个存储器区域,其中包含了处理器在复位时跳转执行的第一条指令的地址。通常,复位向量表位于存储器的起始地址,由芯片制造商预先定义。复位向量表的内容包括复位中断处理函数、中断向量表和其他初始化函数。 系统初始化:复位向量表中的第一条指令通常是一条跳转指令,将控制权转移到系统初始化函数的地址上。系统初始化函数主要用于设置处理器和系统的一些基本配置,例如时钟源和时钟频率的配置,初始化堆栈指针、全局变量等。 C库初始化:在系统初始化完成后,通常会调用C库的初始化函数。C库的初始化函数主要是对C语言运行环境的初始化,包括清零BSS段(未初始化的全局变量)、复制数据段(初始化的全局变量)等。 主函数入口:C库初始化完成后,处理器将跳转到主函数的入口地址开始执行用户程序。主函数是程序的入口点,其中包含应用程序的具体逻辑。 需要注意的是,上述步骤是一般情况下的启动流程,具体的启动过程可能会因不同的芯片型号、启动模式和编译器设置而有所差异。此外,还可以通过修改复位向量表的内容来实现特定的启动操作,例如自定义复位中断处理函数或添加其他初始化函数。 stm32的定时器 提问定时器相关的,具体根据你个人开发使用情况解答。 定时器时钟使能:首先,需要使能所需的定时器时钟。这可以通过RCC(Reset and Clock Control)寄存器来配置。例如,如果要使用TIM2定时器,需要使能TIM2的时钟。 定时器配置:配置定时器的基本参数,例如计数器的工作模式、时钟分频系数、计数器的自动重载值等。这些配置可以通过定时器的相关寄存器进行设置。 定时器中断设置(可选):如果需要使用定时器中断,可以配置中断源和中断优先级,并使能定时器中断。 启动定时器:配置完成后,启动定时器开始计数。定时器可以通过软件触发或外部触发来启动计数。 定时器中断处理(可选):如果配置了定时器中断,当计数器达到设定的值时,会触发中断。在中断服务程序中可以执行相应的操作,例如更新计数器的值、处理中断标志等。 stm32的AD采样 提问AD采样相关的,具体根据你个人开发使用情况解答。 ADC配置:首先,需要配置ADC模块的相关寄存器,包括时钟使能、采样时间、采样通道等。这些配置可以通过寄存器操作或者使用STM32提供的库函数进行设置。 GPIO配置:为了使用ADC,需要将相应的GPIO引脚配置为模拟输入模式,并使能相应的ADC通道。这可以通过配置GPIO寄存器来完成。 触发方式设置:可以选择触发ADC转换的方式,例如软件触发或外部触发。如果选择外部触发,还需要配置相关的触发源和极性。 ADC转换:在进行ADC转换之前,可以设置ADC分辨率、对齐方式、连续转换模式等。然后,可以通过启动转换命令或触发源来开始ADC转换。 中断或轮询获取结果:可以选择使用中断或轮询的方式获取ADC转换结果。如果使用中断方式,可以在转换完成后触发中断,并在中断服务程序中读取转换结果。如果使用轮询方式,则需要在转换完成后主动查询并读取转换结果。 结果处理:获取到ADC转换结果后,可以根据需要进行相应的处理,例如数据转换、单位换算等。 Linux嵌入式和单片机嵌入式区别: 复杂性:Linux嵌入式系统是基于Linux内核构建的,具有完整的操作系统功能,包括多任务处理、文件系统、网络协议等。相比之下,单片机嵌入式系统通常使用裸机编程或者实时操作系统(RTOS),具有更简单的系统结构和功能。 处理能力:Linux嵌入式系统通常在较强大的处理器上运行,例如ARM、x86等,具备较高的处理能力和存储容量。而单片机嵌入式系统使用单片机芯片,其处理能力和存储容量较低。 开发环境:Linux嵌入式系统使用标准的开发工具链和开发环境,可以使用高级编程语言(如C/C++)进行开发,并且具备广泛的软件支持和开发社区。单片机嵌入式系统的开发通常需要使用特定的单片机编程工具和汇编语言,开发资源相对较少。 系统定制性:Linux嵌入式系统具有很高的可定制性,可以根据应用需求选择所需的软件组件和功能,并且支持模块化的软件开发和更新。单片机嵌入式系统的定制性相对较低,往往需要在设计阶段确定所需功能和硬件配置。 成本和功耗:Linux嵌入式系统由于使用较高性能的处理器和较大容量的存储器,相对而言成本较高,并且功耗较高。单片机嵌入式系统由于采用低成本、低功耗的单片机芯片,成本较低且功耗较低。 总的来说,Linux嵌入式系统适用于需要复杂功能、较高性能和较大存储容量的应用,如智能手机、平板电脑、网络设备等。而单片机嵌入式系统适用于资源有限、功耗要求低、对实时性要求较高的应用,如传感器、家电、汽车电子等。 FreeRTOS、μC/OS的区别 开源性质:FreeRTOS是一个开源的RTOS,可以免费获取并在商业和非商业项目中使用。它具有广泛的用户社区和支持。而μC/OS是一种商业RTOS,需要购买许可证才能使用。 架构和内核:FreeRTOS采用基于优先级的抢占式内核架构,支持多任务处理、时间片轮转调度和中断服务机制。它提供了一套轻量级的内核函数和任务管理机制。μC/OS也是基于优先级的抢占式内核,但它提供了更多的功能,如事件标志、信号量、消息邮箱等,以满足更复杂的应用需求。 资源占用:FreeRTOS的内核非常小巧,具有低的存储器占用和快速的上下文切换速度,适用于资源有限的嵌入式系统。μC/OS相对而言具有更大的内核代码大小和更高的存储器占用,但它提供了更丰富的功能和可选组件。 硬件平台支持:FreeRTOS在多种处理器架构上都有支持,包括ARM、MIPS、x86等,因此它适用于广泛的硬件平台。μC/OS也支持多种处理器架构,但支持的硬件平台较少,且主要集中在微控制器和嵌入式系统上。 社区支持和生态系统:由于FreeRTOS的开源性质,它具有庞大的用户社区和广泛的生态系统,提供了丰富的示例代码、开发工具和支持资源。μC/OS作为商业RTOS,其用户社区和生态系统相对较小,但有专门的技术支持和服务。 在RTOS中,二值信号量和互斥量的区别? 二值信号量是一种计数器,只有两种状态:0和1。当一个任务试图获取一个已经被获取的二值信号量时,该任务会被挂起,直到该信号量被释放为止。二值信号量通常用于同步任务的开始或者结束,或者是保护共享资源的读写等。由于二值信号量不具有优先级继承功能,当高优先级任务等待低优先级任务释放二值信号量时,低优先级任务可能会优先执行,导致任务调度出现问题。 互斥量也是一种计数器,但它具有更多的状态。当一个任务获取一个已经被获取的互斥量时,该任务会被挂起,并且该互斥量的计数器会减一。只有当计数器归零时,该互斥量才会被释放。互斥量通常用于保护共享资源的读写等,它具有优先级继承功能,可以避免高优先级任务因为等待低优先级任务释放互斥量而被阻塞的问题。 在RTOS中,任务通知的运行机制是怎么样的? 发送任务向接收任务发送通知,通知包括通知值和接收任务的句柄。 接收任务准备好接收通知,并在等待通知列表中等待通知的到来。 发送任务调用发送通知的API函数,RTOS将通知保存到接收任务的等待通知列表中。 如果接收任务已经准备好接收通知,那么RTOS会将该任务从等待通知列表中移除,并唤醒该任务继续执行。 如果接收任务没有准备好接收通知,那么该任务会继续等待,直到接收任务准备好接收通知。 UCOS任务调度 一个任务,也称作一个线程。 UCOS有一个任务调度机制,根据任务的优先级进行调度。 一个是硬件中断, 那么系统会将当前任务有关变量入栈,然后执行中断服务程序,执行完成后出栈返回. 另一个是任务之间的切换,使用的方法就是任务调度,每一个任务有自己的栈,顺度也是一样的入栈,然后执行另一个程序,然后出线返回。 并非是每一任务按优先级顺序轮流执行的,而是高优先级的任务独占运行,除非其主动放弃执行,否则低优先级任务不能抢占,同时高优先级可以把放出去给低优先级任务使用的CPU占用权抢回来。所以UCOS的任务间要注意插入等待延时,以便UCOS切出去让低优先级任务执行。 UCOS中任务间的通信 在UCOS中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务间的通信的,还有全局变量。 信号量用于: 1.控制共享资源的使用权(满足互斥条件) 2.标志某时间的发生 3.使2个任务的行为同步 消息队列: 概念: (1)消息队列实际上就是邮箱阵列。 (2)任务和中断都可以将一则消息放入队列中,任务可以从消息队列中获取消息。 (3)先进入队列的消息先传给任务(FIFO)。 (4)每个消息队列有一张等待消息任务的等待列表,如果消息列中没有消息,则等待消息的任务就被挂起,直到消息到来。 STM32 中断是怎么进入到中断服务程序的 在STM32中,中断服务程序是通过中断向量表来实现的。中断向量表是一个包含中断处理程序入口地址的表格,每个中断都有一个对应的中断向量,当该中断发生时,CPU会根据中断向量表找到该中断对应的中断处理程序入口地址,并跳转到该地址执行中断处理程序。 中断向量表的起始地址位于STM32的Flash或者SRAM中,中断向量表的
点赞 71
评论 19
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-25 12:47
科大讯飞_教育BG_后端开发(准入职员工)
在小厂实习中冲大厂实习
找不到大厂实习完全可以选择小厂。作为在校生,初期核心是积累项目经验、熟悉业务开发流程。小厂上手快、接触业务全面,能快速提升实操能力,扎实打好基础,后续再冲刺大厂更有底气。
找不到大厂实习可以去小厂...
点赞
评论
收藏
分享
04-23 18:02
门头沟学院 Java
每天学一篇面经(第一天)
说说Java常用的框架 Spring框架:Java企业级项目的脚手架,提供IOC、DI、AOP SpringBoot框架:简化Spring的开发,不用配置一大堆XML,并且支持自动装配 MyBatis框架:常用ORM框架,解决对象关系映射问题 SpringBoot的自动装配是什么? SpringBoot的自动装配: @SpringBootApplication开启自动装配 @EnableAutoConfiguration中的@Import会触发AutoConfigurationImportSelector AutoConfigurationImportSelector去扫描META-INF中...
每日面经记录
点赞
评论
收藏
分享
04-25 20:38
门头沟学院 Java
28届双非本oc鹅厂
附tl 4.13投递+测评4.14约下午面+秒过约二面4.17二面秒过约下周三面4.22三面秒过当天晚上hr加微信云证4.23hr面+转录用评估4.25收到书面offer希望大家早日收到心仪的offer
我的求职进度条
点赞
评论
收藏
分享
04-16 10:50
北京理工大学 前端开发其它
地铁上看到一个小学生刷leetcode
今天早高峰10号线,人挤人,我好不容易站稳,余光扫到旁边座位上有个穿校服戴红领巾的小男孩,正低头盯着iPad。我以为他在看动画片,好奇瞟了一眼——好家伙,在刷leetcode。我人都傻了。我小学五年级还在玩赛尔号,人家已经在地铁上刷题了。让我想起来现在也有很多机构推出面向小孩的人工智能课、AI使用课...现在连小孩都这么卷了吗?
牛客97239692...:
这感觉是我弟上的那种编程课,感觉纯是骗家长小孩子的,咋劝家里都不听
AI时代还有必要刷lee...
点赞
评论
收藏
分享
昨天 14:55
门头沟学院 Java
小红书后端开发一面
1. 说说JVM的内存区域划分? 2. 常见的GC算法和收集器有哪些? 3. 讲讲CAS的原理? 4. Redis的持久化方式及区别是什么? 5. MySQL索引的底层原理是什么? 6. 什么是RAG技术?流程是什么? 7. 简述Spring AI的基本使用流程? 8. 项目A中,节点健康状态如何实时感知? 9. 项目A中,签名认证的安全性如何提升? 10. API网关项目中,策略模式重构优化了什么? 11. 项目B中,三种缓存结构分别是什么? 12. 项目B中,如何解决Redis大key问题? 13. 项目B中,如何解决数据倾斜问题? 14. 项目B中,首页耗时如何优化到60ms? 15. ...
查看19道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
求问:有没有真的能上手做大模型/Agent的实战项目?
1.5W
2
...
巨人网络26春招游戏策划面经,已OC
9180
3
...
巨人网络游戏开发一面面经
6676
4
...
游戏客户端的碎碎念
4310
5
...
最近在做Agent面试,我发现了很多共性的问题...
3683
6
...
Agent面试-RAG篇
2631
7
...
tme暑期前端二面 4.27
1942
8
...
#网易游戏雷火笔试#题量好大,个人能力原因吧,现想现写好多没有写完...
1873
9
...
我的前途全被学校毁了!!!
1792
10
...
暑期实习0进展
1632
创作者周榜
更多
正在热议
更多
#
如果春招能重来,我会___
#
2627次浏览
20人参与
#
面试官拷打AI项目都会问什么?
#
782次浏览
22人参与
#
联宝杯大学生创新大赛,你的技术值得产业级答案
#
26788次浏览
474人参与
#
除了线上,还能去哪些地方投简历
#
1372次浏览
18人参与
#
你觉得最好用的AI编程工具是_
#
476次浏览
17人参与
#
你和你的mentor相处模式是__
#
4446次浏览
31人参与
#
mt对你说过最有启发的一句话
#
114849次浏览
867人参与
#
你的mentor是什么样的人?
#
61389次浏览
794人参与
#
你会因为行情,降低找工作标准吗?
#
3504次浏览
27人参与
#
实习第一天,你在干什么
#
2816次浏览
18人参与
#
如何排解工作中的焦虑
#
320775次浏览
2746人参与
#
双非本科的出路是什么?
#
230544次浏览
1655人参与
#
你有哪些缓解焦虑的方法?
#
60697次浏览
914人参与
#
机械校招之路总结
#
125296次浏览
2106人参与
#
宣讲会你有哪些意向不到的收获
#
25117次浏览
80人参与
#
你收到了团子的OC了吗
#
1603321次浏览
11858人参与
#
一觉醒来,秋招难度下降一万倍……
#
147679次浏览
786人参与
#
哪些公司在招寒假实习?
#
95270次浏览
767人参与
#
0offer互助地
#
774574次浏览
4763人参与
#
0经验如何找实习?
#
89834次浏览
938人参与
#
你是怎么和mt相处的?
#
103229次浏览
509人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务