增加: 03_LCD: 07_硬件_8080接口LCD时序分析,08_硬件_TFT-RGB接口LCD时序分析

This commit is contained in:
weidongshan
2021-01-11 14:05:34 +08:00
parent b0d7f902fd
commit ac69ac315c
123 changed files with 320 additions and 15 deletions

View File

@@ -9,9 +9,9 @@ drivers\video\fbdev\s3c2410fb.c
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\02_LCD\01_fb_info\lcd_drv.c
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\01_fb_info\lcd_drv.c
或:
doc_and_source_for_drivers\IMX6ULL\source\02_LCD\01_fb_info\lcd_drv.c
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\01_fb_info\lcd_drv.c
```
**注意**

View File

@@ -3,9 +3,9 @@
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\02_LCD\02_lcd_drv_qemu\lcd_drv.c
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\02_lcd_drv_qemu\lcd_drv.c
或:
doc_and_source_for_drivers\IMX6ULL\source\02_LCD\02_lcd_drv_qemu\lcd_drv.c
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\02_lcd_drv_qemu\lcd_drv.c
```
目前百问网主推的开发板是IMX6ULL、STM32MP157。

View File

@@ -4,9 +4,9 @@
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\02_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
或:
doc_and_source_for_drivers\IMX6ULL\source\02_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
```

View File

@@ -0,0 +1,82 @@
## 结合APP分析LCD驱动程序
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\04_fb_test
或:
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\04_fb_test
```
### 1. open
```shell
app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0
--------------------------------------------------------------
kernel:
fb_open // fbmem.c
struct fb_info *info;
info = get_fb_info(fbidx);
if (info->fbops->fb_open) {
res = info->fbops->fb_open(info,1); // 硬件相关的驱动
if (res)
module_put(info->fbops->owner);
}
```
### 2. 获得可变信息(含有分辨率等)
```shell
app: ioctl(fd, FBIOGET_VSCREENINFO, &fb_info->var);
-------------------------------------------------------------------------
kernel:
fb_ioctl // fbmem.c
struct fb_info *info = file_fb_info(file);
do_fb_ioctl(info, cmd, arg);
var = info->var; // 硬件相关的驱动设置的
ret = copy_to_user(argp, &var, sizeof(var)) ? -EFAULT : 0;
```
### 3. 获得固定信息(含有显存信息)
```shell
app: ioctl(fd, FBIOGET_FSCREENINFO, &fb_info->fix);
-------------------------------------------------------------------------
kernel:
fb_ioctl // fbmem.c
struct fb_info *info = file_fb_info(file);
do_fb_ioctl(info, cmd, arg);
fix = info->fix; // 硬件相关的驱动设置的
ret = copy_to_user(argp, &fix, sizeof(fix)) ? -EFAULT : 0;
```
### 4. mmap
```shell
appvoid *ptr = mmap(0,
fb_info->var.yres_virtual * fb_info->fix.line_length,
PROT_WRITE | PROT_READ,
MAP_SHARED, fd, 0);
-------------------------------------------------------------------------
kernel:
fb_mmap // fbmem.c
struct fb_info *info = file_fb_info(file);
start = info->fix.smem_start;
len = info->fix.smem_len;
return vm_iomap_memory(vma, start, len);
```
### 5. 绘制图片

View File

@@ -0,0 +1,37 @@
## 硬件\_8080接口LCD时序分析
参考资料GIT仓库里
* 8080接口LCD
* 接口原理图:`其他资料\STM32F103\原理图\100ASK_STM32F103_V10_0707FINAL.pdf`
* LCD数据手册
* `其他资料\STM32F103\datasheet\LCD显示屏资料\3.5寸\LCD_3.5寸_320x480_ILI9488_液晶显示模块规格书.pdf`
* `其他资料\STM32F103\datasheet\LCD显示屏资料\3.5寸\ILI9488驱动芯片数据手册.pdf`
### 1. 接口原理图
#### 1.1 8080接口原理图
![image-20210108143358182](pic/02_LCD驱动/009_8080-sch.png)
#### 1.2 TFT-RGB接口原理图
![image-20210108144641203](pic/02_LCD驱动/010_tft_rgb_sch.png)
### 2. 8080接口时序图

