LinuxC语言
必备Linux命令和C语言基础
- 环境安装
- 文件很目录相关命令
- vi编辑器使用
- 基础知识
- 数据的表示
- 程序的编译和调试
数据类型、常量、变量及运算符
输入输出专题
- 字符串输出函数和格式输出函数
- 字符串输入函数和格式输入函数
- 输入函数的垃圾处理及字符串的输入输出
控制语句
- 控制语句if
- 控制语句switch
- 控制语句goto while
- 循环语句for
- 循环辅助语句
数组和字符串
- 一维数组
- 二维数组
- 字符串数组和字符串
- 字符串函数
指针
- 指针的基本用法
- 指针的运算
- 指针与数组
- 字符指针与字符串
- 指针数组
- 多级指针
- void指针和const修饰符
函数
- 函数的基本用法
- 函数的的参数传递
- 函数中传递数组参数
- 指针函数
- 递归函数和指针函数
LinuxC语言高级
- 软件包管理及shell命令
- deb软件包管理
- shell基本命令
- shell中的特殊字符
shell命令
- shell基本系统维护命令
- 用户管理命令
- 进程管理命令
- 文件系统的类型和结构
- 文件系统相关命令
- Linux网络配置管理
shell脚本编程
- 变量
- 功能语句
- 分支语句
- 循环语句
- 函数
C语言高级编程
- gcc和gdb的用法
- 条件编译和结构体
- 结构体数组和结构体指针
- 共用体及typedef
- C语言的内存管理模型
- 动态内存
Make file
- Make的原理及Make file
- make命令的选项及Make file中的隐含规则
- VPATH及嵌套的Make file
数据结构
顺序表
- 数据结构的基本概念
- 数据结构算法
- 线性表
- 顺序表的实现
单链表
- 单链表的存储模型
- 单链表的创建和遍历
- 单链表的查找和插入
- 单链表的删除和倒置
- 单链表的有序插入和排序
循环链表及线性表的应用
- 循环链表的概念及存储模型
- 双向循环链表的实现
- 线性表的应用
栈及其实现
- 栈的概念及存储
- 顺序栈的实现
- 链式栈的介绍及实现
队列实现及应用举例
- 队列的概念和特征
- 顺序队列存储和初始化
- 顺序队列入队和出队
- 顺序队列实例编译和调试
- 链式队列的特征及实现
树和二叉树
- 树的基本概念
- 二叉树的概念及性质
- 二叉树的顺序存储
- 二叉树的链式存储
- 二叉树的创建过程分析及实现
- 二叉树的递归遍历算法解析
- 二叉树的层析遍历算法实现
- 二叉树遍历的先序非递归算法分析
查找
- 查找的基本概念
- 顺序查找
- 折半查找算法分析
- hash表查找
- hash表查找冲突分析
- hash函数选取
- 开放地址法处理冲突
- 链地址法分析
- 排序
- 排序基本概念及分类概念
- 直接插入排序算法
- 折半插入排序算法
- 链表插入排序算法
- shell排序算法
- 冒泡排序算法
- 快速排序算法
文件I/O
标准I/O
- 流的打开和关闭
- 按字符输入和输出
- 按行出入和输出
- 按对象输入和输出
- 流相关的操作
- sprintf和fprintf的用法
Linux下文件I/O
- 文件I/O介绍
- 文件I/O的编程接口
- 目录操作和文件属性
库的制作及使用
- 静态库的制作
- 动态库的制作
Linux并发程序设计
进程编程及守护进程
- 全面认识Linux进程
- 进程编程必备命令
- fork函数和exit函数剖析
- excel函数族和system函数
- wait函数和waitpid函数对比
- Linux守护进程
线程专题
- 线程模型及线程创建
- 线程同步机制-信号量
- 线程同步实例
- 线程互斥
Unix进程间通信方式
- 进程间通信综述及无名管道
- 进程间通信-有名管道
- 信号机制及信号相关命令
- 信号发送及定时器
System V IPC对象
- IPC机制及共享内存介绍
- 共享内存的实现
- 消息队列机制及相关函数
- 消息队列的实现
- 信号灯集机制及相关函数
- 利用信号灯集实现共享内存的同步
Linux网络编程
网络基础
- 网络的历史和分层
- 网络各层协议解释
- 网络的封包和拆包
TCP编程
- TCP编程API
并发服务器
- TCP并发服务器多线程编程
- TCP并发服务器多进程编程
UDP编程
- 网络编程API扩展及UDP编程API
IO多路复用
- IO模型以及多路服用基本原理
- select模型
- 客户端select的实现
- 服务器端select的实现
TCP、IP协议原理
- wireshark抓包工具使用
- eth_ip头原理
- TCp包头 确认重发机制
- TCP三次、四次握手
- 网络编程扩展
- 域名解析
- 网络属性设置
- 网络超时优化
- 广播编程
- 多播
- Unix域套接字
SQLite
- 嵌入式数据库之sqlite
- 数据库概念
- 数据库之命令行操作
- 数据库之API操作
在线词典综合实战
- 项目介绍及框架搭建
- 流程分析及功能设计
- 客户端代码框架搭建
注册登录的实现
- 服务器端代码框架搭建
- 注册模块
- 登录模块
项目功能实现
- 查询模块
ARM-4412
- arm基础
- 环境搭建
- arm工作模式及寄存器
- arm指令
- arm指令存储
- 逻辑指令
- 算数跳转指令
- load_store指令
- 堆栈指令
arm异常处理
- 认识异常
- 中断异常处理
- 异常向量表
- 软中断程序
arm裸机开发
- 硬件电路介绍
- LED控制电路跟踪
- 读芯片手册
- 编写程序
- 烧写程序
arm通讯接口
- 通讯接口原理
- uart串口实例
- 汇编语言混合编程
arm中断机制
- 中断原理
- 中断实例
arm波形控制
- 波形模拟uart
- I2C波形
- PWM控制
嵌入式系统移植
系统移植概述及环搭建
- 嵌入式开发环境
- 搭建开发主机
- 目标机搭建
- 连接TFTP服务搭建
- 连接NFS搭建
Boot loader移植
- Boot loader基本概念
- U-boot常用命令
- U-boot配置编译
- U-boot启动流程
- U-boot移植方法
Linux内核分析
- Linux内核基本概念
- Linux内核启动分析
- Linux内核调试方法
Linux内核移植及网卡移植
- Linux内核移植
- Linux内核配置编译
- 网卡移植准备
- 网卡移植支持NFS_TCPIP_Dm9000驱动
- 网卡移植之设备树
- 网卡移植之设备树信息分析
- 第三方驱动移植
- 驱动编译进内核Make file
- 图像化配置Kconfig
- 驱动模块
- 黑白盒对比
- 字符设备引入
- 平台设备引入
- 根文件系统制作
- 根文件系统基本概念
- 根文件系统设备访问
- 根文件系统内容制作
- 制作不同格式根文件系统
驱动初级
- 设备驱动环境搭建
- 交叉开发模式介绍
- Host主机和Ubuntu的环境配置
- tftp和nfs启动模式介绍
- 加载并启动内核镜像
- 通过nfs挂载根文件系统
- 驱动模块开发
- 编写驱动ko的准备工作
- 设备树文件的编译
- dm90000网卡的移植
- source insight的用法
- 最简单到hello驱动代码编写
- 驱动Make file编写
- insmod加载ko模块
- 模块ko参数传递
- 模块符号导出
- 字符设备驱动基础
- 字符设备驱动框架
- 申请设备号-regisger_chrdev接口的讲解
- 申请设备号的编程
- 手动或自动创建设备节点
- 实现文件操作对象file_operation
- 应用控制驱动的方式
- 用户空间和内核空间的数据交互copy_to_user
- 地址映射ioremap的用法
- 控制led灯的驱动代码实现
- 驱动和应用程序的设计思想
- 驱动中面向对象的设计思想
- 字符设备驱动编写的步骤
- 为了代码健全-错处理
- readl-writel的使用
中断编程
- Linux中中断的概念和中断处理机制
- 设备树文件中定义中断号
- 驱动代码中获取到中断号码的方法
- 申请中断处理-request_irq的使用
- 实现字符设备驱动框架
- 驱动中获取硬件数据并传递给用户的方法
- 用户获取按键数据的方式
- 阻塞的概念和接口使用
- 阻塞的实现-等待队列的使用
- 非阻塞模式的实现
- 多路复用select和poll的概念
- poll函数的使用介绍
- 应用程序poll的编程方式
- poll驱动的实现
- 异步信号通知应用程序编程
- 异步信号的驱动编程实现
- 中断下半部的由来
- tasklet的实现
- work下半部的实现
平台总线
- 设备驱动模型的由来
- sysfs文件系统的介绍
- 创建bus的代码编程
- device的构建和注册
- driver的构建和注册
- 总线bus匹配的实现
- driver和device分离和合并
- 平台总线作用和设计思想
- 平台总线中的三元素
- 平台总线led驱动之资源的定义
- 平台总线中driver实现的逻辑过程
- 平台总线中driver的注册和匹配
- 平台总线的probe代码实现
- 平台总线完成led设备的控制
驱动高级
- 高级驱动学习方法
- 字符设备驱动编写时引起的思考
- 分层框架和面向对象的思想
- 高级驱动学习特点和目标
输入子系统
- 输入子系统的作用
- 输入子系统的框架
- 最简单的输入设备驱动程序
- 输入子系统中硬件初始化和上报数据
- 应用程序读取输入设备数据的方式
- input device的初始化解释
- 添加input device的信息
- 设置位表和上报数据的另外一种方式
- 设备树中定义按键信息的子节点
- 代码中分析所有的子节点
- 应用程序读取多个按键和驱动代码的结构分析
- 输入子系统工作逻辑
- input三层分析
- evdev_connect函数分析
- input handler和input device及handle的关系
- 应用是如何调用到输入子系统中去的
- evdev_open的实现过程
- endev_read读取输入子系统的数据方式
- input_event()上报数据的实现过程
- endev_events中填充缓冲区数据的过程
I2C子系统
- I2C协议和时序讲解
- Linux I2C驱动框架
- 总线和平台总线的结合
- 从设备的设备树信息的添加
- client_drive_adapter_msg等对象的讲解
- MPU6050的I2Cdriver驱动框架编写
- MPU6050操作寄存器
- 读取MPU6050数据寄存器并上报给用户
- 应用程序读取重力加速度和陀螺仪的值
- 设备树
- 设备树文件的编译
- 内核使用dtb文件的过程
- 节点和属性
- 常见的属性compatible-reg等
- 在dts中添加新的节点
- of解析dts节点的API
- 代码中获取节点
- 获取属性
- 获取属性中的整数数组
- 获取属性中字符串数组
- 定义和获取dts中的中断信息
- 验证dts的中断信息
- dts代替平台设备的pdev硬编码方式
Android系统开发
- Android 系统开发环境搭建
- Android架构介绍
- 源码获取方式
Android系统开发之系统编译
- 官方标准编译方法
- 编译命令详解
- 厂商定制
- 系统分区介绍
Android系统开发之模块变成及
fastboot使用- Android系统开发课程体系介绍
- APK-Android.mk介绍
- 可执行程序-Android.mk
- fastboot烧写命令介绍
- fast boot烧写实战
Android 系统启动流程分析
- Android系统启动流程综述
- init进程及init.rc分析
- zygote
- Android系统launcher定制
- Android系统开机logo定制
- Android HAl硬件抽象层的开发
- JNI语法介绍
- JNI案例分析
- HAL框架介绍
- Led HAL分析
- Led案例分析- Manager调用service
stm32嵌入式系统设计
- STM32 GPIO操作平台介绍
- LED
- 蜂鸣器
- 按键
- USART串口的应用
- 串口数据收发及收发中断的实现
- 时钟
- SystemTick实例
- 中断系统
- 外部中断
I2C总线通信
- I2C读写EEPROM
SPI总线通信
- SPI读写Flash
- 模数转换器ADC
- ADC采集光照强度
- 数据搬运工DMA
- ADC DMA模式采集
- 实时时钟RTC
- PWM定时器
- PWM控制舵机
- 智能家居项目
原理图及电路设计
- Cadence原理图符号设计
- PCB设计基础
- PCDB封装设计
Zigbee系统开发
- zigbee开发及环境搭建
无线传感器网络
- 协议栈
- 设备间第一次对话
无线传改期网络管理及实战
- 基于广播和单薄的星状网络
- 组播通信
- 串口无线透传
- 网络管理
项目实战
- 实现协调器终端1:m的控制
蓝牙4.0开发
- 蓝牙开发及环境搭建
- 蓝牙4.0
- BLE开发环境搭建
基础实验
- OSAL层工作原理
- UART实验
- LED实验
- ADC实验
蓝牙协议栈
- 深入了解GAP和GATT
- 添加特征值-主从机通信
- 无线网络开发
- BLE进阶
- 蓝牙智能手环
RFID开发与应用
- ISO 14443-A协议
- RC522基本原理
- S50卡原理
- 读写卡操作
- NFC概念及用途
- PN532基本原理
- PN532帧格式
- PN532读写
- PN532充值和扣款