Skip to content

Latest commit

 

History

History
760 lines (606 loc) · 18.9 KB

File metadata and controls

760 lines (606 loc) · 18.9 KB

嵌入式学习路线

嵌入式高级c编程

ubuntu系统安装及环境调试

  • ubuntu虚拟机安装以及嵌入式开发环境搭建
  • ubuntu物理机及u盘版安装
  • ubuntu与windos等其它系统互访服务配置安装
  • 编辑器、编译器、调试器安装及使用
  • 练习:《自制一个u盘系统》

Linux常用命令Linu

  • 日常高频率应用命令使用练习
  • 文件操作命令使用练习
  • 内容检索命令使用练习
  • 压缩解压命令使用练习
  • 系统内部常用命令使用练习
  • 练习:《熟练运用所学命令》

嵌入式C语言编译调试技巧

  • 调试文件产生方法介绍
  • 单步、断点等调试方法介绍
  • 调试过程中动态修改内存
  • 练习:《调试之前写过的程序》

C语言基本语法结构

  • 程序设计关键字分类讲解
  • 各类进制间的分析以及转换
  • 有符号以及无符号深度剖析
  • 各种运算符介绍
  • 数据存储类型的读写控制
  • 不同数据类型间的自动以及强制类型转换
  • 各种类型间的越界问题剖析
  • 深度剖析二进制位运算
  • 练习:《日期查询系统》

C语言基本语句

  • 选择控制语句
  • 循环控制语句
  • 控制语句相关关键字分析
  • 人机交互程序设计
  • 练习:《个税征收查询系统》

数组

  • 数组的精确定义
  • 数组元素严谨的初始化
  • 深度剖析数组元素的读写过程
  • 多维数组的精确定义
  • 多维数组的应用操作
  • 练习:《打字游戏》

函数

  • 函数的定义、声明、调用三要素
  • 各类场景的函数定义
  • 严谨的函数声明
  • 函数的调用过程剖析
  • 函数参数本质剖析
  • 实参、形参详解
  • 具体需求下的函数封装流程
  • 练习:《猜数字游戏》

变量存储

  • 内存分区剖析
  • 各类变量的定义形式
  • 各类变量的作用范围
  • 各类变量的生命周期
  • 各类变量的存储区域
  • 各类变量的注意事项
  • 静态函数与全局函数的深度剖析
  • 练习:《变量存储分析》

预处理指令

  • 宏、宏函数的深度剖析
  • 多场景的条件编译分析
  • 标准的头文件编写
  • 预处理在编译之前都在忙些啥
  • 练习:《debug开关》

库的使用与制作

  • 静态库工作原理
  • 静态库制作流程
  • 动态库工作原理
  • 动态库制作流程
  • 练习:《自制常用接口库》

指针

  • 指针与内存哪些事儿
  • 指针的定义与使用
  • 指针与基本类型变量的关系
  • 指针与数组的关系
  • 指针与函数的关系
  • 指针与字符串的关系
  • 指针与指针的关系
  • 指针有多特殊
  • 练习:《计算器练习》
  • 《标准C库函数实现》

动态内存分配

  • 内存的动态分配与释放
  • 内存的多种动态分配方式
  • 动态内存使用技巧
  • 练习:《malloc实现分析》

字符串处理技巧

  • 字符串的纯手工处理技巧
  • 字符串相关库函数使用方法
  • 字符串与内存的关系
  • 练习:《手机短信分析程序》
  • 《条形码生成器》

结构体的对象思维

  • 结构体是怎样打包数据结构的
  • 结构体与数组、指针、内存等相互结合
  • 结构体实现位变量的定义
  • 练习:《GPS信息分析程序》
  • 《魔幻数字》

数据结构之链表操作

  • 链表的逻辑思维
  • 链表中的各个节点
  • 双向链表咋比单向链表还简单
  • 链表的增删查改等各项操作
  • 链表还有更简单且高级的实现方式
  • 练习:《学生信息管理系统》

