11_编程_LCD驱动程序框架_使用设备树#

编程_LCD驱动程序框架_使用设备树#

参考资料,GIT仓库里:

  • 基于这个程序修改:

    • IMX6ULL\source\03_LCD\03_lcd_drv_qemu_ok

    • STM32MP157\source\A7\03_LCD\03_lcd_drv_qemu_ok

  • 参考:内核自带的示例驱动程序

    • Linux驱动源码:drivers/video/fbdev/simplefb.c

    • 设备树:

      • arch/arm/boot/dts/sun4i-a10.dtsi

  • 本节视频编写好的代码

    • IMX6ULL\source\03_LCD\06_lcd_drv_framework_use_devicetree

    • STM32MP157\source\A7\03_LCD\06_lcd_drv_framework_use_devicetree

1. 说明#

Linux驱动程序 = 驱动程序框架 + 硬件编程。 在前面已经基于QEMU编写了LCD驱动程序,对LCD驱动程序的框架已经分析清楚。 核心就是:

  • 分配fb_info

  • 设置fb_info

  • 注册fb_info

  • 硬件相关的设置

本节课程我们基于设备树来编写驱动程序。

2. 入口函数注册platform_driver#

3. 设备树有对应节点#

                framebuffer-mylcd {
                        compatible = "100ask,lcd_drv";
                };

4. 编写probe函数#

  • 分配fb_info

  • 设置fb_info

  • 注册fb_info

  • 硬件相关的设置

    • 引脚设置

    • 时钟设置

    • LCD控制器设置