嵌入式开发学习学习路线

一、嵌入式的难点
嵌入式开发比互联网软开(比如Java后端)还是要难一些的,比如Java开发,基本也都是用户态的东西,但嵌入式很多东西都深入到了内核态。

二、总体学习思路
总体来说,还是可以把嵌入式学习分为三个大的阶段:
首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。
其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。以常见的ARM+Linux平台为例,需要掌握从内存管理到多任务编程、文件I/O、网络编程,甚至图形化界面编程等几个大的方面。
最后就是深入嵌入式底层开发阶段,最常见的就是内核开发和驱动开发,这些统属于内核态开发范畴,所以需要对操作系统内部机制有所涉猎和理解,在此基础上需要掌握从系统移植到内核开发、驱动开发的各个细节,这是成神之路。

三、嵌入式应用领域
工控、仪器仪表、消费电子、LoT等等。

四、嵌入式方向
纯硬件:硬件电路、PCB、芯片等等。
软硬结合:不带操作系统:单片机开发和嵌入式裸机开发
带操作系统:用户态:应用程序开发和内核态:内核开发+驱动开发

五、嵌入式相关岗位
嵌入式Linux工程师、嵌入式应用工程师、嵌入式系统工程师
嵌入式内核工程师、嵌入式驱动工程师

六、嵌入式知识学习
C语言、C++、数据结构与算法、操作系统原理、操作系统原理、计算机原理、单片机原理、微机原理、Linux操作系统、嵌入式硬件基础

七、常用开发工具
Linux操作系统、常见Linux命令和实用工具、Git/SVN、shell、Vim、GCC、Makefile、GDB、交叉编译工具、SSh、FTP等等。

八、嵌入式典型平台
体系结构:概念和体系结构、工作模式、指令集、寻址方式、寄存器、内存管理单元、常见接口和控制器、通用编程模型、GPIO、中断、定时器、A/D 转换

九、常用协议
UART、IIC、SPI、CAN、USB、局域互联网络LIN、TCP/IP

十、无线模块
蓝牙、WIFI、ZigBee、RF

十一、传感器
温度、湿度、光敏、压力、触摸感应、红外、多轴传感器、GPS、显示模块

十二、嵌入式应用层开发
内存管理/使用:内存分配、内存管理
多任务/编程:进程、线程
文件I/O编程:文件、I/O
网络编程:TCP、IP、UDP、Socket
图形化界面编程:Qt

十三、嵌入式底层开发
可运行系统:BootLoader、Linux内核、根文件系统
Linux内核编程
Linux驱动开发:字符设备开发、块设备开发、网络设备开发、总线设备开发

十四:书籍推荐
C语言:《C和指针》、《C Primer Plus》、《C陷阱和缺陷》、《C专家编程》
C++:《C++ Primer Plus》
数据结构与算法:《大话数据结构》、《数据结构与算法分析-C语言描述》
操作系统:《深入理解计算机系统》
计算机网路:《图解TCP/IP》/《图解HTTP》
Linux操作系统:《鸟哥的Linux私房菜》、《Linux与Unix Shell编程指南》、
《Linux命令行与Shell脚本编程大全》
嵌入式应用开发:《嵌入式Linux基础》、《嵌入式Linux应用程序开发完全手册》、《嵌入式Linux应用程序开发详解》
嵌入式底层开发:《Linux设备驱动程序》、《Linux设备驱动开发详解》、《Linux内核设计与实现》

你可能感兴趣的:(嵌入式学习方法)