文件操作

  • 一切数据皆文件
  • 文件的操作流程
  • 文件的顺序读写
  • 文件的随机读写
  • 练习:《文件加密器》

工程项目管理之Makefile

  • 为什么要用Makefile
  • Makefile可简单可复杂
  • 了解软件前先分析Makefile
  • 练习:《开源软件Makefile分析》

面向C++模板库应用开发

C++引用深度剖析

  • 引用的本质
  • 常量的引用
  • 指针引用
  • 常量引用
  • 函数的引用
  • 练习:《熟练掌握引用在项目的应用》

C++类和对象

  • 类的封装
  • 构造与析构函数
  • 构造函数的分类及调用
  • 拷贝构造函数的调用时机
  • 构造函数调用规则
  • 深拷贝与浅拷贝
  • 初始化列表
  • explicit关键字
  • 类中构造函数和西沟函数调用顺序剖析
  • 练习:《设计试验箱的类》

C++类和对象的高级应用

  • 静态的成量变量和成员函数
  • this指针的工作原理
  • This 指针的使用
  • 单例模式
  • 常函数
  • 常对象
  • 友元
  • 运算符重载
  • 智能指针
  • 函数对象
  • 练习:《系统标准类的设计》

C++继承和派生

  • 继承的基本概念
  • 派生类的定义
  • 派生的访问控制
  • 继承中的构造与析构
  • 继承中同名成员的处理方法
  • 继承中的静态成员特性
  • 多继承、菱形继承、虚继承
  • 练习:《快速对类进行扩展》

C++多态的深度剖析

  • 多态进本概念
  • 实现多态的动态绑定
  • 抽象类和纯虚函数
  • 纯虚函数和多继承
  • 虚析构以及纯虚构函数
  • 类的类型转换安全问题
  • 重写、重载、重定义
  • 练习:《熟练掌握多态的特点》

C++模板的深度剖析

  • 模板的概述
  • 函数模板以及与普通函数的区别
  • 函数模板与普通函数的调用规则
  • 模板机制剖析
  • 模板的局限
  • 类模板深度剖析
  • 类模板的继承
  • 类模板中成员函数调用时机
  • 友元函数和类模板
  • 数据转换
  • 练习:《设计模板类管理不同数据类型》

C++异常的深度剖析

  • 异常的基本概念
  • 异常严格的类型的匹配
  • 栈解旋
  • 异常接口声明
  • 异常变量的生命周期
  • 异常的多态
  • C++标准异常库
  • 练习:《能够编写自己的异常类》

STL标准模板库概述

  • STL基本概念
  • STL六大组件
  • STL的容器
  • STL的算法
  • STL的迭代器
  • 练习:《容器、算法、迭代器的综合实例》

STL常用容器

  • String容器应用
  • vector容器应用
  • deque容器应用
  • stack容器应用
  • queue容器应用
  • list容器应用
  • Set/multiset容器应用
  • Map/multimap容器应用
  • STL容器使用时机
  • 练习:《熟练掌握容器对现实数据的存储》

STL常用算法

  • 函数对象
  • 谓词
  • 内建函数对象
  • 函数对象适配器
  • 常用遍历算法
  • 常用查找算法
  • 常用排序算法
  • 常用拷贝和替换算法
  • 常用算数生成算法
  • 常用集合算法
  • 练习:《奇葩辩论赛》

AI图像处理

shell脚本开发

  • shell命令解释器介绍
  • shell脚本定义与执行
  • shell变量与控制语句
  • shell函数定义与调用
  • 练习:《自动软件打包工具》

Cortex-A53平台搭建

  • Cortex-A53开发平台介绍
  • 编个程序放Cortex-A53平台跑一跑
  • Cortex-A53平台软硬件组成
  • Cortex-A53平台系统更新步骤与方法
  • 练习:《Cortex-A53平台系统镜像升级》

GUI初识

  • 人机交互接口介绍
  • GUI环境搭建
  • GUI程序设计框架
  • 练习:《快捷显示一个窗口》

