最近在看一些招聘网站C语言相关及其分支岗位的要求,基本分为以下几类岗位:
1.C语言开发 2.C++开发 3.Qt开发 4.单片机开发 5.嵌入式软件开发
6.协议应用开发 7.底层软件开发 8.linux内核开发 9.嵌入式驱动开发
10.算法工程师 11.FPGA开发...
其中摘列其中一些岗位技能要求,以供参考:
C语言开发:
1.了解MCU各类外设
2.了解FreeTROS或者Lite-OS,VXWorks中的一种操作系统
3.熟练使用C,熟悉指针和内存管理。
4.熟悉常用数据结构和算法,多线程编程,动态库、静态库、多线程编程;
5.有单片机/DSP/嵌入式软件开发经验。
6.熟练掌握GCC、GDB等工具,了解交叉编译的相关知识;
7.熟悉USB,I2C,SPI,UART等各种协议
8.熟悉Linux操作系统和环境、能够独立完成Linux环境下的命令行操作
C++开发:
1.熟练掌握C/C++编程语言,有过相关项目经验(包括实习)者优先
2.掌握Windows/Linux平台下各种常用开发工具及知识;
3.1-5年软件开发相关经验,优秀应届生毕业生也可考虑;
4.精通linux下多线程多进程开发,
5.熟悉qt程序设计
6.熟悉网络、TCP/IP,能够进行网络应用程序开发
7.了解1553总线、429总线、串口、CAN总线、1394总线等。
Qt开发 :
- 熟悉C/C++,熟练掌握Qt开发工具;QT应用开发框架,熟悉相关开发工具和环境qtcreators;
- 熟悉Linux下的软件开发,熟悉Linux相关命令;
- 熟悉Socket通信、熟悉常用网络协议TCP/IP,HTTP,WebSocket;
- 熟悉常用数据库,如MySQL/PostgreSQL/SQLLite;
- RS232、RS485、CAN总线及网络编程。
单片机开发工程师:
- 具备扎实的C语言、模拟电路、数字电路、电路分析等电子专业基础,。
- 熟悉单片机内核及硬件框架,精通单片机的电路设计及编程
- 精通C语言程序设计,有良好的编程风格,有较高的代码效率,能够独自进行软件开发,了解汇编语言
- 熟练使用万用表、示波器、逻辑分析仪等工具,能够独立设计原理图,有一定的硬件功底,熟悉一种或多种绘图软件;
- 精通STM32、PIC或MSP系列(51单片机、STC增强型51单片机、PIC单片机、AVR单片机、STM8/32单片机、MSP430单片机等等)单片机中至少一种的程序开发;
- 掌握IIC、UART、SPI、Modbu 422、485,AD、DMA等常见接口和通讯协议,能独立编写相关驱动程序,熟悉工业自动化系统及相关控制原理,具有相关设计经验;
- 有较好的英文阅读能力和学习能力
协议应用开发:
- 熟悉TCP/IP、MQTT、HTTP、LWM2M、TLS等常见技术协议
- 熟练掌握C/C++语言,熟悉常用IDE的使用,以及Git、Svn版本管理工具的使用;
- 熟悉Linux嵌入式交叉编译环境和gdb调试工具;
- 熟悉socket编程、多线程编程、进程间通信编程、串口通信编程;
- 了解基本的modem协议流程,对短信、通话、拨号等协议流程有一定了解;
- (基站)熟悉3GPP 4G/5G基站的协议并有相关项目开发经验
- 通信协议栈开发:具备2~3年以上LTE/5G L1, L2,L3, OM开发工作经验
- Modem协议:熟悉了解3GPP协议业务;3年及以上Modem通信协议工作经验;
底层软件开发:
工作内容
1、内核方向:负责Linux kernel问题的处理,包括kernel启动,内存管理,进程调度,文件系统,IO优化等;
2、驱动方向:负责Linux驱动模块的开发、调试、验证、优化和问题分析处理;
3. 负责产品平台问题的分析解决以及客户支持
4、参与部门流程建设,按照公司流程输出高质量的技术文档和代码。
任职要求
1、计算机软件/通信/电子相关专业本科及以上学历,3年以上Android/linux相关内核、驱动工作经验;
2、熟练掌握/C/C++,熟悉Java、脚本语言,在数据结构、算法、软件设计等方面具有扎实的技术功底;
3、熟悉操作系统原理,熟悉Linux kernel,有文件系统和IO开发经验者优先;
4、熟悉ARM架构、懂硬件工作原理,有LINUX 驱动开发 、调试及驱动问题分析经验或内存分析、功耗优化经验优先;
5、良好的学习沟通能力和团队合作精神和产品质量意识,具有较强责任心;
6、需要具备英语听说能力,能够熟练阅读协议规范和技术文档。
嵌入式驱动开发工程师
1.本科或以上学历,电子信息或计算机相关专业,1年以上开发经验;
2.具备linux或Android驱动开发经验,熟悉GCC、Makefile等开发工具;
3.具备嵌入式linux或Android系统软件开发、移植、调试等工作能力,熟悉RS485、LAN、SPI、I2C等驱动程序开发;
4.熟练使用C或C++语言,熟悉数据结构、linux多线程、多进程及进程间通信、TCP/IP网络通信等技术者优先;
Linux驱动开发
精通ARM CPU架构下linux驱动开发,以及内核优化;熟悉Linux下PCI,PCIE子系统并做过设备驱动开发;熟悉ARM架构及相关协议,如ACPI、PCI/PCIE、LPC、SAT
3.熟练使用各种调试工具和调试技术及手段;能够看懂硬件原理图及熟练阅读各种芯片资料,并精通汇编语言和C语言;
3.熟悉u-boot/bootloader开发,板子启动调试,驱动开发,系统引导等,熟悉嵌入式Linux的开发环境和调试方法;
4. 熟悉linux内核下的设备驱动开发,如wifi/蓝牙驱动,以太网驱动,USB驱动,I2C/SPI/PCI/PCIE等总线驱动;
5. 熟悉linux内核编程,如进程调度,中断处理,时钟系统,文件系统板级移植;
内核驱动:
1、熟悉C语言,了解汇编语言和shell脚本等。
2、熟悉Linux内核,对文件系统,进程调度、同步机制、内存管理、中断处理等有一定了解;
3、熟悉Linux 内核开源社区发展,参与过内核方向社区开发尤先;
4、熟悉Linux系统性能调优及Linux服务管理;
5、熟悉嵌入式设备Linux内核适配(体系结构适配);
6、熟悉使用kexec、crash进行内核调试。
7,有Linux内核DRM/KMS驱动开发框架优先
算法工程师
- 在计算机图形学、机器学习图像处理、视频编解码、基带数字信号处理等至少一个方向上具有丰富的研发经验,参加过实际的相关算法研发项目;
- 熟练掌握C/C++/matlab;熟悉python等编程语言、有Linux开发经验者优先;
- 计算机、软件工程、电子信息、自动控制、应用数学、图像处理、模式识别等相关专业本科及以上学历;
- 扎实的数学功底,理解并掌握概率论、矩阵论、最优化方法等数学方法;
- 熟练使用Linux操作系统,掌握ARM平台的嵌入式linux系统(uboot、kernel、rootfs)的移植裁剪;
- 熟悉常用图像处理算法,熟悉OpenCV视觉开源库;负责使用OpenGL、OpenGLES或Vulkan编写图像渲染功能测试实例的开发;
FPGA:
1、熟悉verilog/vhdl硬件描述语言,熟悉FPGA开发流程、设计模式、体系结构;
2、能独立完成或协助完成基于FPGA的软件系统架构设计,完成FPGA逻辑实现的设计、编码、仿真、调试、测试等工作;
3、熟悉Xilinx/Actel公司FPGA的结构及开发方法,掌握ISE、Vivado、Libro、Modelsim、等开发工具的使用;
4、熟悉DDR2、DDR3、NAND FLASH、高速ADC、串口、SPI、I2C、网口(TCP/IP)等调试经验;
嵌入式软件开发工程师:
1.以STM32为核心的底层驱动开发经验;
2.精通C/C++语言、熟悉shell脚本语言,常用数据结构和算法,具有良好的编程习惯与文档规范;STM32系统、Linux系统;
3.具备自动控制、传感器等相关经验;
4.良好的英文技术资料阅读理解能力;
5.熟练使用C/C++,开发应用软件。
6.熟悉LinuxBSP、Linux内核驱动架构,熟悉SPI、I2C等常见通信协议,具备相关驱动开发与移植经验,具备TCP/IP、UDP等Linux网络编程经验;