新闻  |   论坛  |   博客  |   在线研讨会
文档更新 |迅为 RK3568开发板驱动指南-第十五/十六篇
红李亚 | 2024-07-08 10:47:59    阅读:43   发布文章

《iTOP-RK3568开发板驱动开发指南》更新,本次更新内容对应的是驱动(第十五篇 i2C)(第十六篇 SPI)视频,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。

教程概览

文档教程更新至第16篇-SPI


第1篇 驱动基础篇

第2篇 字符设备基础

第3篇 并发与竞争

第4篇 高级字符设备进阶第5篇 中断

第6篇 平台总线

第7篇 设备树

第8篇 设备树插件

第9篇 设备模型

第10篇 热插拔

第11篇 pinctrl子系统

第12篇 GPIO子系统

第13篇 输入子系统

第14篇 单总线

第15篇 I2C

第16篇 SPI

驱动基础-进阶篇

未完待续,持续更新中...


视频教程更新至十八期

第一期_驱动基础(包含进阶篇)

第二期_字符设备基础

第三期_并发与竞争

第四期_高级字符设备进阶

第五期_中断

第六期_平台总线

第七期_设备树

第八期_设备树插件

第九期_设备模型

第十期_热插拔第十一期_pinctrl子系统

第十二期_GPIO子系统

第十三期_输入子系统

第十四期_单总线

第十五期_I2C

第十六期_SPI

第十七期_串口

第十八期_PWM

未完待续,持续更新中...


更新内容

教程更新《iTOP-RK3568开发板驱动开发指南》V2.2

新增第十五篇_I2C

新增第十六篇_SPI


◆文档+网盘获取方式

联系旺旺客服加入RK3568售后群

教程目录✦ 第一篇 驱动基础

第1章 前言

第2章 你好!内核源码

第3章 helloworld 驱动实验

第4章 内核模块实验

第5章 驱动模块传参实验

第6章 内核模块符号导出实验


✦ 第二篇 字符设备基础

第7章 menuconfig图形化配置实验

第8章 驱动模块编译进内核实验

第9章 申请字符设备号实验

第10章 注册字符设备实验

第11章 创建设备节点实验

第12章 字符设备驱动框架实验

第13章 杂项设备驱动实验

第14章 内核空间与用户空间数据交互实验

第15章 文件私有数据实验

第16章 一个驱动兼容不同设备实验

第17章 Linux错误处理实验

第18章 点亮LED灯实验


✦ 第三篇 并发与竞争

第19章 并发与竞争实验

第20章 原子操作实验

第21章 自旋锁实验

第22章 自旋锁死锁实验

第23章 信号量实验

第24章 互斥锁实验


✦ 第四篇 高级字符设备进阶

第25章 IO模型引入实验

第26章 阻塞IO实验

第27章 非阻塞IO实验

第28章 IO多路复用实验

第29章 信号驱动IO实验

第30章 定时器实验   

第31章 秒字符设备驱动实验 

第32章 Linux内核打印实验  

第33章 llseek定位设备驱动实验

第34章 IOCTL驱动传参实验  

第35章 IOCTL地址传参实验

第36章 封装驱动API接口实验

第37章 优化驱动稳定性和效率实验  

第38章 驱动调试方法实验


✦ 第五篇 中断

第39章 中断实验

第40章 中断申请流程

第41章 中断下文tasklet实验 

第42章 软中断实验

第43章 特殊的软中断tasklet分析实验

第44章 共享工作队列实验

第45章 自定义工作队列实验

第46章 延迟工作实验 

第47章 工作队列传参实验

第48章 并发管理工作队列实验

第49章 中断线程化实验


✦第六篇 平台总线

第50章 平台总线模型介绍

第51章 注册platform设备实验

第52章 注册platform驱动实验

第53章 probe函数编写实验

第54章 点亮LED灯实验(平台总线)


✦ 第七篇 设备树