View File

@@ -0,0 +1,33 @@
## 硬件\_TFT-RGB接口LCD时序分析
参考资料GIT仓库里
* * TFT-RGB LCD
* 接口原理图:
* `IMX6ULL\开发板配套资料\原理图\Base_board\100ask_imx6ull_v1.1.pdf``
* ``STM32MP157\开发板配套资料\原理图\01_Base_board(底板)\100ASK_STM32MP157_PRO_V11_底板原理图.pdf`
* LCD数据手册(这2个文件是一样的)
* `IMX6ULL\开发板配套资料\datasheet\Base_board\100ask_imx6ull底板_规格书\7.0-13SPEC(7寸1024600TN-RGB).pdf``
* `STM32MP157\开发板配套资料\datasheeet\03_7寸LCD模块\LCD数据手册7.0-13SPEC(7寸1024600TN-RGB).pdf`
### 1. 接口原理图
#### 1.1 TFT-RGB接口原理图
![image-20210108144641203](pic/02_LCD驱动/010_tft_rgb_sch.png)
### 2. TFT-RGB接口时序图
#### 2.1 LCD时序图
![image-20210109154452505](pic/02_LCD驱动/011_tft-rgb_timing.png)
#### 2.2 LCD控制器时序图
![image-20210109154234559](pic/02_LCD驱动/012_lcd_controller_timing.png)

View File

Before

Width:  |  Height:  |  Size: 463 KiB

After

Width:  |  Height:  |  Size: 463 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 317 KiB

After

Width:  |  Height:  |  Size: 317 KiB

View File

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 234 KiB

View File

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 125 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -3,7 +3,7 @@
这是连载课程,会涉及如下内容:
![](all_drivers.jpg)
## 2. 适用单板
@@ -55,8 +55,9 @@ git clone https://e.coding.net/weidongshan/doc_and_source_for_drivers.git
## 5. 更新记录
2020.06.18 完结"同步与互斥"
2021.01.05 正式启动"驱动大全"的录制,发布"LCD驱动"
* 2020.06.18 完结"同步与互斥"
* 2021.01.05 正式启动"驱动大全"的录制,发布"LCD驱动"
* 2021.01.11 发布"LCD驱动"07\_硬件\_8080接口LCD时序分析、08\_硬件\_TFT-RGB接口LCD时序分析

View File

@@ -9,9 +9,9 @@ drivers\video\fbdev\s3c2410fb.c
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\02_LCD\01_fb_info\lcd_drv.c
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\01_fb_info\lcd_drv.c
或:
doc_and_source_for_drivers\IMX6ULL\source\02_LCD\01_fb_info\lcd_drv.c
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\01_fb_info\lcd_drv.c
```
**注意**

View File

@@ -3,9 +3,9 @@
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\02_LCD\02_lcd_drv_qemu\lcd_drv.c
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\02_lcd_drv_qemu\lcd_drv.c
或:
doc_and_source_for_drivers\IMX6ULL\source\02_LCD\02_lcd_drv_qemu\lcd_drv.c
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\02_lcd_drv_qemu\lcd_drv.c
```
目前百问网主推的开发板是IMX6ULL、STM32MP157。

View File

@@ -4,9 +4,9 @@
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\02_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
或:
doc_and_source_for_drivers\IMX6ULL\source\02_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\03_lcd_drv_qemu_ok\lcd_drv.c
```

View File

