工作内容:固件架构规划与设计
深入了解产品的功能需求、性能指标、应用场景和用户期望,确定固件的功能模块。
根据产品的特点和要求,选择合适的固件架构模式,设计固件的整体架构,包括模块之间的层次关系、通信方式和数据流向;针对固件开发,选择合适的编程语言、开发工具、操作系统、和硬件平台。
参与硬件设计过程,与硬件工程师共同确定硬件和固件之间的接口规范,协助硬件团队进行硬件调试;为硬件设备开发底层驱动程序,使固件能够有效地控制和管理各种硬件资源;优化驱动程序的性能,提高硬件设备的访问效率,降低功耗。
根据架构设计,负责开发固件的核心功能模块;实现通信模块,确保固件能够与外部设备进行稳定可靠的通信;将各个功能模块集成到一起,构建完整的固件系统,进行系统联调优化。
制定固件测试策略、测试计划和固件升级策略等。
任职要求:
学历要求:本科及以上学历,电子、通信、计算机、自动化等相关专业毕业。
专业技能:
编程语言精通:深入掌握 C、C++ 语言,能够运用其进行高效、健壮的代码编写,熟悉汇编语言者更佳。例如在一些对性能要求极高的嵌入式系统中,如工业控制、汽车电子等领域,汇编语言的运用可以对关键代码段进行优化,提升系统响应速度和资源利用效率。
硬件知识扎实:了解常见的物联网硬件平台(如ARM、MCU等)及其特性,微控制器以及外围电路的工作原理和设计,能够根据硬件平台的特点进行固件优化、能够看懂硬件原理图,并与硬件工程师紧密合作进行软硬件协同设计。例如在物联设备的固件开发中,需要精准理解传感器、执行器与微控制器的硬件连接和交互逻辑,从而设计出稳定可靠的固件架构,确保设备功能的正常实现和性能优化。
熟悉通信协议:对物联网固件架构有深入的理解,熟悉物联网通信协议(如MQTT、CoAP、HTTP等)和固件开发流程,对 SPI、I2C、UART、USB、CAN 等常见通信协议有深入理解,并能够熟练进行相关协议的固件编程实现。
操作系统及驱动开发:具备操作系统(如嵌入式 Linux、FreeRTOS、RT - Thread 等)内核裁剪、移植和驱动开发能力。熟悉嵌入式 Linux 操作系统,根据设备硬件资源和功能需求对内核进行定制化裁剪和优化,同时开发出适配各类硬件设备(如网络芯片、存储设备等)的驱动程序,构建一个稳定、高效且功能完备的固件运行环境。
架构设计与优化:拥有丰富的固件架构设计经验,能够根据产品需求设计出高扩展性、高稳定性、低功耗的固件架构。通过合理的架构设计(如采用事件驱动架构、优化任务调度算法等),在保证设备功能正常运行的前提下,最大限度地延长电池续航时间,提升用户体验。
算法与数据结构:熟悉常用算法(如排序、搜索、加密算法等)和数据结构(如链表、栈、队列、树、图等),并能将其灵活应用于固件开发中,以优化系统性能和资源利用效率。例如在数据加密传输的场景中,需要运用合适的加密算法(如 AES、RSA 等)对敏感数据进行加密处理,同时选择高效的数据结构来存储和管理加密密钥等关键信息,确保数据的安全性和完整性。
开发工具熟练掌握:熟练使用 Keil、IAR、GCC 等开发工具,熟悉 JTAG、SWD 等调试接口和调试技巧,能够熟练进行代码的编译、调试和优化工作。使用 开发工具时,能够熟练配置工程选项,利用其调试功能快速定位和解决固件开发过程中的各类问题,如内存溢出、指针异常、逻辑错误等,确保固件的质量和稳定性。
工作经验
年限要求:一般要求具有 3年以上固件开发经验,其中至少 2 - 3 年的固件架构设计经验。具备足够的技术沉淀和项目经验来应对复杂多变的技术难题和严格的行业标准规范。
项目经验:参与多个复杂固件项目开发的经验,如物联网设备(RFID、智能传感器、智能电表、智能家居网关等)、工业控制设备(PLC、DCS、工业机器人等)固件开发项目。可以设计和优化固件设计,同时能够快速响应市场需求进行功能迭代和升级。