一个合格的嵌入式工程师必要技能

嵌入式开发涉及C语言基础与进阶,数据结构,单片机软硬件设计,实时操作系统如FreeRTOS,Linux操作系统及其应用开发,网络编程,以及Linux驱动和系统移植等技能。掌握这些知识是成为合格嵌入式工程师的关键。
摘要由CSDN通过智能技术生成

学习嵌入式开发需要掌握以下几个方面的知识:

  1. 精通C语言,熟悉常见数据结构和算法;
  2. 具备一款或几款单片机平台的产品软硬件设计和开发能力;
  3. 熟悉一款嵌入式实时操作系统(比如FreeRTOS);
  4. 掌握Linux操作系统,熟悉linux下的多进程、多线程编程;
  5. 熟悉TCP/IP协议、socket编程;
  6. 熟悉ARM体系结构和uboot,具备移植uboot和定制linux系统能力;
  7. 熟悉Linux内核,掌握基于ARM的嵌入式Linux驱动开发,掌握硬件基本原理;
  8. 掌握zigbee、蓝牙、RFID、WiFi、LoRa、NB-IOT等物联网无线通信技术开发技能; 
  •  那么嵌入式具体需要学习哪些内容呢?
  1. C语言:掌握C语言的语法和基本语句,包括变量、数据类型、运算符、分支和循环等,认识C语言的关键字,掌握数组、指针和函数等,为后续深入学习Linux C语言打好基础。C语言是嵌入式学习的根基、基础,是学习的重中之重。学习C语言要通过大量的案例训练,多打代码,保证自已具备一定的编程能力。
  2. 数据结构:数据结构是程序员必修课之一,掌握数据结构中的线性表、栈和队列的用法及编程实现。掌握二叉树的递归遍历、层次遍历、及递归如何转非递归。掌握各种查找算法及编程实现,掌握各种排序算法及实现。对于嵌入式来说,数据结构的要求比传统互联网要低,但是数据结构中的各种链表、二叉树在操作系统,在Linux内核和驱动中会经常出现,掌握数据结构的知识,对于我们理解操作系统复杂代码比较有帮助。
  3. 单片机:至少掌握一到两款MCU的软硬件开发技术,掌握常用UART、I2C、SPI等接口技术和常用传感器的使用方法,具备一定的实战开发经验。熟悉嵌入式系统控制部分的体系结构。了解各类通信总线及传感器使用方法、存储器、触摸屏、显示屏、SD卡等高级外设的操控原理以及系统电源管理的实现。
  4. 实时操作系统:以较常用的FreeRTOS为例,了解并掌握FreeRTOS的系统移植、FreeRTOS任务管理、FreeRTOS中断管理、FreeRTOS时间管理、FreeRTOS软件定时器、FreeRTOS信号互斥等等常见功能。
  5. Linux操作系统:能够熟练使用Linux命令,熟悉Linux软件包管理,掌握shell脚本编程掌握,熟悉C语言的结构体、共用体、内存管理等内容,熟悉make项目管理工具等。
  6. Linux应用开发:掌握linux下标准I/O的用法,学会linux下文件I/O的用法,熟悉库的制作和使用。掌握进程和线程编程,掌握进程间的通信机制,熟悉多线程编程、多线程间的同步和互斥等。
  7. Linux网络编程:掌握网络体系结构、网络封包、拆包等基础知识,熟悉TCP编程、UDP编程、Socket编程,掌握服务器的设计,熟悉I/O多路复用技术,熟悉TCP/IP协议原理、域名解析、网络超时优化、域套接字编程等。
  8. Linux系统移植:掌握BootLoader的启动及工作流程,熟悉BootLoader的编译、裁剪与移植,了解如何配置编译、裁剪以及移植linux内核、掌握Linux设备树,掌握根文件系统的制作,学会如何移植SD卡、网卡、第三方驱动到Linux开发板,能够成功启动Linux开发板。
  9. Linux驱动开发:掌握如何编写编译一个驱动模块,掌握字符设备驱动的编写。掌握如何用代码实现阻塞,非阻塞,异步,同步,多路复用。掌握内核的中断编程方法(tasklet, workqueue),掌握块设备驱动、LCD设备驱动、触摸屏设备驱动、总线设备驱动、pinctrl和GPIO子系统模型、input输入子系统模型,掌握 platform 虚拟平台总线。熟悉IIC、SPI驱动编写。复杂驱动部分,如音视

    频驱动、USB驱动、WiFi驱动等,可以跳过,后续在工作中进行针对性的学习。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值