首页 > 其他分享 >教程更新 | RK3568驱动指南第六篇-平台总线

教程更新 | RK3568驱动指南第六篇-平台总线

时间:2023-08-29 15:22:47浏览次数:42  
标签:驱动程序 RK3568 总线 编译 实验 测试 编写 运行 第六篇

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

 

 

 

 

 

✦ 第一篇 驱动基础

 

第1章 前言

 

1.1 学习方法

 

1.2 基础准备

 

第2章 你好!内核源码

 

2.1 初识内核源码

 

2.2 内核源码结构

 

2.3 编译内核源码

 

第3章 helloworld 驱动实验

 

3.1 驱动编写

 

3.2 驱动的基本框架

 

第4章 内核模块实验

 

4.1 设置交叉编译器

 

4.2 编写Makefile

 

4.3 编译模块

 

4.4 模块加载与卸载

 

4.5查看模块信息

 

第5章 驱动模块传参实验

 

5.1 驱动模块传参简介

 

5.2 实验程序的编写

 

5.3 运行测试

 

5.3.1 编译驱动程序

 

5.3.2 运行测试

 

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

 

6.1 内核模块符号导出简介

 

6.2 实验程序的编写

 

6.3 运行测试

 

6.3.1 编译驱动程序

 

6.3.2 运行测试

 

 

 

✦ 第二篇 字符设备基础

 

第7章 menuconfig图形化配置实验

 

7.1图形化界面的操作

 

7.2 Kconfig 语法简介

 

7.3 .config配置文件介绍

 

7.4 defconfig配置文件

 

7.5 自定义菜单实验

 

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

 

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

 

9.1 申请驱动设备号

 

9.1.1 设备号申请

 

9.1.2 设备号类型

 

9.2 实验程序的编写

 

9.3 运行测试

 

9.3.1 编译驱动程序

 

9.3.2 运行测试

 

第10章 注册字符设备实验

 

10.1 注册字符设备

 

10.1.1 字符设备初始化

 

10.1.2 字符设备的注册

 

10.2 实验程序的编写

 

10.3 运行测试

 

10.3.1 编译驱动程序

 

10.3.2 运行测试

 

第11章 创建设备节点实验

 

11.1 创建设备节点

 

11.1.1 手动创建设备节点

 

11.1.2 自动创建设备节点

 

11.2 实验程序的编写

 

11.3 运行测试

 

11.3.1 编译驱动程序

 

11.3.2 运行测试

 

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

 

12.1 文件操作集简介

 

12.2 实验程序的编写

 

12.2.1 驱动程序编写

 

12.2.2 编写测试 APP

 

12.3 运行测试

 

12.3.1 编译驱动程序

 

12.3.2 编译应用程序

 

12.3.3 运行测试

 

第13章 杂项设备驱动实验

 

13.1 杂项设备驱动简介

 

13.2 杂项设备的注册和卸载

 

13.3 杂项设备驱动框架

 

13.4 实验程序的编写

 

13.5 运行测试

 

13.5.1 编译驱动程序

 

13.5.2 运行测试

 

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

 

14.1 内核空间与用户空间

 

14.2 用户空间和内核空间数据交换

 

14.3 实验程序编写

 

14.3.1 驱动程序编写

 

14.3.2 编写测试 APP

 

14.4 运行测试

 

14.4.1 编译驱动程序

 

14.4.2 编译应用程序

 

14.4.3 运行测试

 

第15章 文件私有数据实验

 

15.1 文件私有数据简介

 

15.2 实验程序编写

 

15.2.1 驱动程序编写

 

15.2.2 编写测试 APP

 

15.3 运行测试

 

15.3.1 编译驱动程序

 

15.3.2 编译应用程序

 

15.3.3 运行测试

 

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

 

16.1 container_of函数简介

 

16.2 实验程序编写

 

16.2.1 驱动程序编写

 

16.2.2 编写测试 APP

 

16.3 运行测试

 