第55章 初识设备树

第56章 设备树基本语法

第57章 实例分析:中断

第58章 实例分析:时钟

第59章 实例分析:CPU

第60章 实例分析:GPIO

第61章 实例分析:pinctrl

第62章 dtb文件格式讲解

第63章 dtb展开成device_node实验

第64章 device_node转换成platform_device实验

第65章 设备树下platform_device和platform_driver匹配实验

第66章 of操作函数实验:获取设备树节点

第67章 of操作函数实验:获取属性

第68章 ranges属性实验

第69章 of操作函数实验:获取中断资源

第70章 参考文档:设备树bindings


✦ 第八篇 设备树插件

第71章 设备树插件介绍

第72章 设备树插件语法和编译实验

第73章 设备树插件使用实验

第74章 虚拟文件系统ConfigFS介绍

第75章 ConfigFS的核心数据结构

第76章 注册configfs子系统实验

第77章 注册group容器实验

第78章 用户空间创建item实验

第79章 完善drop和release函数实验

第80章 注册attribute实验

第81章 实现多级目录实验

第82章 移植设备树插件驱动实验

第83章 设备树插件驱动分析实验

第84章设备树插件参考资料介绍


✦第九篇 设备模型

第85章设备模型基本框架-kobject和kset

第86章 创建kobject实验

第87章 创建kset实验

第88章 为什么要引入设备模型

第89章 进一步探究设备模型

第90章 虚拟文件系统sysfs目录层次分析实验

第91章 什么是引用计数器 

第92章 引用计数器实验

第93章  kobject释放实例分析实验

第95章 创建属性文件并实现读写功能实验1

第96章 优化属性文件读写函数实验

第97章 创建属性文件并实现读写功能实验2

第98章 创建多个属性文件的简便方法

第99章 注册一个自己的总线实验

第100章 在总线目录下创建属性文件实验 

第101章 总线注册流程理论分析实验

第102章  platform总线注册流程实例分析实验 

第103章 在总线下注册设备实验

第104章 设备注册流程分析实验 

第105章  platform总线设备注册流程实例分析实验 

第106章 为什么注册总线之前要先注册设备实例分析实验 

第107章 在自己的总线下注册驱动实验

第108章 驱动注册流程分析实验

第109章  probe函数执行流程分析实验

第110章 加载驱动和加载设备先后顺序分析实验 

第111章 platform总线注册驱动流程实例分析实验


✦第十篇 热插拔

第112章 热插拔简介

第113章 内核是如何发送事件到用户空间

第114章 内核发送事件到用户空间的方法

第115章 完善kset_uevent_ops结构体实验

第116章 netlink监听广播信息实验

第117章 uevent_helper实验

第118章 使用udev挂载U盘和T卡实验

第119章使用mdev挂载U盘和T卡实验


✦ 第十一篇pinctrl子系统

第120章 pinctrl子系统的引入

第121章 pinctrl probe函数讲解

第122章pinctrl 子系统函数操作集

第123章dt_node_to_map函数分析

第124章pinctrl_bind_pins函数

第125章 add_setting函数分析

第126章 通过pinctrl状态设置引脚复用实验

第127章 猜想验证


✦ 第十二篇 GPIO子系统

第128章 GPIO入门实验

第129章 GPIO控制和操作实验

第130章 GPIO的调试方法

第131章 GPIO子系统API函数的引入

第132章 获取单个gpio描述实验

第133章 GPIO操作函数实验

第134章 三级节点操作函数实验

第135章 GPIO子系统与pinctrl子系统相结合实验

第136章 实战:实现动态切换引脚复用功能


✦ 第十三篇 输入子系统

第137章 初识input子系统

第138章 输入子系统框架

第139章 输入子系统数据结构介绍

第140章 认识内核中输入子系统的源码和裁剪

第141章 编写最简单的设备驱动层代码

第142章 从最简单的设备驱动代码入手分析匹配规则

