嵌入式高级 C 编程
ubuntu系统安装及环境调试
ubuntu虚拟机安装以及嵌入式开发环境搭建
ubuntu物理机及u盘版安装
ubuntu与windos等其它系统互访服务配置安装
编辑器、编译器、调试器安装及使用
练习:《自制一个u盘系统》
Linux常用命令
Linux日常高频率应用命令使用练习
文件操作命令使用练习
内容检索命令使用练习
压缩解压命令使用练习
系统内部常用命令使用练习
练习:《熟练运用所学命令》
嵌入式C语言编译调试技巧
调试文件产生方法介绍
单步、断点等调试方法介绍
调试过程中动态修改内存
练习:《调试之前写过的程序》
C语言基本语法结构
程序设计关键字分类讲解
各类进制间的分析以及转换
有符号以及无符号深度剖析
各种运算符介绍
数据存储类型的读写控制
不同数据类型间的自动以及强制类型转换
各种类型间的越界问题剖析
深度剖析二进制位运算
练习:《日期查询系统》
C语言基本语法结构
程序设计关键字分类讲解
各类进制间的分析以及转换
有符号以及无符号深度剖析
各种运算符介绍
数据存储类型的读写控制
不同数据类型间的自动以及强制类型转换
各种类型间的越界问题剖析
深度剖析二进制位运算
练习:《日期查询系统》
C语言基本语句
选择控制语句
循环控制语句
控制语句相关关键字分析
人机交互程序设计
练习:《个税征收查询系统》
数组
数组的精确定义
数组元素严谨的初始化
深度剖析数组元素的读写过程
多维数组的精确定义
多维数组的应用操作
练习:《打字游戏》
函数
函数的定义、声明、调用三要素
各类场景的函数定义
严谨的函数声明
函数的调用过程剖析
函数参数本质剖析
实参、形参详解
具体需求下的函数封装流程
练习:《猜数字游戏》
变量存储
内存分区剖析
各类变量的定义形式
各类变量的作用范围
各类变量的生命周期
各类变量的存储区域
各类变量的注意事项
静态函数与全局函数的深度剖析
练习:《变量存储分析》
预处理指令
宏、宏函数的深度剖析
多场景的条件编译分析
标准的头文件编写
预处理在编译之前都在忙些啥
练习:《debug开关》
库的使用与制作
静态库工作原理
静态库制作流程
动态库工作原理
动态库制作流程
练习:《自制常用接口库》
指针
指针与内存哪些事儿
指针的定义与使用
指针与基本类型变量的关系
指针与数组的关系
指针与函数的关系
指针与字符串的关系
指针与指针的关系
指针有多特殊
练习:《计算器练习》、《标准C库函数实现》
动态内存分配
内存的动态分配与释放
内存的多种动态分配方式
动态内存使用技巧
练习:《malloc实现分析》
字符串处理技巧
字符串的纯手工处理技巧
字符串相关库函数使用方法
字符串与内存的关系
练习:《手机短信分析程序》
练习:《条形码生成器》
结构体的对象思维
结构体是怎样打包数据结构的
结构体与数组、指针、内存等相互结合
结构体实现位变量的定义
共用体
枚举
练习:《GPS信息分析程序》
练习:《魔幻数字》
数据结构之链表操作
链表的逻辑思维
链表中的各个节点
双向链表咋比单向链表还简单
链表的增删查改等各项操作
链表还有更简单且高级的实现方式
练习:《学生信息管理系统》
文件操作
一切数据皆文件
文件的操作流程
文件的顺序读写
文件的随机读写
练习:《文件加密器》
工程项目管理之Makefile
为什么要用Makefile
Makefile可简单可复杂
Makefile规则
了解软件前先分析Makefile
练习:《开源软件Makefile分析》
面向 C++ 模板库应用开发
C++概述
对象的概念
类的概念
封装、继承、多态的特点
练习:《熟练掌握c++的特点》
C++对C的扩展
C++命名空间(namespace)
作用域运算符
using编译指令
全局变量检测增强
C/C++const的区别
强制类型转换
New operator和Delete operator
练习:《作用运算符解决可能发生的二义性》
C++独特的函数
inline内联函数
缺省参数函数
函数重载
C/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平台系统镜像升级》
QT初识
人机交互接口介绍
QT环境搭建
GUI程序设计框架
练习:《快捷显示一个窗口》
QT中的常用控件
窗口的常规设置
按钮的文本设置以及获取
控件的移动
GUI对象模型
信号与槽机制的深度剖析
自定义信号和槽
多级窗口的切换
菜单栏的创建以及添加菜单
工具栏的浮动、停靠特性
状态栏的左右控件添加
铆接部件
核心部件
资源文件的管理
模态与非模态对话框
字体、颜色、文件对话框
垂直、水平、固定、表格等常用布局
组容器、分栏列表
列表控件、树控件、表格控件、下拉列表框的操作
Label控件放置图片以及动画播放
自定义控件
练习:《物联网各类界面设计》
QT中的事件处理机制
消息机制与事件
事件捕获
事件过滤
鼠标及触摸事件
键盘事件
事件盒子
绘图和绘图设备
绘图机制
绘图事件
定时器
练习:《触摸屏操作用户UI》
QT企业实战
QT链接数据库
QT对数据库的操作
QT内部进程通信
QT网络通信
QT库的裁剪和移植
练习:《棋牌类游戏制作》
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
练习:《网络文件服务器》
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 开发
MySQL数据库
MySQL简介
MySQL版本和下载
MySQL服务器安装和启动
创建和管理表
数据库的增删改查
表的增删改查
表数据的增删改查
过滤和排序
单行函数
分组函数
多表查询
子查询
集合运算
数据处理
其他数据库对象
多表查询
表的约束
MySQL中文乱码问题
练习:《楼宇管理系统》
SQLite数据库
SQLite数据库基础
SQLite表的增删改查
SQLite基本查询语句
SQLite C接口编程
函数与聚合
数据分组
过滤分组
约束
联结表
视图
触发器
查询优化
练习:《车辆管理系统》
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分支管理
练习:《建立自己的代码仓库》
QT 多线程、QT 多线程间通信、QT TCP通信、QT UDP通信
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模块开发调试
移动、华为、电信、BAT等云平台对接开发
NB-IoT的低功耗模式开发
练习:《家居远程助手》
LORA
LORA介绍
LORA的应用概述
基于LORA模块的通信开发调试
练习:《Lora模组通信实验》
MQTT技术
MQTT协议介绍
MQTT服务器搭建
MQTT嵌入式移植
MQTT发布订阅应用开发
基于MQTT智能网关
练习:《PLC工控机运行监控》
WIFI技术
Esp8266模块介绍
Esp8266开发流程
基于NODEMCU平台开发
Lua开发语言介绍
Esp8266固件定制升级
Esp8266远程控制
Esp8266常用开发工具介绍
练习:《esp8266远程语音控制》
STM32
Stm32系列芯片介绍
Stm32最小系统设计
固件库下载安装
常见固件固接口介绍
Keil MDK集成开发环境配置
GPIO基本配置,对悬空、上下拉、模拟输入、开漏、推挽输出等对比分析
外部中断机制
串行通信原理
串口DMA数据收发
定时器结构
看门狗IWDG/WWDG分析
启动引导过程
PWM脉冲宽度调制
中断向量控制器NVIC
直接存储访问DMA
模数转换ADC
实时时钟RTC
I2C总线
练习:《工业物联网网关模块》
RT-Thread OS
RTT实时操作系统移植
RTT线程管理
RTT线程同步
RTT时钟管理
RTT IO设备模型
练习:《RTT应用开发》
鸿蒙设备开发
鸿蒙轻量级系统入门
轻量级系统开发
轻量级系统驱动开发
练习:《炫彩灯》、《交通灯》、《润和智能家居开发》
嵌入式项目代码规范
嵌入式项目代码编程规范
BSP 开发
ARM系统结构
ARM产品线及分类
ARM指令集、寻址、调试及混编
ARM工作模式、寄存器
ARM汇编
ARM异常
ARM裸机开发调试过程
GPIO编程
串口编程
中断编程
练习:《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 设备驱动开发
Linux设备驱动开发
字符设备驱动
GPIO子系统驱动
中断机制处理及响应过程
linux中断底半部
linux 系统SPI子系统及驱动编程
linux 系统I2C子系统及驱动编程
UART串行通信技术驱动编写与应用
练习:《键盘驱动》
工程实例驱动开发
input子系统驱动框架开发
misc杂项设备驱动开发
platform机制设备驱动框架开发
kfifo缓冲机制
并发与竞态
Linux驱动中的阻塞与非阻塞
练习:《input驱动》、《重力感应驱动》