首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客412830556号
北京理工大学 算法工程师
发布于北京
关注
已关注
取消关注
@盟主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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 17:30
科大讯飞_教育BG_后端开发(准入职员工)
Vibe Coding 会干掉初级岗位吗?
我认为是会的,cursor 现在的 vibe coding 能很快从 0 到 1 进行代码的自动生成了,不仅快,生成的代码还不差。至少对于不怎么复杂的系统还是能够使用的。我觉得可以这样比喻AI实现的系统目前可以达到了 80 分,有些时候80分就够用了,有时候需要我们程序员优化到100分。时代在不断的进步,我们也要不断进步才行。#Vibe Coding 会干掉初级岗位吗?#
点赞
评论
收藏
分享
03-29 12:50
蔚来_嵌入式工程师(准入职员工)
蔚来内推,蔚来内推码
刚来上海蔚来汽车实习没几天~🚗上海蔚来汽车公司氛围很棒,基本都是年轻人,感觉大家好像也不咋加班,弹性上下班,同事们都很友善🥰leader 人美心善,说话温温柔柔的。还和一个实习生姐妹约好以后一块到处玩,宣~🥀但是园区附近吃饭好贵,基本30往上,味道还一般般,所以建议提前三四十分钟点个外卖稍微划算点🌷办公室环境也挺不错滴,有一个活动厅可以中午吃饭休息,还有专门的电话亭打电话🏠租房的话租在了公司附近的一个小区,和别人合租,偏贵,但是合租室友很好,小区消费水平正常,还认识小区一个善良的婆婆,听说我天天在外面吃饭,还打电话叫我去家里吃饭蔚来26届3.27暑期实习启动,春招也同步进行中【关于蔚...
蔚来公司氛围 631人发布
点赞
评论
收藏
分享
03-03 12:55
北京交通大学 Java
简历+boss打招呼
为啥约不到面试啊😭😭😭是我的简历问题,还是打招呼有问题大佬们,能帮忙看看简历吗?
点赞
评论
收藏
分享
03-11 23:33
已编辑
曲阜师范大学 后端工程师
28一本小登被发一堆感谢信
目前这个简历投直接秒挂,想问问各位大佬哪里出问题了
牛客68808588...:
果真开发过12306购票系统吗,这不是一眼就被看穿了
点赞
评论
收藏
分享
03-29 10:31
门头沟学院 嵌入式软件工程师
字节 嵌入式软件开发二面 我人麻了
二面强度非常大,面试官很nice,但问题一个比一个狠。项目聊了将近20分钟,然后直接进入硬核八股,最后手撕。整体节奏很快,八股没答好直接挂,手撕写出来了但没解释清楚,属于死在细节上。题目如下,附个人分析,希望对备战字节的同学有帮助。题目列表自我介绍项目深挖20分钟(重点问了架构设计和技术决策)FreeRTOS调度器的实现原理,抢占和时间片轮转的本质区别FreeRTOS有哪些同步原语,互斥量和二值信号量的区别同优先级任务是怎么调度的优先级反转的完整场景,FreeRTOS怎么解决,能完全解决吗死锁的四个必要条件,嵌入式系统里怎么预防ARM Cortex-M中断处理,硬件自动压栈了哪些寄存器原子操作...
查看15道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
Vibe Coding开发前的 7 个关键步骤
1.2W
2
...
笔试做完两周没动静,我查了进度才知道不是挂了
4579
3
...
AIcoding上线了!你确定不来刷刷?
4035
4
...
我放弃互联网大厂了。。
3492
5
...
4.1 美团后端暑期实习面经
3339
6
...
必看实用VibeCoding项目
2684
7
...
美团后端暑期实习一面
2557
8
...
如何把面试主动权握在手里?Ai岗面试焚诀!
2549
9
...
京东零售平台产品与研发中心一面
2549
10
...
腾讯前端暑期实习一面
2475
创作者周榜
更多
正在热议
更多
#
你觉得大几开始实习最合适?
#
15250次浏览
172人参与
#
uu们,春招你还来吗?
#
52690次浏览
304人参与
#
厦门银行科技岗值不值得投
#
13781次浏览
311人参与
#
面试被问到不会的问题,你怎么应对?
#
12747次浏览
163人参与
#
面试中,你被问过哪些奇葩问题?
#
92267次浏览
891人参与
#
Claude Code泄露源码
#
7103次浏览
111人参与
#
招商银行数字金融训练营
#
104347次浏览
881人参与
#
恒生电子笔试
#
17528次浏览
135人参与
#
2023年不发年终奖的公司盘点
#
30294次浏览
174人参与
#
你都用vibe coding做过什么?
#
9214次浏览
387人参与
#
AI Coding实战技巧
#
7826次浏览
173人参与
#
26届春招投递记录
#
1496次浏览
24人参与
#
你现在一天AI几次?
#
6555次浏览
87人参与
#
七猫笔试
#
6354次浏览
46人参与
#
做完笔试后你收到面试了吗?
#
14245次浏览
165人参与
#
四大天坑是哪四家?
#
111174次浏览
241人参与
#
你见过哪些招聘隐形歧视?
#
11023次浏览
98人参与
#
机械人你知道哪些单休企业
#
101811次浏览
476人参与
#
Vibe Coding 会干掉初级岗位吗?
#
12314次浏览
168人参与
#
大厂实习和小厂实习最大的区别是什么?
#
24993次浏览
193人参与
#
如果人生可以debug你会改哪一行?
#
5649次浏览
102人参与
#
网易游戏雷火笔试
#
3956次浏览
66人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务