第143章 多对多的匹配关系分析

第144章 继续完善设备驱动层代码

第145 章 输入子系统上报数据格式分析

第146章 通用事件处理层connect函数分析

第147章 通用事件处理层分配设备号分析

第148章 通用事件处理层open函数分析

第149章 通用事件处理层数据上报流程分析

第150章 通用事件处理层event函数分析

第151章 通用事件处理层read和write函数分析

第152章 核心层代码分析

第153章 固定输入设备的设备节点实验

第154章 固定usb设备的设备节点实验


✦ 第十四篇 单总线

第155章 单总线简介

第156章 DS18B20介绍

第157章 DS18B20驱动框架编写

第158章 DS18B20编写字符设备驱动框架

第159章 DS18B20驱动设备树

第160章 DS18B20驱动复位时序编写

第161章 DS18B20驱动写时序编写

第162章 DS18B20驱动读时序编写

第163章 DS18B20驱动温度读取编写

163.4 运行测试

第164章 DS18B20驱动使用ioctl设置分辨率

第165章 DS18B20驱动使用ioctl读取分辨率


✦ 第十五篇 I2C

第166章 初步认识I2C

166.1 I2C总线的由来

166.2 I2C硬件连接

166.3 I2C基础知识

166.4 iTOP-RK3568开发板上的I2C接口

第167章 I2C上拉电阻

167.1 接上拉电阻的作用

167.2 I2C上拉电阻阻值计算

第168章 I2C通信时序介绍

168.1 起始信号和终止信号

168.2 数据格式

168.3 应答信号和非应答信号

168.4 读写方向

第169章I2C子系统框架学习

169.1 I2C设备驱动层

169.2 I2C适配器驱动层

169.3 I2C核心层

第170章I2C client代码编写(设备树)

170.1 I2C设备树分析

170.2 取消FT5X06驱动和设备树

170.3 从0开始编写FT5X06 client

第172章I2C 驱动框架编写

171.1 注册I2C设备

171.2驱动程序的编写

171.3 运行测试

171.3.1 编译驱动程序

171.3.2 运行测试

第172章 使用C文件编写I2C client代码

172.1 I2C硬件资源描述

172.1.1 i2c_get_adapter函数

172.1.2 i2c_put_adapter函数

172.1.3 i2c_new_device函数

172.1.4 i2c_board_info 结构体

172.2驱动程序的编写

172.3 运行测试

172.3.1 编译驱动程序

172.3.2 运行测试

第173章 完善FT5X06设备节点和驱动

173.1 完善FT5X06设备节点

173.2 完善FT5X06驱动

173.3 运行测试

173.3.1 编译驱动程序

173.3.2 运行测试

第174章 FT5X06驱动程序I2C通信部分编写

174.1 I2C通信

174.2 完善I2C通信部分驱动

173.3 运行测试

173.3.1 编译驱动程序

173.3.2 运行测试

第175章 i2c_transfer函数解析

第176章 通过逻辑分析仪认识I2C波形

176.1写操作 

176.2读操作

第177章 FT5X06数据上报部分驱动程序编写

177.1 完善输入上报部分驱动

177.2 运行测试

177.2.1 编译驱动程序

177.2.2 运行测试

177.3 上报数据分析

177.4 编写上报应用测试程序

177.5 运行测试

177.5.2 编译应用程序

177.5.3 运行测试

第178章 i2c_client结构体分析

178.1 非设备树I2C client分析

178.2 设备树I2C client分析

第179章在应用程序中使用I2C

179.1 ioctl控制I2C

179.2 编写应用测试程序

179.3 运行测试

179.3.2 编译应用程序

179.3.3 运行测试

179.4 通用I2C驱动讲解

179.5 编写应用测试程序

179.3 运行测试

179.3.2 编译应用程序

179.3.3 运行测试

第180章 I2C Tools工具讲解

180.1 I2C Tools工具的下载和安装