@@ -0,0 +1,82 @@
## 结合APP分析LCD驱动程序
本节视频对应源码在GIT仓库中位置如下(这2个文件是完全一样的)
```shell
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\04_fb_test
或:
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\04_fb_test
```
### 1. open
```shell
app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0
--------------------------------------------------------------
kernel:
fb_open // fbmem.c
struct fb_info *info;
info = get_fb_info(fbidx);
if (info->fbops->fb_open) {
res = info->fbops->fb_open(info,1); // 硬件相关的驱动
if (res)
module_put(info->fbops->owner);
}
```
### 2. 获得可变信息(含有分辨率等)
```shell
app: ioctl(fd, FBIOGET_VSCREENINFO, &fb_info->var);
-------------------------------------------------------------------------
kernel:
fb_ioctl // fbmem.c
struct fb_info *info = file_fb_info(file);
do_fb_ioctl(info, cmd, arg);
var = info->var; // 硬件相关的驱动设置的
ret = copy_to_user(argp, &var, sizeof(var)) ? -EFAULT : 0;
```
### 3. 获得固定信息(含有显存信息)
```shell
app: ioctl(fd, FBIOGET_FSCREENINFO, &fb_info->fix);
-------------------------------------------------------------------------
kernel:
fb_ioctl // fbmem.c
struct fb_info *info = file_fb_info(file);
do_fb_ioctl(info, cmd, arg);
fix = info->fix; // 硬件相关的驱动设置的
ret = copy_to_user(argp, &fix, sizeof(fix)) ? -EFAULT : 0;
```
### 4. mmap
```shell
appvoid *ptr = mmap(0,
fb_info->var.yres_virtual * fb_info->fix.line_length,
PROT_WRITE | PROT_READ,
MAP_SHARED, fd, 0);
-------------------------------------------------------------------------
kernel:
fb_mmap // fbmem.c
struct fb_info *info = file_fb_info(file);
start = info->fix.smem_start;
len = info->fix.smem_len;
return vm_iomap_memory(vma, start, len);
```
### 5. 绘制图片

View File

@@ -0,0 +1,37 @@
## 硬件\_8080接口LCD时序分析
参考资料GIT仓库里
* 8080接口LCD
* 接口原理图:`其他资料\STM32F103\原理图\100ASK_STM32F103_V10_0707FINAL.pdf`
* LCD数据手册
* `其他资料\STM32F103\datasheet\LCD显示屏资料\3.5寸\LCD_3.5寸_320x480_ILI9488_液晶显示模块规格书.pdf`
* `其他资料\STM32F103\datasheet\LCD显示屏资料\3.5寸\ILI9488驱动芯片数据手册.pdf`
### 1. 接口原理图
#### 1.1 8080接口原理图
![image-20210108143358182](pic/02_LCD驱动/009_8080-sch.png)
#### 1.2 TFT-RGB接口原理图
![image-20210108144641203](pic/02_LCD驱动/010_tft_rgb_sch.png)
### 2. 8080接口时序图

View File

@@ -0,0 +1,33 @@
## 硬件\_TFT-RGB接口LCD时序分析
参考资料GIT仓库里
* * TFT-RGB LCD
* 接口原理图:
* `IMX6ULL\开发板配套资料\原理图\Base_board\100ask_imx6ull_v1.1.pdf``
* ``STM32MP157\开发板配套资料\原理图\01_Base_board(底板)\100ASK_STM32MP157_PRO_V11_底板原理图.pdf`
* LCD数据手册(这2个文件是一样的)
* `IMX6ULL\开发板配套资料\datasheet\Base_board\100ask_imx6ull底板_规格书\7.0-13SPEC(7寸1024600TN-RGB).pdf``
* `STM32MP157\开发板配套资料\datasheeet\03_7寸LCD模块\LCD数据手册7.0-13SPEC(7寸1024600TN-RGB).pdf`
### 1. 接口原理图
#### 1.1 TFT-RGB接口原理图
![image-20210108144641203](pic/02_LCD驱动/010_tft_rgb_sch.png)
### 2. TFT-RGB接口时序图
#### 2.1 LCD时序图
![image-20210109154452505](pic/02_LCD驱动/011_tft-rgb_timing.png)
#### 2.2 LCD控制器时序图
![image-20210109154234559](pic/02_LCD驱动/012_lcd_controller_timing.png)

View File

Before

Width:  |  Height:  |  Size: 463 KiB

After

Width:  |  Height:  |  Size: 463 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 317 KiB

After

Width:  |  Height:  |  Size: 317 KiB

View File

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 234 KiB

View File

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 125 KiB

View File

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Some files were not shown because too many files have changed in this diff Show More