岗位职责:
1、嵌入式Linux设备驱动开发与维护:
①负责Linux内核下各类外设驱动(如I2C, SPI, UART, USB, Ethernet, GPIO, MMC/SD, LCD, Camera, Sensor等)的开发、调试、优化与维护;
② 理解和修改现有驱动代码,解决驱动相关的复杂问题;
③实现或适配特定硬件平台(尤其是**Xilinx ZYNQ系列**或**Nvidia Jetson系列**)的定制驱动。
2、嵌入式Linux系统移植与定制:
①负责将Linux内核、Bootloader (如U-Boot) 移植到新的硬件平台(ARM架构为主);
② 定制和构建Linux根文件系统 (如Buildroot, Yocto Project, Debian/Ubuntu根文件系统);
③进行内核配置、裁剪、优化,提升系统启动速度和运行效率;
④解决系统移植过程中的硬件兼容性、性能瓶颈及稳定性问题。
3、基础嵌入式Linux应用开发:
①根据需求,开发简单的嵌入式Linux用户空间应用程序,用于硬件测试、功能验证或基础服务;
②编写Shell脚本或Python脚本进行自动化测试、系统配置或简单任务处理。
4、硬件协同与调试
① 与硬件工程师紧密合作,参与硬件设计评审,提供软件层面的建议;
②熟练使用示波器、逻辑分析仪、串口调试工具等进行硬件级调试和问题定位。
5、文档编写:
编写清晰的技术文档,包括设计文档、调试记录、API说明等。
任职要求:
1、计算机科学、电子工程、自动化、通信工程或相关专业本科及以上学历;
2、 需要有3年及以上嵌入式开发经验,至少1年专注于Linux驱动开发 或 系统移植工作;
3、核心编程能力:
①精通C语言编程,熟悉Linux内核编程规范;
②熟悉C++或Python (用于应用/脚本开发)。
4、Linux内核与驱动深入理解:
①深入理解Linux内核机制(进程/线程调度、内存管理、中断处理、同步机制等);
②精通Linux设备驱动模型(字符设备、平台设备、设备树Device Tree等);
③具备独立开发、调试和优化复杂设备驱动的能力。
5、系统移植能力:
① 熟练掌握Bootloader (U-Boot为主) 的配置、移植和定制;
②熟练掌握Linux内核的配置、裁剪、交叉编译、移植和优化。
③ 熟练掌握至少一种根文件系统构建工具(Buildroot, Yocto, OpenEmbedded, debootstrap等);
④ 熟悉交叉编译工具链的使用和环境搭建。
6、嵌入式系统基础:
①扎实的计算机体系结构基础,熟悉ARM架构;
②了解常用硬件总线协议(I2C, SPI, UART, USB, MIPI, PCIe等);
③具备基本的硬件原理图阅读能力和寄存器操作能力。
7、基础应用开发能力:
①能够使用C/C++或脚本语言(Shell/Python)开发简单的Linux用户空间应用程序;
②了解基本的Linux多进程/多线程编程、网络编程(Socket)。
8、调试能力:
① 熟练掌握GDB (包括KGDB/KDB)、JTAG等调试工具;
② 具备强大的问题分析和解决复杂系统/驱动问题的能力。
9、工具与版本控制:
① 熟练使用Git进行代码版本管理;