180.2 I2C Tools工具的使用

180.2.1 i2cdetect

180.2.2 i2cdump

180.2.3 i2cset

180.2.4 i2cget

180.2.5 i2ctransfer

第181章 使用GPIO模拟I2C驱动

181.1 设备树的修改

181.2编写驱动程序

181.2.1 编写驱动框架

181.2.2 编写起始和终止信号代码

181.2.3 编写发送和接收应答信号代码

181.2.4 编写发送和接收数据函数

181.2.5 编写FT5X06寄存器读写函数

181.3运行测试

181.3.1 编译驱动程序

181.3.2 运行测试

第182章 使用Linux中默认的模拟I2C驱动程序

182.1 修改默认配置文件

182.2 完善设备树

182.3编写驱动程序

182.4运行测试

182.4.1 编译驱动程序

182.4.2 运行测试

第183章 SMBus总线介绍

183.1 什么是SMBus总线?

183.2 SMBus和I2C的区别

183.3 SMBus总线软件实现

183.4 SMBus总线API函数

✦ 第十六篇 SPI

第184章 初步认识SPI

184.1 SPI基础知识

184.2 SPI硬件连接

184.3 SPI通信原理

184.4 SPI极性和相位

184.5 iTOP-RK3568处理器中的SPI接口

184.6 实验硬件mcp2515介绍

第185章 SPI子系统框架

185.1 SPI设备驱动层

185.2 SPI适配器驱动层

185.3 SPI核心层

第186章 通用SPI外设代码框架编写

186.1 设备树的完善

186.2 注册SPI设备

186.3 编写driver部分

186.4 运行测试

186.4.1 编译驱动程序

186.4.2 运行测试

186.5 深入分析

第187章 mcp2515驱动编写:注册字符设备

187.1 驱动程序编写

187.2 运行测试

187.2.1 编译驱动程序

187.2.2 运行测试

第188章 mcp2515驱动编写:复位函数

188.1 理论分析

188.2 SPI通信流程

第189章 mcp2515驱动编写:读寄存器函数

189.1 理论分析

189.2 驱动程序编写

189.3 运行测试

189.3.1 编译驱动程序

189.3.2 运行测试

第190章 配置模式下寄存器的配置

190.1 CNF1、CNF2和CNF3寄存器配置

190.2 RXB0CTRL寄存器配置

190.3 CANINTE寄存器配置

190.4 完善写寄存器函数

190.5 位修改指令和屏蔽字节

第191章 mcp2515驱动编写:修改工作模式

191.1 理论分析

191.2 驱动程序编写

191.3 运行测试

191.3.1 编译驱动程序

191.3.2 运行测试

第192章 mcp2515驱动编写:完善write和read函数

192.1 编写mcp2515写函数

192.2编写mcp2515读函数

192.3 实验程序编写

192.3.1 编写驱动程序

192.3.2 编写测试APP

192.4 运行测试

192.4.1 编译驱动程序

192.4.2 编译应用程序

192.4.2 运行测试

第193章 Linux中通用SPI设备驱动

193.1 内核和设备树配置

193.2 spidev_test工具使用

193.3 应用程序中如何使用SPI

193.4 运行测试

193.4.1 编译应用程序

193.4.2 运行测试

第194章 如何在Linux中使用模拟SPI

194.1 内核和设备树配置

194.2 运行测试

第195章 实践:移植官方mcp2515驱动

195.1 内核和设备树配置

195.2 运行测试


✦ 驱动基础-进阶篇

进阶1 编译进内核的驱动系统是如何运行的?

进阶2 让驱动快一点被加载实验

进阶3 驱动代码使用Makefile的宏

进阶4 内核是如何运行ko文件的_insmod

进阶5 自定义实现insmod命令实验

进阶6 内核运行ko文件实验——系统调用

进阶7 向系统中添加一个系统调用

进阶8 内核运行ko文件总结


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客