百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041
资料下载coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
视频观看
百问网驱动大全
编程_配置LCD控制器之寄存器操作_基于IMX6ULL参考资料,GIT仓库里:
-
芯片资料
IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULLRM.pdf
《Chapter 34 Enhanced LCD Interface (eLCDIF)》
-
IMX6ULL的LCD裸机程序
IMX6ULL\source\03_LCD\05_参考的裸机源码\03_font_test
-
内核自带的IMX6ULL LCD驱动程序
- 驱动源码:
Linux-4.9.88\drivers\video\fbdev\mxsfb.c
- 设备树:
arch/arm/boot/dts/imx6ull.dtsi
arch/arm/boot/dts/100ask_imx6ull-14x14.dts
- 驱动源码:
-
本节视频编写好的代码
IMX6ULL\source\03_LCD\10_lcd_drv_lcdcontroller_reg_config_use_devicetree
-
引脚配置工具/设备树生成工具
- 打开:http://download.100ask.net/
- 找到开发板:“100ASK_IMX6ULL_PRO开发板”
- 下载开发板配套资料
- 下载完后,工具在如下目录里:
LCD驱动程序的核心就是:
- 分配fb_info
- 设置fb_info
- 注册fb_info
- 硬件相关的设置
硬件相关的设置又可以分为3部分:
- 引脚设置
- 时钟设置
- LCD控制器设置
framebuffer-mylcd {
compatible = "100ask,lcd_drv";
pinctrl-names = "default";
pinctrl-0 = ;
backlight-gpios = ;
clocks = ,
;
clock-names = "pix", "axi";
display = ;
display0: display {
bits-per-pixel = ;
bus-width = ;
display-timings {
native-mode = ;
timing0: timing0_1024x768 {
clock-frequency = ;
hactive = ;
vactive = ;
hfront-porch = ;
hback-porch = ;
hsync-len = ;
vback-porch = ;
vfront-porch = ;
vsync-len = ;
hsync-active = ;
vsync-active = ;
de-active = ;
pixelclk-active = ;
};
};
};
};
3. 编程
3.1 从设备树获得参数
时序参数、引脚极性等信息,都被保存在一个display_timing结构体里:
参考内核文件:
-
drivers\video\of_display_timing.c
-
drivers\video\fbdev\mxsfb.c
根据芯片手册,一个一个设置寄存器:
- Framebuffer地址设置
- Framebuffer中数据格式设置
- LCD时序参数设置
- LCD引脚极性设置
百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041
百问网技术论坛: http://bbs.100ask.net/
百问网嵌入式视频官网: https://www.100ask.net/index
百问网开发板: 淘宝:https://100ask.taobao.com/ 天猫:https://weidongshan.tmall.com/