GUI中的常用控件

  • 窗口的常规设置
  • 按钮的文本设置以及获取
  • 控件的移动
  • GUI对象模型
  • 信号与槽机制的深度剖析
  • 自定义信号和槽
  • 多级窗口的切换
  • 菜单栏的创建以及添加菜单
  • 工具栏的浮动、停靠特性
  • 状态栏的左右控件添加
  • 铆接部件
  • 核心部件
  • 资源文件的管理
  • 模态与非模态对话框
  • 字体、颜色、文件对话框
  • 垂直、水平、固定、表格等常用布局
  • 组容器、分栏列表
  • 列表控件、树控件、表格控件、下拉列表框的操作
  • Label控件放置图片以及动画播放
  • 自定义控件
  • 练习:《物联网各类界面设计》

GUI中的事件处理机制

  • 消息机制与事件
  • 事件捕获
  • 事件过滤
  • 鼠标及触摸事件
  • 键盘事件
  • 事件盒子
  • 绘图和绘图设备
  • 绘图机制
  • 绘图事件
  • 定时器
  • 练习:《触摸屏操作用户UI》

GUI企业实战

  • GUI链接数据库
  • GUI对数据库的操作
  • GUI内部进程通信
  • GUI网络通信
  • GUI库的裁剪和移植
  • 练习:《棋牌类游戏制作》

OpenCV环境搭建

  • 下载交叉编译OpenCV开源软件
  • 移植到ARM平台并配置运行环境
  • 基础类型
  • 工具函数
  • 模板结构
  • 练习:《基于ARM平台OpenCV环境搭建》

图像接口

  • 矩阵表达式
  • 饱和转换
  • 稀疏数据类
  • 图像载入与保存
  • 视频载入与保存
  • 练习:《摄像头抓拍》

图像处理

  • 常见图像变换
  • 图像关键点分析
  • 直方图和模板
  • 轮廓
  • 北景提取
  • 练习:《笑脸拍照》

AI

  • 机器学习
  • 基准学习模型
  • 目标检测
  • 模型标定
  • 练习:《手势识别跟踪》

Linux系统高级程序设计

系统调用

  • 应用程序是怎样切入内核调用的
  • 常用系统调用接口介绍
  • 系统调用与库函数的关系
  • 文件描述以及权限
  • 文件描述深度剖析(位图)
  • 系统调用操作文件
  • 获取文件的状态
  • 文件的阻塞特性
  • 读取文件目录
  • 练习:《系统调用重构cp命令》

进程

  • 在进行中的程序特点
  • 并发与并行详解
  • MMU内存管理单元
  • PCB进程控制块
  • 进程状态及转换
  • 进程创建与进程号
  • 进程内存分布
  • 父子进程间数据共享模式
  • exec函数族
  • 孤儿进程、僵尸进程、守护进程
  • 进程的资源回收
  • 练习:《并发服务开发》

进程间通信

  • 管道、命名管道的创建、使用、读写行为
  • mmap内存映射
  • 共享内存
  • 消息队列
  • 信号基本概念
  • 信号集和未决信号集
  • 信号的捕捉
  • 消息队列
  • 练习:《制作守护进程》

线程

  • 线程的认识、创建、退出
  • 线程的共享模式
  • 线程资源回收
  • 线程的分离
  • 线程的属性
  • 线程的取消机制
  • GUI线程
  • 练习:《并发服务器》

并发同步与互斥

  • 同步与互斥的概念
  • 互斥锁
  • 信号量
  • 条件变量
  • 练习:《生产者与消费者》

Linux高级网络编程

Linux网络编程特点

  • TCP/IP协议
  • MAC、IP、Netmask、port
  • 数据的封装与拆解
  • 网络程序设计流程
  • 练习:《熟练掌握网络基本概念》

UDP通信

  • 字节序及地址转换
  • UDP通信流程
  • 套节字的创建
  • UDP数据的收发
  • 练习:《UDP 聊天程序》