16.3.1 编译驱动程序

 

16.3.2 编译应用程序

 

16.3.2 运行测试

 

第17章 Linux错误处理实验

 

17.1 goto语句简介

 

17.2 IS_ERR()简介

 

17.3 实验程序编写

 

17.3.1 驱动程序编写

 

17.3.2 编写测试 APP

 

17.4 运行测试

 

17.4.1 编译驱动程序

 

17.4.2 编译应用程序

 

17.4.3运行测试

 

第18章 点亮LED灯实验

 

18.1 查看原理图

 

18.2 查询寄存器地址

 

18.3 实验程序编写

 

18.3.1 驱动程序编写

 

18.3.2 编写测试 APP

 

18.4 运行测试

 

18.4.1编译驱动程序

 

18.4.2 编译应用程序

 

18.4.3 运行测试

 

 

 

✦ 第三篇 并发与竞争

 

第19章 并发与竞争实验

 

19.1 并发与竞争

 

19.1.1并发

 

19.1.2并行

 

19.1.3并发+并行

 

19.1.4 竞争

 

19.1.5 共享资源的保护

 

19.2 实验程序的编写

 

19.2.1 驱动程序编写

 

19.2.2 编写测试 APP

 

19.3 运行测试

 

19.3.1 编译驱动程序

 

19.3.2 编译应用程序

 

19.3.3 运行测试

 

第20章 原子操作实验

 

20.1 原子操作

 

20.2 实验程序的编写

 

20.2.1 驱动程序编写

 

20.2.2 编写测试 APP

 

20.3 运行测试

 

20.3.1 编译驱动程序

 

20.3.2 编译应用程序

 

20.3.3 运行测试

 

第21章 自旋锁实验

 

21.1 自旋锁

 

21.2 实验程序的编写

 

21.2.1 驱动程序编写

 

21.2.2 编写测试 APP

 

21.3 运行测试

 

21.3.1 编译驱动程序

 

21.3.2 编译应用程序

 

21.3.3 运行测试

 

第22章 自旋锁死锁实验

 

22.1 自旋锁死锁

 

22.2 实验程序的编写

 

22.2.1 驱动程序编写

 

22.2.2 编写测试 APP

 

22.3 运行测试

 

22.3.1 编译驱动程序

 

22.3.2 编译应用程序

 

22.3.3 运行测试

 

第23章 信号量实验

 

23.1 信号量

 

23.2 实验程序的编写

 

23.2.1 驱动程序编写

 

23.2.2 编写测试 APP

 

23.3 运行测试

 

23.3.1 编译驱动程序

 

23.3.2 编译应用程序

 

23.3.3 运行测试

 

第24章 互斥锁实验

 

24.1 互斥锁

 

24.2 实验程序的编写

 

24.2.1 驱动程序编写

 

24.2.2 编写测试 APP

 

24.3 运行测试

 

24.3.1 编译驱动程序

 

24.3.2 编译应用程序

 

24.3.3 运行测试

 

 

 

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

 

第25章 IO模型引入实验

 

25.1 IO的概念

 

25.2 IO执行过程

 

25.3 IO模型的分类

 

第26章  阻塞IO实验

 

26.1 什么是等待队列

 

26.2 等待队列API函数

 

26.3 等待队列使用方法

 

26.4 实验程序编写

 

26.4.1 驱动程序编写

 

26.4.2 编写测试 APP

 

26.5运行测试

 

26.5.1编译驱动程序

 

26.5.2 编译应用程序

 

26.5.3 运行测试

 

第27章 非阻塞IO实验

 

27.1 非阻塞IO简介

 

27.2 实验程序编写

 

27.2.1 编写测试 APP

 

27.2.1 驱动程序编写

 

27.3 运行测试

 

27.3.1 编译驱动程序

 

27.3.2 编译应用程序

 

27.3.3 测试

 

第28章 IO多路复用实验

 

28.1 IO多路复用简介

 

28.2 实验程序编写

 

