嵌入式Linux应用开发完全手册第2版
latest
  • 第一篇. 韦东山全系列视频介绍及资料下载
  • 第二篇. Linux基本操作与开发工具使用
  • 第三篇. 开发板快速上手
  • 第四篇. 嵌入式Linux应用开发基础知识
  • 第五篇. 嵌入式Linux驱动开发基础知识
嵌入式Linux应用开发完全手册第2版
  • Docs »
  • <no title>
  • Edit on GitHub

  • 第五篇. 嵌入式Linux驱动开发基础知识
    • 嵌入式后Linux驱动开发基础知识的引导与说明
      • 打算讲什么、怎么讲?
      • 需要做什么准备工作
    • Hello驱动(不涉及硬件操作)
      • APP打开的文件在内核中如何表示
      • 打开字符设备节点时,内核中也有对应的struct file
      • 请猜猜怎么编写驱动程序
      • 请不要啰嗦,表演你的代码吧
        • 写驱动程序
        • 写测试程序
        • 测试
      • Hello驱动中的一些补充知识
        • module_init/module_exit的实现
        • register_chrdev的内部实现
        • class_destroy/device_create浅析
    • 硬件知识_LED原理图
      • 先来讲讲怎么看原理图
    • 普适的GPIO引脚操作方法==
      • GPIO模块一般结构
      • GPIO寄存器操作
      • GPIO的其他功能:防抖动、中断、唤醒
    • 具体单板的GPIO操作方法
      • AM335X的GPIO操作方法
        • AM335X的GPIO模块结构
        • AM335X的GPIO相关寄存器
        • set-and-clear协议
      • RK3288的GPIO操作方法
        • RK3288的GPIO模块结构
        • RK3288的GPIO相关寄存器
      • RK3399的GPIO操作方法
        • RK3399的GPIO模块结构
        • RK3399的GPIO相关寄存器
      • IMX6ULL的GPIO操作方法
        • IMX6ULL的GPIO模块结构
        • CCM用于设置是否向GPIO模块提供时钟
        • IOMUXC:引脚的模式(Mode、功能)
        • GPIO模块内部
        • 怎么编程
          • 读GPIO
          • 写GPIO
    • LED驱动程序框架
      • 回顾字符设备驱动程序框架
      • 对于LED驱动,我们想要什么样的接口?
      • LED驱动要怎么写,才能支持多个板子?分层。
      • 写代码
        • 驱动程序
        • 把LED的操作抽象出一个led_operations结构体
        • 驱动程序的上层:file_operations结构体
        • 测试程序
        • 上机测试
      • 课后作业
    • 具体单板的LED驱动程序
      • 怎么写LED驱动程序?
      • AM335X的LED驱动程序
        • 原理图
        • 所涉及的寄存器操作
        • 写程序
        • 配置内核去掉原有LED驱动
        • 课后作业
      • RK3288和RK3399的LED驱动程序
        • 原理图
          • fireflye RK3288的LED原理图
          • firefly RK3399的LED原理图
        • 所涉及的寄存器操作
          • RK3288的GPIO8_A1引脚
          • RK3399的GPIO2_D3引脚
        • 写程序
          • RK3288
          • RK3399
        • 上机实验
          • RK3288
          • RK3399
        • 课后作业
      • 野火/正点原子IMX6ULL的LED驱动程序
        • 原理图
          • 野火fire_imx6ull-pro开发板
          • 正点原子Atk_imx6ull-alpha开发板
        • 所涉及的寄存器操作
          • 野火fire_imx6ull-pro 开发板
          • 正点原子Atk_imx6ull-alpha开发板
        • 写程序
          • 野火fire_imx6ull-pro开发板
          • 正点原子Atk_imx6ull-alpha开发板
        • 上机实验
          • 野火fire_imx6ull-pro 开发板
          • 正点原子Atk_imx6ull-alpha开发板
        • 课后作业
      • 百问网IMX6ULL-QEMU的LED驱动程序
        • 看原理图确定引脚及操作方法
        • 所涉及的寄存器操作
        • 写程序
        • 上机实验
        • 课后作业
    • 驱动设计的思想:面向对象/分层/分离
      • 面向对象
      • 分层
      • 分离
      • 写示例代码
      • 课后作业
    • 驱动进化之路:总线设备驱动模型
      • 驱动编写的3种方法
        • 传统写法
        • 总线设备驱动模型
        • 设备树
      • 在Linux中实现“分离”:Bus/Dev/Drv模型
      • 匹配规则
        • 最先比较:platform_device. driver_override和platform_driver.driver.name
        • 然后比较:platform_device. name和platform_driver.id_table[i].name
        • 最后比较:platform_device.name和platform_driver.driver.name
        • 函数调用关系
      • 常用函数
        • 注册/反注册
        • 获得资源
      • 怎么写程序
        • 分配/设置/注册platform_device结构体
        • 分配/设置/注册platform_driver结构体
      • 课后作业
    • LED模板驱动程序的改造:总线设备驱动模型
      • 原来的框架
      • 要实现的框架===
      • 写代码
        • 注意事项
        • 实现platform_device结构体
        • 实现platform_driver结构体
      • 课后作业
    • 驱动进化之路:设备树的引入及简明教程
      • 设备树的引入与作用
      • 设备树的语法
        • Devicetree格式
          • DTS文件的格式
          • node的格式
          • properties的格式
        • dts文件包含dtsi文件
        • 常用的属性
          • address-cells、#size-cells
          • compatible
          • model
          • status
          • reg
          • name(过时了,建议不用)
          • device_type(过时了,建议不用)
        • 常用的节点(node)
          • 根节点
          • CPU节点
          • memory节点
          • chosen节点
      • 编译、更换设备树
        • 在内核中直接make
        • 手工编译
        • 给开发板更换设备树文件
          • 对于100ask-am335x 单板
          • 对于firefly-rk3288
          • 对于firefly的roc-rk3399-pc
          • 对于百问网使用QEMU模拟的IMX6ULL板子
          • 对于野火imx6ull-pro
          • 对于正点原子imx6ull-alpha
        • 板子启动后查看设备树
      • 内核对设备树的处理
        • dtb中每一个节点都被转换为device_node结构体
        • 哪些设备树节点会被转换为platform_device
        • 怎么转换为platform_device
      • platform_device如何与platform_driver配对
        • 最先比较:是否强制选择某个driver
        • 然后比较:设备树信息
        • 接下来比较:platform_device_id
        • 最后比较:platform_device.name和platform_driver.driver.name
        • 一个图概括所有的配对过程
      • 没有转换为platform_device的节点,如何使用
      • 内核里操作设备树的常用函数
        • 内核中设备树相关的头文件介绍
          • 处理DTB
          • 处理device_node
          • 处理 platform_device
        • platform_device相关的函数
          • of_find_device_by_node
          • platform_get_resource
        • 有些节点不会生成platform_device,怎么访问它们
          • 找到节点
          • 找到属性
          • 获取属性的值
      • 怎么修改设备树文件
        • 使用芯片厂家提供的工具
        • 看绑定文档
        • 参考同类型单板的设备树文件
        • 网上搜索
        • 实在没办法时, 只能去研究驱动源码
    • LED模板驱动程序的改造:设备树
      • 总结3种写驱动程序的方法
      • 怎么使用设备树写驱动程序
        • 设备树节点要与platform_driver能匹配
        • 设备树节点指定资源,platform_driver获得资源
      • 开始编程
        • 修改设备树添加led设备节点
          • 对于100ask-am335x 单板
          • 对于firefly-rk3288
          • 对于firefly的roc-rk3399-pc
          • 对于百问网使用QEMU模拟的IMX6ULL板子
          • 对于野火imx6ull-pro
          • 对于正点原子imx6ull-alpha
        • 修改platform_driver的源码
      • 上机实验
      • 调试技巧
        • 设备树的信息
        • platform_device的信息
        • platform_driver的信息
      • 课后作业
    • APP怎么读取按键值
      • 妈妈怎么知道孩子醒了
      • APP读取按键的4种方法
        • 查询方式
        • 休眠-唤醒方式
        • poll方式
        • 异步通知方式
          • 异步通知的原理:发信号=====
          • 应用程序之间发信号示例代码
        • 驱动程序提供能力,不提供策略
    • 查询方式的按键驱动程序_编写框架
      • LED驱动回顾
      • 按键驱动编写思路
      • 编程:先写框架
        • 把按键的操作抽象出一个button_operations结构体
        • 驱动程序的上层:file_operations结构体
      • 测试
      • 课后怎业
    • 具体单板的按键驱动程序(查询方式)
      • GPIO操作回顾
      • AM335X的按键驱动程序(查询方式)
        • 先看原理图确定引脚及操作方法
        • 再看芯片手册确定寄存器及操作方法
        • 编程
          • 程序框架
          • 硬件相关的代码
        • 测试
        • 课后作业
      • RK3288的按键驱动程序(查询方式)
        • 先看原理图确定引脚及操作方法
        • 再看芯片手册确定寄存器及操作方法
        • 编程
          • 程序框架
          • 硬件相关的代码
        • 测试
        • 课后作业
      • RK3399的按键驱动程序(查询方式)
        • 先看原理图确定引脚及操作方法
        • 再看芯片手册确定寄存器及操作方法
        • 编程
          • 程序框架
          • 硬件相关的代码
        • 测试
        • 课后作业
      • 百问网IMX6ULL-QEMU的按键驱动程序(查询方式)
        • 先看原理图确定引脚及操作方法
        • 再看芯片手册确定寄存器及操作方法
        • 编程
          • 程序框架
          • 硬件相关的代码
        • 测试
        • 课后作业
    • 异常与中断的概念及处理流程
      • 中断的引入
        • 妈妈怎么知道孩子醒了
        • 嵌入系统中也有类似的情况
      • 中断的处理流程
      • 异常向量表
      • 参考资料
    • 常见问题
      • 安装驱动时version magic不匹配
Next Previous

© Copyright 2019, weidongshan www.100ask.net Revision cc9cf71a.

Built with Sphinx using a theme provided by Read the Docs.