26秋招-拓竹嵌入式软件面经

7.31投递,8.7约面,8.11一面如下:

1、自我介绍
2、如何理解堆和栈?
3、在裸机或者RTOS中,有什么比较快速的方法去精确确定一个任务或者整个系统里面栈的 最大使用深度 是多少,如何运行一段时间后查看栈用了多少?
4、什么情况下栈内容会变化?
5、CPU保存现场(函数嵌套、中断等场景下)都是保存什么信息?
6、系统异常(比如进入HardFault)如何定位源头?
7、说一下MCU启动的过程,从上电到跑到main函数
8、全局变量的初始化过程是在哪里初始化的?

9、看你项目里用串口挺多的,说一下你是怎么用串口的?(DMA、缓冲区、中断)
10、DMA的全满中断和串口空闲中断(当二者都满足触发条件时)会同时将标志位置位然后触发吗?(我答的是先DMA全满再空闲,因为打日志看过,但好像没答到点子上)
11、继续10中的场景,当满足触发这两个中断的条件后,我把中断给关了10个字节的时间之后再打开(或者说更高优先级的中断一直把系统阻塞住了),DMA和空闲中断的标志位都还在,这时CPU可能需要仲裁一下,这会对你的驱动有影响吗?如果要没有影响的话需要怎么做?(没太懂这个提问的意思)

12、说一下RTOS的运行机制?
13、进程任务的切换时机?
14、系统 如何/什么时候 得知高优先级任务准备好了?(涉及底层实现原理吧)

15、详细说一下某个项目
16、系统中微秒级的延时是怎么实现的?
17、IIC中时序的延时是如何实现的?
18、软件IIC造成的CPU被多次阻塞,中断会造成这些延时的滞后,这些对IIC的读取有影响吗?
19、IIC时钟不均匀会对通信有影响吗?

20、讲讲使用cmbacktrace定位到的一些实际的问题案例
21、数组越界一定会产生hardfault吗?不产生Hardfault的话会有什么其他的影响吗?
22、你做Bootloader时,你觉得其最重要的功能是什么?
23、Bootloader跳转过程中DMA要关吗?
24、说一下低功耗怎么做的?超低功耗Standby模式想唤醒应该如何唤醒?
25、介绍一下软件通信协议是怎么设计的(串口协议栈)?如何去优化协议栈的设计?

无手撕,反问环节问了一些上面没答出来的点

一面总结:根据简历上的项目,由八股为切入点深挖底层,甚至好多问题我都不明白要答什么还是很难的,感觉和传说中的大疆面试差不多了,很深挖。最难的是会根据你当前的场景给你些假设,让你回答会发生什么
注:上面的提问点与项目高度相关,并不是纯八股,仅供参考

--------------------------------------------------------------------------------------------------

#拓竹##嵌入式##26秋招#
全部评论
以下是自己的一些解答不一定对,希望大佬解答 2.堆栈都在ram中,生长方向不同,管理方式不同,一个自动分配一个手动管理 3.估算最大深度没思路,运行时候可以掉rtos自带的函数可以看见深度 4.任务切换入栈出栈,进中断保存现场 5.lr pc psr r0-r3 r12?具体记不清楚了 6.系统异常会压栈pc lr还有状态寄存器,可以根据lr判断此时是中断环境还是任务环境,根据keil内存访问找到sp对应的栈,找到压栈的pc然后和反汇编来对比就知道什么地方有问题 7.上电复位,从程序起头中断向量表拿到复位中断地址,从复位中断里面拿出来.s里面的内容,主要是初始化堆栈.stm32会有一个system init(设置频率和时钟),好像还有变量搬移到ram里面具体记不清楚了
4 回复 分享
发布于 08-12 12:55 广东
同学们,华子秋招应届已经开始啦,感兴趣可以投递简历哈
点赞 回复 分享
发布于 08-14 11:26 广东
8.7约面
点赞 回复 分享
发布于 08-13 21:48 四川
佬最后去了没,难度如何?
点赞 回复 分享
发布于 08-13 16:10 河南
已老实
点赞 回复 分享
发布于 08-13 12:21 江苏
我简历挂了
点赞 回复 分享
发布于 08-12 15:07 北京
深圳还是上海base呀
点赞 回复 分享
发布于 08-12 15:03 新加坡
已老实
点赞 回复 分享
发布于 08-12 10:24 广东
确实问的好难
点赞 回复 分享
发布于 08-12 02:52 陕西
这个企业卡学历吗?
点赞 回复 分享
发布于 08-12 00:40 湖南

相关推荐

经常看见粉丝朋友问在哪里才能找到不烂大街的项目,今天笔者来分享一下如何寻找。以下为个人看法,仅供参考。一、b站b站大学里边有许多项目,可以按照关键词搜索。如搜mcu   rtos项目;不过个人觉得能写在简历上的项目很少,很多智能家居和小车,因此不太建议去该平台寻找。二、Github作为全球最大的开源社区,github里边的开源项目丰富且质量较高。大家可以在里边搜寻开源项目进行复现,但大多数人不知道怎么进行检索,可以按照如下方式:输入"in: description stm32 language: stars:>100 pushed:>2020-12-01”。按照上述方式,可以检索出描述里有stm32,编程语言为c语言,收藏数>100并且更新日期在2020 年12月份之后的项目,这样就能大大提高检索效率。但github上边项目缺点是复现难度大,难度在于开发文档不详细、代码难度高等;同时,大多数好的项目需要实现一个真正的产品,因此通常需要机械结构知识,进行实体制造,外壳封装等,这会导致复现周期加长且需要学习机械或者3D打印知识。因此,可以综合考虑以上因素,在github上选择适合你自己的项目。三、由企业举办的公开赛事官网或课题组项目这些官网里边通常会出现企业命题,会告诉你要做出一个什么东西,会有一个比较宽泛的需求给到你。这些需求说不定就会给你创造出做项目的灵感。课题组项目是可遇不可求的,如果感觉课题组项目和你以后想去的行业方向比较接近,那你就可以将你的课题组项目与你想去的行业多结合起来形成一个新项目,并实现出来,拿去写简历,这也是很不错的。四、复现身边的“老古董”和跨界融合逛逛电子垃圾市场或拆解旧设备(比如说复现且升级改造一个微波炉),逆向工程其硬件和部分功能,尝试用现代微控制器复现或升级改造,这本身就是个极具挑战且独一无二的项目。也可以把嵌入式技术和非传统领域结合,比如用嵌入式系统做艺术装置交互控制、结合生物传感器做健康监测小设备、或者给传统乐器加装智能反馈系统。五、咸鱼及小红书必要的时候,也可以选择知识付费。不过在筛选项目的时候需要考虑以下几点:这个项目是否烂大街、技术栈涉及哪些、有哪些亮点、能否复现成功、开发文档是否详细、是否提供教程和工程源码、电路原理图、接线图等等。总之一句话:需要确定是否能满足你自己的需求,这一点很重要!六、实习个人觉得实习是最优解。如果你能看到公司的产品,尽量把它复现出来,哪怕简单一点。并且也可以写成自己的实习经历(哪怕没能做出来也要会吹,且写在简历上),增加优势。如果实在没能实习,则按照前边讲解的几种方法寻找项目。最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
29
165
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务