28.2.1 编写测试 APP

 

28.2.2 驱动程序编写

 

28.3 运行测试

 

28.3.1 编译驱动程序

 

28.3.2 编译应用程序

 

28.3.3 测试

 

第29章 信号驱动IO实验

 

29.1 信号驱动IO简介

 

29.2 实验程序编写

 

29.2.1 编写测试 APP

 

29.2.2 驱动程序编写

 

29.3 运行测试

 

29.3.1 编译程序

 

29.3.2 编译应用程序

 

29.3.3 测试

 

第30章 定时器实验   

 

30.1 Linux定期器

 

30.2 实验程序编写

 

30.3 运行测试

 

30.3.1 编译驱动程序

 

30.3.2 运行测试

 

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

 

31.1 实验程序编写

 

31.1.1 编写测试 APP

 

31.1.2 驱动程序编写

 

31.2 运行测试

 

31.2.1 编译驱动程序

 

31.2.2 编译应用程序

 

31.2.3 运行测试

 

第32章 Linux内核打印实验  

 

32.1 方法一:dmseg 命令

 

32.2 方法二:查看kmsg文件

 

32.3 方法三:调整内核打印等级

 

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

 

33.1 定位设备llseek

 

33.1.1 lseek函数的使用

 

33.1.2 驱动程序的完善

 

33.2 实验程序编写

 

33.2.1 编写测试 APP

 

33.2.2 驱动程序编写

 

33.3 运行测试

 

33.3.1 编译驱动程序

 

33.3.2 编译应用程序

 

33.3.3 运行测试

 

第34章 IOCTL驱动传参实验  

 

34.1 ioctl基础

 

34.2 实验程序编写

 

34.2.1 编写测试 APP

 

34.2.2 驱动程序编写

 

34.3 运行测试

 

34.3.1 编译驱动程序

 

34.3.2 编译应用程序

 

34.3.3 运行测试

 

第35章 IOCTL地址传参实验

 

35.1 实验程序编写

 

35.1.1 编写测试 APP

 

35.1.1 驱动程序编写

 

35.2 运行测试

 

35.2.1 编译驱动程序

 

35.2.2 编译应用程序

 

35.2.3 运行测试

 

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

 

36.1 ioctl控制定时器实验

 

36.1.1 编写测试 APP

 

36.1.2 驱动程序编写

 

36.2 运行测试

 

36.2.1 编译驱动程序

 

36.2.2 编译应用程序

 

36.2.3 运行测试

 

36.3 封装驱动API接口

 

36.4 运行测试

 

36.4.1 编译应用程序

 

36.4.2 运行测试

 

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

 

37.1 方法一:检测ioctl命令

 

37.2 方法二:检测传递地址是否合理

 

37.3 方法三:分支预测优化

 

第38章 驱动调试方法实验

 

38.1 方法1:dump_stack函数

 

38.2 方法2:WARN_ON(condition)函数

 

38.3 方法3:BUG_ON (condition)函数

 

38.4 方法4:panic (fmt...)函数

 

 

 

✦ 第五篇 中断

 

第39章 中断实验

 

39.1什么是中断?

 

39.1.1 中断的概念

 

39.1.2 中断的重要性

 

39.1.3 中断的上下半部

 

39.2中断子系统框架

 

39.2.1 中断控制器GIC

 

39.2.2 中断类型

 

39.2.3 中断号

 

39.2.4 中断申请函数

 

39.2.5 中断服务函数

 

39.3实验程序编写

 

39.4 运行测试

 

39.4.1 编译驱动程序

 

39.4.2 运行测试

 

第40章 中断申请流程

 

40.1 request_irq函数

 

40.2 request_threaded_irq函数

 

40.3 irq_desc结构体

 

40.4 irqaction 结构体

 

第41章 中断下文tasklet实验

 

41.1 什么是tasklet

 

41.2 tasklet相关接口函数

 

41.2.1 静态初始化函数

 

41.2.2 动态初始化函数

 

