国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網

標題: 【瘋殼·嵌入式教程3】手把手教你做平板電腦-LCD 驅動實驗教程 [打印本頁]

作者: Linda-x    時間: 2022-8-19 18:36
標題: 【瘋殼·嵌入式教程3】手把手教你做平板電腦-LCD 驅動實驗教程
平板電腦
——瘋殼·嵌入式平板開發
LCD 驅動實驗教程





第一節 電路原理圖介紹

  下圖來源于文檔 3128_sdk_a02_20170325.pdf 中第 19 頁。
  圖一、從原理圖可以看出 LCD 是采用 mipi 接口和 cpu 相連的。


圖1

第二節 LCD 驅動框架及實現

  在 linux 內核中,顯示相關的驅動稱為 fb(framebuffer)驅動。在 RK31XX 的平臺上,為了盡可能的復用代碼,fb 驅動被分為 fb 框架相關的部分、LCDC 控制器相關的部分、LCD 屏幕相關的部分、LCD 電源操作相關的板級配置部分。
  a.fb 框架相關的代碼
    drivers/video/fbmem.c
    drivers/video/rockchip/rk_fb.c
    drivers/video/rockchip/rkfb_sysfs.c
    include/linux/rk_fb.h
    include/linux/rk_screen.h
  這部分代碼實現是fb  相關的框架,不涉及具體的硬件操作,所有的LCDC  驅動共用。其中 fbmem.c 為 linux 內核原生代碼,他向上提供和用戶空間交互的接口(open、read、write、ioctl 等),向下聯系平臺相關的 fb 驅動 rk_fb.c。
  b.LCDC 相關的代碼
  drivers/video/rockchip/lcdc/rk312x_lcdc.c
  這部分代碼和具體的 LCDC 控制器相關。
  c.LCD 屏幕配置相關代碼
  drivers/video/rockchip/screen/rk_screen.c
  rk_screen.c 是屏幕配置文件的共用代碼,重點介紹如下接口。  set_lcd_info:屏幕參數配置接口,所有的屏幕都會用到
  get_fb_size:根據屏幕的分辨率計算需要分配多大的 fb 空間,對于三 buffer,計算公式為 X*Y*4*3,雙 buffer 計算公式為 X*Y*4*2,目前我們都使用三 buffer。
  建議每個項目相關的人員都要看下 rk_screen.c 中相關接口的實現,以方便開發中遇到的 debug 問題。

第三節 實驗代碼 --- 快速判斷 RGB 顏色是否有顛倒

  在有些項目上,由于 LCD 屏幕自身原因或者硬件連接原因,會導致 RGB 顏色出現顛倒, 比如 R 和 G 反了、或者 R 和 B 反了、或者 B 和 G 反了,導致顯示顏色出現異常。這種情況可以通過軟件配置進行糾正。首先,要判斷出哪兩種顏色反掉了,方法如下:通過RK 系統中自帶的 IO 命令向 FB 里面寫單元色紅色(0x00ff0000)、綠色(0x0000ff00)、藍色(0x000000ff)看對應的顯示效果,就可以判斷是哪兩種顏色反掉了。具體方法如  下:
(1)在串口里面執行 stop 命令(需要 root 權限),這樣 Android 不再進行屏幕更新,以免影響測試。
(2)然后查詢 LCDC 寄存器,獲取當前 FB 地址:因為 RK 采用三 buffer 的方式,這里有可能存在地址不一樣的情況,所以執行 io 命令前盡量先敲如下命令看下地址是什么。


圖2
  用 io 命令依次向該地址寫入 RGB 單元色數據,看屏幕對應的顯示情況:
  io -w -4 -l 0x3e8000 0x90fe8000 0x00ff0000 紅色
  io -w -4 -l 0x3e8000 0x90fe8000 0x0000ff00 綠色
  io -w -4 -l 0x3e8000 0x90fe8000 0x000000ff 藍色
  注意-l    參數后面跟的是寫入數據的長度,這里都是滿屏寫入,我使用的設備的屏幕分辨率為 1280*800,因此一幀數據的長度為 1280*800*4 = 0x3e8000。正常情況下,依次在串口中輸入上面三個命令,屏幕上依次顯示紅、綠、藍三種顏色,如果顯示的某種顏色  不對,比如寫入紅色,屏幕上顯示的卻是藍色,如果 R 和 B 反了,則應該在屏幕驅動中#define SWAP_RB 1,對 RB 進行交換。如果向 FB 里面寫入 RGB 中任意一種的單元色屏而屏幕顯示的圖像不是這三個單元色中的任意一種,那就有可能是屏幕有問題,或者  硬件設計有問題,或者中間的轉換芯片比如 LVDS 有問題,或者 LVDS_FORMAT 設置的不對。

第四節 實驗現象

  為什么敲入了屏幕全部變紅色命令(io -w -4 -l 0x3e8000 0x90fe8000 0x00ff0000),屏幕并沒有任何反應? --- IOMMU(input/output memory management unit),Device 的IOMMU 類似于 CPU 的 MMU。
  首先因為設備默認打開了 iommu 功能,所以操作時候有可能操作的地址就不是真實的物理地址,而是虛擬地址。這樣就和 io 命令沖突了,io 命令是必須操作物理地址的。修改如下,DTS 中增加如下選項:
&lcdc {
     status = "okay";
     backlight = <&backlight>;
     rockchip,iommu-enabled = <0>;
     ......




圖3




文件下載請點擊: 3、LCD驅動實驗教程.pdf (658.04 KB)







歡迎光臨 電子工程網 (http://www.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 在线免费h | 欧美日韩乱 | 男女做羞羞的视频 | 色男人综合 | 亚洲香蕉在线观看 | 男人阁久久 | 欧美亚洲一区二区三区在线 | 日本亚洲国产精品久久 | 国产香蕉在线视频 | 精品特级一级毛片免费观看 | 日韩黄色一级大片 | 狠狠做狠狠做综合日日 | 黄色欧美网站 | 成人午夜精品网站在线观看 | 亚洲色图综合 | 老师的小兔子好大好软水好多视频 | 黄页在线免费观看 | 91av视频在线 | 97日韩 | 精品欧美一区视频在线观看 | 精品国产免费观看一区高清 | 精品伊人网 | 最新国产精品视频 | 免费韩国一级毛片 | 日韩精品久久久久久 | 三级毛片在线看 | 欧美日韩在线一区 | 激情亚洲视频 | 日韩精品视频福利资源站 | 色五五月五月开 | 99热99热| 天天综合天天操 | 免费视频亚洲 | 久久香蕉国产线看精品 | 看看免费a一片欧 | 在线日本中文字幕 | 青青青国产色视频在线观看 | 手机看片1204国内基地在线 | 久久国产麻豆 | 国产综合激情在线亚洲第一页 | 国产v视频 |