安克创新 嵌入式 二面

1. 简单介绍一下你自己和你的项目经历

参考答案:

我是XXX,毕业于XX大学XX专业,有X年嵌入式开发经验。我的技术栈主要包括C/C++编程、ARM架构、Linux和RTOS双平台开发,熟悉常用通信协议和驱动开发。

在项目经验方面,我主要做过三类项目。第一类是基于Linux的智能设备开发,负责应用层和驱动层的开发工作,实现了设备的网络通信和数据处理功能。第二类是基于FreeRTOS的实时控制系统,主要做传感器数据采集和电机控制,对实时性和稳定性要求较高。第三类是智能硬件产品,涉及到低功耗设计、无线通信和用户交互,这让我对产品化开发有了更深的理解。

我比较擅长的是底层驱动开发和系统优化,能够独立完成从需求分析到代码实现的全流程。同时我也注重代码质量,有良好的文档习惯和团队协作能力。

2. 你提到做过Linux和RTOS开发,能对比一下这两个平台的开发差异吗?

参考答案:

1.系统架构差异 Linux是宏内核架构,功能丰富但体积较大,通常运行在MPU上,需要MMU支持虚拟内存管理。而RTOS是微内核架构,代码精简通常几十KB,运行在MCU上,直接操作物理地址,启动速度快资源占用少。

2.实时性对比 RTOS是硬实时系统,任务调度延迟在微秒级,中断响应时间确定可预测,适合对时序要求严格的场合。Linux是软实时系统,虽然有RT-Preempt补丁可以提升实时性,但调度延迟仍在毫秒级,主要适合对实时性要求不那么严格的应用。

3.开发复杂度 Linux开发生态完善,有丰富的库和工具链,支持多进程多线程,文件系统和网络协议栈功能强大,但学习曲线陡峭。RTOS开发相对简单,API精简易学,但很多功能需要自己实现,比如文件系统和网络协议栈需要移植第三方组件。

4.应用场景选择 我在项目中的选择标准是:如果需要运行复杂应用、需要文件系统和网络功能、对成本不敏感,就选Linux。如果对实时性要求高、资源受限、成本敏感、功耗要求严格,就选RTOS。比如我做的网关产品用Linux,而传感器节点用FreeRTOS。

3. 如果让你从零开始设计一个嵌入式产品,你会考虑哪些方面?

参考答案:

1.需求分析阶段 首先要明确产品的功能需求、性能指标、成本预算和上市时间。比如我之前做智能温控器,需求是测温精度±0.5℃、响应时间<1s、电池续航>1年、成本<50元。这些指标直接决定了后续的技术选型。

2.硬件选型 根据需求选择合适的MCU或MPU,考虑主频、内存、外设资源、功耗和价格。比如温控器项目我选择了STM32L系列低功耗MCU,128KB Flash足够用,内置RTC和低功耗模式满足续航要求。同时要选择合适的传感器、通信模块、电源管理芯片等外围器件。

3.软件架构设计 确定使用裸机、RTOS还是Linux系统。如果用RTOS,要规划任务划分、优先级分配、任务间通信方式。比如温控器我用FreeRTOS,划分了温度采集任务、显示任务、按键任务、通信任务和控制任务,通过消息队列传递数据,用互斥锁保护共享资源。

4.通信协议设计 根据应用场景选择合适的通信方式,近距离用I2C/SPI/UART,无线用WiFi/BLE/Zigbee,工业场合用CAN/Modbus。要设计好通信协议格式、错误处理机制、重传策略等。温控器项目我用BLE与手机通信,设计了自定义协议包含帧头、命令码、数据长度、数据和校验和。

5.可靠性设计 要考虑看门狗、异常处理、掉电保护、ESD防护等。软件上要有完善的错误处理和日志记录,硬件上要有过压过流保护。我在温控器中加入了看门狗防死机,用EEPROM保存关键参数防掉电丢失,加入了软件滤波算法提高测温稳定性。

6.功耗优化 对于电池供电产品,功耗是关键指标。要选择低功耗器件,优化软件降低工作电流,合理使用睡眠模式。温控器项目通过动态调整采样频率、关闭不用的外设、使用Stop模式,将平均功耗降到50uA,实现了1年以上续航。

4. 谈谈你在项目中遇到的最复杂的技术问题,以及你的解决思路

参考答案:

1.问题背景 我在做一个多传感器数据采集系统时,遇到了系统偶发性死机的问题。这个问题很难复现,有时运行几小时才出现一次,而且没有明显的规律,给调试带来很大困难。

2.问题排查过程 首先我在HardFault中断处理函数中添加了寄存器打印功能,通过分析栈指针和程序计数器,定位到死机发生在任务切换过程中。然后我怀疑是栈溢出问题,使用FreeRTOS的栈水位检测功能,发现通信任务的栈使用率达到95%,接近溢出边界。但增大栈空间后问题依然存在,说明不只是栈溢出这么简单。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式面试八股文全集 文章被收录于专栏

这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。

全部评论

相关推荐

01-30 09:45
燕山大学 Java
喵_coding:这种直接跑就完事了 哪有毕业了才签合同 任何offer和三方都没有的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 10:53
已编辑
华为云 Java开发 n*14 其他
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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