41.2.3 关闭函数

 

41.2.4 使能函数

 

41.2.5 调度函数

 

41.2.6 销毁函数

 

41.3 实验程序的编写

 

41.3.1 驱动程序编写

 

41.4 运行测试

 

41.4.1 编译驱动程序

 

41.4.2 运行测试

 

第42章 软中断实验

 

42.1 什么是软中断

 

42.2 软中断接口函数

 

42.3 实验程序的编写

 

42.3.1 驱动程序编写

 

42.4 运行测试

 

42.4.1 编译驱动程序

 

42.4.2 运行测试

 

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

 

第44章 共享工作队列实验

 

44.1 什么是工作队列

 

44.2 工作队列相关接口函数

 

44.2.1 初始化函数

 

44.2.2 调度/取消调度工作队列函数

 

44.3 实验程序的编写

 

44.3.1 驱动程序编写

 

44.4 运行测试

 

44.4.1 编译驱动程序

 

44.4.2 运行测试

 

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

 

45.1 工作队列相关结构体

 

45.2 工作队列相关接口函数

 

45.3 实验程序的编写

 

45.3.1 驱动程序编写

 

45.4 运行测试

 

45.4.1 编译驱动程序

 

45.4.2 运行测试

 

第46章 延迟工作实验

 

46.1 什么是延迟工作

 

46.2 延迟工作相关接口函数

 

46.2.1 初始化延迟工作函数

 

46.2.2 调度/取消调度 延迟工作函数

 

46.3 实验程序的编写

 

46.3.1 驱动程序编写

 

46.4 运行测试

 

46.4.1 编译驱动程序

 

46.4.2 运行测试

 

第47章 工作队列传参实验

 

47.1 工作队列传参

 

47.2实验程序的编写

 

47.2.1 驱动程序编写

 

47.3 运行测试

 

47.3.1 编译驱动程序

 

47.3.2 运行测试

 

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

 

48.1工作队列的实现

 

48.2 workqueue队列弊端

 

48.2 什么是并发管理工作队列

 

48.3 并发管理工作队列接口函数

 

48.4 实验程序的编写

 

45.4.1 驱动程序编写

 

48.5 运行测试

 

48.5.1 编译驱动程序

 

48.5.2 运行测试

 

第49章 中断线程化实验

 

49.1什么是中断线程化

 

49.2 中断线程化接口函数

 

49.3 实验程序的编写

 

49.3.1 驱动程序编写

 

49.4 运行测试

 

49.4.1 编译驱动程序

 

49.4.2 运行测试

 

✦第六篇 平台总线

 

第50章 平台总线模型介绍

 

50.1 什么是平台总线?

 

50.2 平台总线的优势

 

第51章 注册platform设备实验

 

51.1 注册platform设备

 

51.1.1 platform_device_register函数

 

51.1.2 platform_device_unregister函数

 

51.1.3 platform_device结构体

 

51.1.4 resource结构体

 

51.2 实验程序的编写

 

51.3 运行测试

 

51.3.1 编译驱动程序

 

51.3.2 运行测试

 

第52章 注册platform驱动实验

 

52.1注册platform驱动

 

52.1.1 platform_driver_register函数

 

52.1.2 platform_device_unregister函数

 

52.1.3 platform_driver结构体

 

52.2 实验程序的编写

 

52.3 运行测试

 

52.3.1 编译驱动程序

 

52.3.2 运行测试

 

第53章 probe函数编写实验

 

53.1 获取device资源

 

53.2 实验程序的编写

 

53.3 运行测试

 

53.3.1 编译驱动程序

 

53.3.2 运行测试

 

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

 

54.1 实验程序的编写

 

54.1.1 驱动程序编写

 

54.1.2 编写测试 APP

 

54.2 运行测试

 

54.2.1 编译驱动程序

 

54.2.2 编译应用程序

 

54.2.3 运行测试

 

 

 

B站搜:北京迅为电子, 在线观看视频教程

