嵌入式开发学习路线梳理
嵌入式应用领域
嵌入式方向
嵌入式相关岗位
嵌入式编程基础
嵌入式硬件基础
常见开发工具
嵌入式典型平台(ARM)
嵌入式应用层开发
嵌入式底层开发
书籍资料推荐
后记
工控
仪器仪表
消费电子
IoT
...
纯硬件
软件/软硬结合
不带操作系统
硬件电路
PCB
芯片
...
带操作系统
单片机开发
嵌入式裸机开发
用户状态
内核态
应用层开发
内核开发
驱动开发
嵌入式Linux工程师
嵌入式应用工程师
嵌入式系统工程师
嵌入式内核工程师
嵌入式驱动工程师
...
编程语言
数据结构和算法
操作系统原理
计算机网络原理
单片机原理/微机原理/计组原理
Linux操作系统
注:交流咨询,可直接联系微信公众号,里面也整理了其他方面的学习路线、知识梳理、以及书籍推荐
C语言
C++
C语言最基础
结构体/共同体/枚举/位操作
函数
指针
内存管理
关键字/常量/变量
数据类型
输入/输出/格式化
运算符
表达式
语句
判断
循环
数组
C++最基础
面向对象特性
容器
模板
泛型
STL
RTTI
元编程
见C语言部分
数据结构
算法
字符串
数组
链表
堆
栈
队列
树
哈希
图
查找
排序
内存管理和调度
多任务:多线程/并发/锁
I/O原理
文件管理
TCP/IP协议栈和分层
ARP协议
IP协议/ICMP协议
TCP协议/UDP协议
DNS协议/HTTP协议/HTTPS协议
计算机的基本组成
指令和运算
处理器架构和设计
存储系统
I/O系统
Linux系统基本使用
Linux平台的C/C++开发流程
Linux系统平台编程(下文详述)
系统概念和特点
Linux环境安装和搭建
目录结构
基本命令和常用工具
基本网络管理
基本系统管理
基本的Shell编程
编辑
编译
调试
运行
Vim
Emacs
...
编译套件
编译工具
交叉编译工具
gcc
make
makefile
cmake/autotools等
gdb
系统控制
内存管理和使用
多任务编程
文件I/O编程
网络编程
图形化界面编程
模电/数电基础
熟悉常用元器件和芯片
熟悉常用仪器仪表的使用
熟悉常见器件通信方式/协议/接口/总线等原理
会看基本电路原理图
会画基本的电路图和PCB板
会看DateSheet
会看硬件时序图
会基本的电路仿真
教科书上的典型电路和原理要记住
二极管、电容、场效应管、继电器...等等
万用表、电烙铁、焊台、热风枪、示波器...等等
串口、IIC、IIS、SPI、CAN总线...等等
很多集成电路厂商都会提供参考电路
Linux操作系统
常用Linux命令和实用工具
Git/SVN
Shell
Vim
GCC
makefile
GDB
交叉编译工具
其他工具软件
其他编辑器
ssh终端
FTP/SFTP工具
...
体系结构
嵌入式裸机
嵌入式操作系统(下文会详述)
注:交流咨询,可直接微信公众号私信。
概念和体系结构
工作模式
指令集
寻址方式
寄存器
内存管理单元
常见接口和控制器
通用编程模型
GPIO
中断
定时器
存储器
协议/接口/总线等概念
无线模块
传感器
AD转换
显示模块
典型电路
相关寄存器
工作模式
工作模式/中断体系
中断向量表
优先级、嵌套
中断处理流程
中断控制器
主要寄存器操作
外部中断
时钟体系和结构
关键寄存器控制
PMW定时器
看门狗定时器
实时时钟RTC
Flash
SD/TF
...
UART
IIC
SPI
IIS
USB
CAN
LIN
TCP/IP
蓝牙
WiFi
ZigBee
RF
温度
湿度
光敏
压力
触摸感应
红外
多轴传感器
GPS
工作原理
参数指示
寄存器操作
LCD
...
用户态
内核态
嵌入式系统应用开发
嵌入式系统内核开发
嵌入式系统驱动开发
内存管理/使用
多任务编程
文件I/O编程
网络编程
图形化界面编程
内存分配
内存管理
进程
线程
进程概念和基础
进程控制
守护进程
进程间通信
创建
等待
退出
...
守护进程的编写
错误处理
管道通信
消息队列
信号
信号量
共享内存
soket通信
线程的概念和基础
线程控制和编程
属性
创建
等待
退出
清除
同步
优先级
文件/文件描述
文件指针/文件流
缓冲
流操作:开/闭/读/写/内容定位等
标准I/O流
标准I/O操作
非阻塞I/O
异步I/O
多路复用
TCP/IP协议家族
Socket通信和应用
TCP编程
UDP编程
Qt库
Qt开发基础
对话框/窗口
信号与槽
组件/控件/布局/事件
绘图
文件操作
定时器
多线程
网络通信
可运行系统
Linux内核编程
Linux驱动开发
注:交流咨询,请直接联系微信公众号
BootLoader
Linux内核
根文件系统
内核重要机制/概念(基础设施)
内存寻址和管理
进程
内核同步原理
并发与竞争
定时器
中断
文件系统
网络通信
设备驱动程序
BootLoader基础:概念、作用、工作流程、常见命令
BlootLoader裁剪和移植
BootLoader启动流程和原理
linux内核源码结构/组成
linux内核配置/编译/调试/裁剪/移植
内核启动流程分析和理解
根文件系统构建
文件系统移植
内存寻址和管理
并发与竞态
原子操作
自旋锁
同步
互斥
信号量
内核中断
异常处理
内核定时器原理
内核同步原理
异步通知和异步I/O
阻塞和非阻塞I/O
内存管理的基本框架和原理
段/页/区以及操作
内存映射
slab层原理和接口
内存池
进程地址空间原理
进程描述符及任务结构
进程控制实践和原理
进程调度策略和方法
内核锁机制
进程间通信
临界区和竞争条件
死锁原理
内核同步访问
原子操作
屏障
自旋锁
读写锁
信号量
互斥体
定时器类型
普通定时器实现
高精定时器实现
动态时钟
时钟中断处理
延迟执行
中断概念/作用/类型/体系/框架
机制原理和实现
中断处理流程和架构
中断上下文
中断控制
硬/软中断
中断系统重要数据结构
通用文件模型和接口
相关数据结构
文件系统类型
文件系统内部处理
系统调用原理和实现
TCP/IP协议栈原理
网络分层
网络层通信
传输层通信
套接字通信
缓冲区
见下一节
设备驱动核心理论知识
字符设备驱动
块设备驱动
网络设备驱动
总线设备驱动
见上一部分内核重要机制
字符设备驱动结构和框架
关键数据结构
相关调用流程
扩展操作
块设备驱动基本框架
主要数据结构
块设备的处理和操作
通用块层
I/O调度程序
网络设备工作原理
网络设备驱动框架
核心数据结构和函数
收/发/处理数据
中断处理
串口设备驱动
IIC设备驱动
SPI设备驱动
IIS设备驱动
PCI设备驱动
USB设备驱动
...
子主题
嵌入式应用开发
嵌入式底层开发
芯片手册/datasheet
注:交流咨询,请直接联系微信公众号
注:交流咨询,请直接联系微信公众号
内核
驱动
《深入理解Liunx内核》
《Liunx内核源代码情景分析》
《Liunx内核设计与实现》
《Liunx设备驱动程序》
《Liunx设备驱动开发详解》
《Liunx驱动开发入门与实战》
《GNU MAKE》
《Debugging with GDB》
《Linux高级程序设计》
《UNIX环境高级编程》
《UNIX网络编程》
《POSIX多线程程序设计》
《嵌入式Linux基础教程》
《嵌入式Linux应用开发完全手册》
《嵌入式Linux应用程序开发详解》
编程语言
数据结构和算法
操作系统
计算机网络
计组原理
Linux操作系统
C语言
C++
《The C programming Language》
《C Primer Plus》
《C和指针》
《C陷阱和缺陷》
《C专家编程》
《C++ Primer》
《Effective C++》
《深度探索C++对象模型》
《STL源码剖析》
《大话数据结构》
《数据结构与算法分析-C语言描述》
《深入理解计算机系统》
《现代操作系统》
《TCP/IP详解 卷1:协议》
《计算机网络:自顶向下方法》
《图解TCP/IP》/《图解HTTP》
《深入理解计算机系统》
《计算机组成原理》教材
《鸟哥的Linux私房菜》
《Linux与Unix Shell编程指南》
《Linux命令行与shell脚本编程大全》
评论0
最新资源