常用通信协议

  • TFTP通信过程
  • TFTP协议分析
  • 实现TFTP客户端文件的上传下载
  • UDP广播
  • UDP多播
  • 网络抓包工具Wireshark
  • 练习:《TFTP服务器》

TCP通信

  • TCP通信流程
  • TCP通信API介绍
  • TCP客户端中的connect、send、recv
  • TCP服务器中的bind、listen、accept
  • TCP并发服务器编写
  • TCP三次握手以及四次挥手
  • 心跳包
  • 多进程多线程实现并发服务器
  • 多路IO转接技术
  • Select和epoll+线程池实现高并发服务器
  • 反应堆
  • Libevent网络库
  • web服务器
  • web编程
  • 练习:《高并发WEB服务器开发》

网络通信与防火墙

  • switch与router
  • 防火墙的一般网络布线示意
  • 防火墙的使用限制
  • 数据包过滤软件iptables
  • 练习:《单机防火墙设置实例》

原始套节字

  • 原始套节字创建
  • 数据包详解
  • MAC数据包分
  • 原始套节字发送过程
  • ARP缓存表
  • 数据欺骗
  • SYN攻击
  • 练习:《扫描本地网络的主机信息》

网络开发工具包

  • libpcap安装
  • libpcap开发实例
  • libnet安装
  • libnet开发实例
  • 练习:《网络数据的伪装、截获》

数据库+BS开发

数据库分析

  • 数据是需要管理的
  • 什么是数据库系统
  • 数据库模型
  • 常用数据库
  • 练习:《掌握数据库的基本概念》

SQLite数据库

  • SQLite数据库简介
  • SQLite数据库图开化操作
  • SQL语句
  • SQL编程
  • 练习:《楼宇管理系统》

SQLite语句进阶

  • 函数与聚合
  • 数据分组
  • 过滤分组
  • 约束
  • 联结表
  • 视图
  • 触发器
  • 查询优化
  • 练习:《车辆管理系统》

B/S开发环概述

  • 常见的web技术
  • 嵌入式web开发模式
  • B/S架构
  • Web原理
  • 练习:《服务器移植》

HTML

  • HTML语法
  • HTML标签
  • HTML样式
  • HTML表单
  • 练习:《物联网各类网页制作》

JavaScript

  • 网页调用JS的方式
  • JS编程概述
  • JS关键字、变量
  • JS数据类型、控制语句
  • JS函数
  • JS对象
  • JS全局函数
  • 练习:《学校教务管理系统》

AJAX/CGI

  • AJAX概述
  • AJAX原理
  • 创建AJAX同步或异步对象
  • 标准的XMLHttpRequest属性
  • 标准的XMLHttpRequest方法
  • CGI的处理步骤
  • CGI编程
  • 练习:《工业现场环境监测系统》

代码版本管理

  • 搭建SVN服务端客户端
  • 文件上传下载SVN基本命令
  • 常用Git命令
  • Git使用流程
  • Git冲突管理
  • Git分支管理
  • 练习:《建立自己的代码仓库》

5G物联网工程开发

物联网工程

  • 网络结构
  • wifi、Bluetooth、Lora、rfid、zigbee、NB-iot等常用技术手段介绍
  • 各种传感器技术介绍
  • MCU开发技术
  • 练习:《MCU感知层通信》

RFID技术

  • 射频技术介绍
  • RFID常见协议
  • Type A类卡Type B类卡介绍 重点讲解S50/S70卡
  • RFID读写芯片介绍
  • RFID读写芯片工作模式分析
  • 基于FM17550/mfrc522芯片的读写操作
  • 针对IC卡的加密码、充值、扣款流程介绍
  • RFID行业应用
  • 练习:《发卡充值器》