标签:驱动程序,RK3568,总线,编译,实验,测试,编写,运行,第六篇
From: https://www.cnblogs.com/topeet/p/17664894.html

相关文章

  • 【SPI】SPI总线协议及驱动框架
    SPI通讯协议SPI控制方式SPI采用主-从(master-slave))模式的控制的方式。一个Master设备可以通过提供Clock以及对slave设备进行片选来控制多个Slave设备,SPI协议还规定Slave设备的Clock由Master设备通过SCK管脚提供给Slave设备,Slave设备本身不能产生和控制Clock,没有Clock则Slave设......
  • 凌蒙派-RK3568开发板-基础外设类:简易HDF驱动
    1、案例简介该程序是基于OpenHarmony标准系统编写的基础外设类:简易HDF驱动。目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony2、基础知识2.1、OpenHarmonyHDF开发简介HDF(HardwareDriverFoun......
  • 初识CAN总线之物理层
    一、CAN简介CAN:ControllerAreaNetwork,控制局域网络,最早由德国BOSCH(博世)开发,,目前已经是国际标准(ISO11898),是当前应用最广泛的现场总线之一。CAN总线主要用于汽车的检测和控制,目的为适应汽车的“减少线束的数量”、“通过多个网络进行大量数据的高速传输”的需求。BOSCH......
  • 迅为RK3568开发板GPIO之外接模块
     在迅为RK3568开发板上有一组GPIO,可以用来外接各种外设模块,从面实现一系列好玩的功能,一起来看看各个模块合集吧    RFID模块:工作电流:13—20mA/直流3.3V空闲电流:10-13mA/直流3.3V休眠电流:<80UA峰值电流:<30mA工作频率:13.56MHz支持的卡类型:mifare1 S50.mifare1 S70.mif......
  • SIT1040Q 5V 供电,±40V 接口耐压,1Mbps 高速 CAN 总线收发器
    SIT1040Q是一款应用于CAN协议控制器和物理总线之间的接口芯片,可应用于卡车、公交、小汽车、工业控制等领域,速率可达到1Mbps,具有在总线与CAN协议控制器之间进行差分信号传输的能力。完全兼容“ISO11898”标准;符合AEC-Q100要求;内置过温保护;过流保护功能;显性超时......
  • 002 AHB总线
    一、AHB总线AHB是为提出高性能可综合设计的要求而产生的新一代AMBA总线。AMBAAHB是位于APB之上新一级的总线并且实现了高性能、高系统时钟频率系统的以下特征要求:z突发传输;z分块处理;z单周期总线主机移交;z单时钟沿操作;z非三态执行;z更宽的数据总线架构(64位或者128......
  • vue3探索——组件通信之事件总线
    Vue2.x使用EventBus进行组件通信,而Vue3.x推荐使用mitt.js。比起Vue实例上的EventBus,mitt.js好在哪里呢?首先它足够小,仅有200bytes,其次支持全部事件的监听和批量移除,它还不依赖Vue实例,所以可以跨框架使用,React或者Vue,甚至jQuery项目都能使用同一套库。安装使用yarn安装yarn......
  • 一块迅为RK3568开发板规划的学习路线
    B站可以搜索教程......
  • 全局事件总线
    全局事件总线——就是用来组件间通信使用的;可以理解为事件订阅main.js就一行代码Vue.prototype.$bus=newVue()1、组件种订阅this.$bus.on(eventName,function(params){})2、组件中发布this.$bus.$emit(eventName,params)解释:去官网可以看到一些用法:vm.$onvm.$emi......
  • platform总线详解
    转载:手把手教Linux驱动10-platform总线详解-知乎(zhihu.com)platform总线是学习linux驱动必须要掌握的一个知识点。本文参考已发布:Linux3.14内核一、概念嵌入式系统中有很多的物理总线:I2c、SPI、USB、uart、PCIE、APB、AHBlinux从2.6起就加入了一套新的驱动管理和注册的......