职位描述
一、岗位概述
嵌入式软件开发工程师主要负责嵌入式系统的软件设计、开发与维护工作。需运用专业知识和技能,结合 Linux 开发经验,开发出满足产品需求的嵌入式软件,确保软件的稳定性、高效性和安全性。与硬件工程师、测试工程师等团队成员紧密协作,共同推进项目的顺利进行,为公司产品的智能化和竞争力提升提供技术支持。
二、主要职责
(一)需求分析与设计
与产品团队、市场部门等密切沟通,深入理解产品的功能需求、性能要求和用户体验期望,将其转化为详细的软件需求规格说明书。
根据需求规格说明书,进行嵌入式软件的总体架构设计,包括系统模块划分、接口定义、数据流向等。充分考虑软件的可扩展性、可维护性和兼容性,确保架构的合理性和先进性。
运用 Linux 操作系统的特性和优势,设计适合嵌入式系统的软件方案,如选择合适的内核版本、文件系统、驱动程序等。对设计方案进行详细的技术评估和可行性分析,与团队成员进行充分的沟通和讨论,确保方案的顺利实施。
(二)代码开发与实现
依据软件设计方案,使用 C、C++ 等编程语言,在 Linux 开发环境下进行嵌入式软件的编码工作。严格遵循公司的编码规范和开发流程,保证代码的质量和可读性。
负责嵌入式系统的驱动程序开发,如串口、网口、USB、SPI 等设备驱动,确保硬件设备与软件系统的正常通信和协同工作。对驱动程序进行调试和优化,提高设备的性能和稳定性。
开发嵌入式系统的应用程序,实现产品的各种功能,如数据采集、处理、显示、通信等。运用多线程、进程间通信等技术,提高软件的并发处理能力和实时性。
对开发的代码进行单元测试,使用专业的测试工具和框架,如 GTest、CppUnit 等,及时发现和解决代码中的缺陷和问题。编写详细的测试报告,记录测试结果和问题处理情况。
(三)系统集成与调试
将开发完成的软件模块与硬件平台进行集成,进行系统级的调试和测试。解决集成过程中出现的软硬件兼容性问题、通信问题等,确保系统的正常运行。
在 Linux 环境下进行系统性能优化,如内存管理优化、CPU 利用率优化、算法优化等。通过性能分析工具,找出系统的性能瓶颈并进行针对性的优化。
参与产品的硬件测试工作,提供软件方面的技术支持和问题定位。与硬件工程师紧密合作,共同解决硬件设计中可能影响软件功能的问题。
对嵌入式系统进行稳定性测试,模拟各种实际应用场景,确保系统在长时间运行过程中不出现崩溃、死机等问题。对测试过程中出现的问题进行深入分析,制定解决方案并跟踪问题的解决进度。
(四)文档编写与维护
编写详细的软件开发文档,包括需求规格说明书、设计文档、用户手册、测试报告等。确保文档的准确性、完整性和规范性,为后续的产品维护、升级和技术支持提供有力的依据。
对软件文档进行定期更新和维护,随着软件的不断开发和升级,及时修改和完善相关文档,保证文档与实际软件版本的一致性。
整理和归档开发过程中的技术资料和代码,建立完善的代码库和文档管理系统,方便团队成员的查阅和共享。
(五)技术研究与创新
关注嵌入式软件开发领域的最新技术和发展趋势,研究和探索新的技术应用于公司产品中,如人工智能、物联网、云计算等。为公司的技术创新和产品升级提供技术建议和方案。
参与公司内部的技术交流和分享活动,分享自己的技术经验和研究成果,促进团队整体技术水平的提升。
(六)团队协作与沟通
与硬件工程师、测试工程师、产品经理等团队成员保持密切的沟通和协作,及时解决项目中出现的问题。参与项目的周会、评审会等会议,汇报工作进展和问题。
积极参与团队的项目讨论和决策过程,提供专业的技术意见和建议,为团队的发展和项目的成功贡献自己的力量。
三、任职要求
本科及以上学历,计算机科学、软件工程、电子工程等相关专业。
具有8年以上嵌入式软件开发经验,其中至少3年以上 Linux 开发经验。
熟练掌握 C、C++ 等编程语言,熟悉 Linux 操作系统的基本原理和开发环境。
具备良好的嵌入式系统驱动开发和应用程序开发能力,熟悉常见的硬件接口和通信协议。
掌握软件开发的基本流程和方法,具备良好的代码编写习惯和文档编写能力。
具有较强的问题分析和解决能力,能够独立承担复杂的开发任务。
具备良好的团队协作精神和沟通能力,能够与不同专业背景的人员有效合作。
对新技术有强烈的学习兴趣和探索精神,具有创新意识和能力。
以担保或任何理由索取财物,扣押证照,均涉嫌违法,请提高警惕