zigbee技术

  • zigbee在无线通信中的地位
  • zigbee zstack协议 zigbee三种终端通信角色介绍
  • zigbee信道、短地址、长地址分析
  • IAR集成开发环境配置
  • cc2530内部资源
  • cc2530集成射频模块开发调试
  • OSAL系统调试
  • OSAL事件机制
  • OSAL消息机制
  • 练习:《智能调光器》

NB-iot技术

  • NB-iot介绍
  • NB-iot在低功耗广域网通信中的意义
  • NB-iot协议栈介绍
  • 基于全网通的NB-iot模块开发调试
  • 移动、华为、电信云平台对接开发
  • 基于NB-IoT搭建私有云平台
  • 练习:《家居远程助手》

MQTT技术

  • MQTT协议介绍
  • MQTT服务器搭建
  • MQTT嵌入式移植
  • MQTT发布订阅应用开发
  • 基于MQTT智能网关
  • 练习:《PLC工控机运行监控》

WIFI技术

  • Esp8266模块介绍
  • Esp8266开发流程
  • 基于NODEMCU平台开发
  • Lua开发语言介绍
  • Esp8266固件定制升级
  • Esp8266远程控制
  • Esp8266常用开发工具介绍
  • 练习:《esp8266远程语音控制》

5G

  • 移植通信技术介绍
  • 5G中的关键技术
  • eMBB与嵌入式技术的行业结合
  • uRLLC与工业物联网的行业应用
  • mMTC在AIOT领域的重要作用
  • 5G中的毫米波特性
  • 5G大规模应用的mimo天线阵列
  • 5G网络架构及网络切片
  • 练习:《5G行业应用报告》

STM32

  • Stm32系列芯片介绍
  • Stm32最小系统设计
  • 固件库下载安装
  • 常见固件固接口介绍
  • Keil MDK集成开发环境配置
  • GPIO基本配置,对悬空、上下拉、模拟输入、开漏、推挽输出等对比分析
  • 外部中断机制
  • 串行通信原理
  • 定时器结构
  • 看门狗IWDG/WWDG分析
  • 启动引导过程
  • 练习:《工业网关模块》

BSP开发

ARM系统结构

  • ARM产品线及分类
  • ARM指令集、寻址、调试及混编
  • ARM裸机开发调试过程
  • 练习:《ARM异常向量表》

Bootloader设计与移植

  • 基于Cortex-A53处理器启动过程
  • 基于Cortex-A53处理器内存结构
  • 怎样设计一个引导启动程序
  • u-boot配置编译过程
  • u-boot基本命令使用与实现
  • u-boot下载与运行
  • 练习:《定制引导程序》

Linux内核开发移植

  • Linux内核结构组成
  • Linux内核编程风格
  • Linux模块编程
  • Linux内核配置编译
  • Linux内核裁剪与移植
  • 练习:《升级内核版本》

Linux文件系统

  • Linux常见文件系统种类
  • Linux文件系统特点
  • Linux根文件系统结构组成
  • Linux根文件系统启动流程
  • Linux根文件制作过程
  • Linux根文件各种烧写下载方法
  • Linux常见开源软件移植
  • 练习:《定制Linux ROM包》

Linux+Android设备驱动开发

Linux设备驱动开发

  • 字符驱动框架
  • GPIO输入输出驱动
  • 中断机制处理及响应过程
  • 时钟、电源管理机制
  • AD与触模屏驱动编写
  • SPI、IIC、UART串行通信技术驱动编写与应用
  • 练习:《键盘驱动》

工程实例驱动开发

  • input子系统驱动框架开发
  • platform机制设备驱动框架开发
  • 设备树DTS框架
  • kfifo缓冲机制
  • 并发与竞态
  • Linux驱动中的阻塞与非阻塞
  • 练习:《input驱动》

Linux设备驱动高级开发

  • 块设备驱动驱动开发
  • SD卡驱动开发
  • framebuffer驱动开发
  • 虚拟网卡驱动开发
  • usb设备驱动开发
  • Linux设备模型深入分析
  • Linux设备树开发
  • Android驱动及HAL层分析
  • 练习:《重力感应驱动》