1. 程式人生 > >應用dts在am335x上移植LCD(一)

應用dts在am335x上移植LCD(一)

TI的LCD控制器驅動是非常完善的,共通的地方已經由驅動封裝好了,與按鍵一樣,我們可以通過DTS配置完成LCD的顯示。下面,我們來討論下使用DTS方式配置核心完成LCD驅動的思路。

  (1)初步分析

  由於TQ335x使用的晶片是AM335x,故仍然可以參考am335x-evm.dts。當然,am335x-evmsk.dts、am335x-beagbone.dts都可以。本文以am335x-evm.dts為例。大體上瀏覽下DTS檔案,可以發現兩個醒目的節點:一個是panel,一個是backlight。接下來我們逐個分析。

  (2)panel節點資訊分析及配置

  從panel節點可以獲得如下資訊:

  1. 匹配核心驅動的關鍵詞是:"ti,tilcdc,panel",可以通過這個關鍵字找到相應的驅動。

  2. 管腳配置在節點lcd_pins_s0內

  3. panel-info中可以配置LCD的硬體資訊,如LCD的解析度等

  4. display-times中記錄了LCD刷屏的相關時序。

  其中,panel-info和display-times需要去LCD手冊中查詢,管腳配置需要根據AM335x的晶片手冊、資料手冊及TQ335x的原理圖確定,驅動則需要去核心的driver目錄下查詢。下面,我一一解決上述幾個問題:

  首先是設定panel-info和display-times。我的TQ335x是用的我除錯TQ210時使用的觸控式螢幕,型號是TN92,這個屏是800*480的解析度,因此,panel-info與evm開發板的配置是相同的,可以不做任何修改。但是,不同螢幕的display-times一般是不相同的,因此,需要查閱觸控式螢幕的手冊來確認display-times。

  TN92的水平掃描時序如下表:

  垂直掃描時序如下圖:

  但是,如果對LCD各引數不怎麼熟悉的話,很難建立這兩個表與DTS中display-times的關係,這時應該去查閱一下linux核心的文件和晶片手冊。在核心文件:”Documentation/devicetree/bindings/video/display-timing.txt"有相關的記載,該檔案中有形象的描述,具體如下:

  +----------+-------------------------------------+----------+-------+

  | | ↑ | | |

  | | |vback_porch | | |

  | | ↓ | | |

  +----------#######################################----------+-------+

  | # ↑ # | |

  | # | # | |

  | hback # | # hfront | hsync |

  | porch # | hactive # porch | len |

  |<-------->#<-------+--------------------------->#<-------->|<----->|

  | # | # | |

  | # |vactive # | |

  | # | # | |

  | # ↓ # | |

  +----------#######################################----------+-------+

  | | ↑ | | |

  | | |vfront_porch | | |

  | | ↓ | | |

  +----------+-------------------------------------+----------+-------+

  | | ↑ | | |

  | | |vsync_len | | |

  | | ↓ | | |

  +----------+-------------------------------------+----------+-------+

  AM335x的技術參考手冊中可以找到相關的暫存器解釋,如下:

  綜合這三份資料,很容易確定下LCD的屏的時序引數的範圍(需要強調的是,上述引數不一定精確,還需要使用圖片實機測下效果),經過多次實驗,最終確定下了LCD的時序引數,詳情如下:

  panel {

  compatible = "ti,tilcdc,panel";

  status = "okay";

  pinctrl-names = "default";

  pinctrl-0 = <&lcd_pins_s0>;

  panel-info {

  ac-bias = <255>;

  ac-bias-intrpt = <0>;

  dma-burst-sz = <16>;

  bpp = <32>;

  fdd = <0x80>;

  sync-edge = <0>;

  sync-ctrl = <1>;

  raster-order = <0>;

  fifo-th = <0>;

  };

  display-timings {

  800x480p62 {

  clock-frequency = <30000000>;

  hactive = <800>;

  vactive = <480>;

  hfront-porch = <214>;

  hback-porch = <40>;

  hsync-len = <4>;

  vback-porch = <20>;

  vfront-porch = <23>;

  vsync-len = <4>;

  hsync-active = <0>;

  vsync-active = <0>;

  };

  };

  };

  時序確定下來之後需要關注的就是管腳配置,由於am335x集成了LCD控制,該控制器與LCD的連線方式是通過GPIO管腳複用實現的,而evm開發板與TQ335x的LCD都接在了同一個LCD控制器上,因此,直接使用原有的管腳配置即可。這一點也可以通過閱讀TQ335x的原理圖確認,這裡我就不再分析了。

  (3)backlight節點分析及配置

  從backlight節點中可以獲得如下資訊:

  1. 匹配核心驅動的關鍵詞是"pwm-backlight"。

  2. 使用的ECAP0進行PWM輸出。

  3. 有8個亮度等級。

  4. 預設的亮度等級是8,也就是最亮。

  瞭解以上資訊後需要查閱TQ335x手冊,弄清楚backlight控制管腳是如何連線的。通過分析TQ335x的原理圖可知,TQ335x的背光控制也是使用PWM方式控制,且該引腳接到AM335x的ECAP2_IN_PWM2_OUT管腳上,而evm開發板是接在ECAP0_IN_PWM0_OUT管腳上的,因此,需要修改DTS配置才能正常使用TQ335x的背光功能。思路是將DTS中的背光配置由EACP0改為EACP2,下面是修改的步驟:

  Step1. 將backlight節點中&eacp0改為&eacp2。

  Step2. 將&epwmss0改為&epwmss2,並將該節點內的ecap0: [email protected]改成ecap0:[email protected],然後將該節點中的&ecap0_pins改成&ecap2_pins。

  Step3. 將ecap0_pins節點改名為ecap2_pins,然後將pinctrl-single,pins內的內容改為:0x19c MUX_MODE4。

  最後修改後的DTS相關部分如下:

  backlight {

  compatible = "pwm-backlight";

  pwms = <&ecap2 0 50000 0>;

  brightness-levels = <0 51 53 56 62 75 101 152 255>;

  default-brightness-level = <8>;

  };

  &epwmss2 {

  status = "okay";

  ecap2: [email protected] {

  status = "okay";

  pinctrl-names = "default";

  pinctrl-0 = <&ecap2_pins>;

  };

  };

  ecap2_pins: backlight_pins {

  pinctrl-single,pins = <

  0x19c MUX_MODE4 /* MCASP0_AHCLKR.eCAP2_in_PWM2_out MODE4 */

  >;

  };

  這樣就完成了背光功能的DTS配置。

相關推薦

應用dts在am335x移植LCD

TI的LCD控制器驅動是非常完善的,共通的地方已經由驅動封裝好了,與按鍵一樣,我們可以通過DTS配置完成LCD的顯示。下面,我們來討論下使用DTS方式配置核心完成LCD驅動的思路。   (1)初步分析   由於TQ335x使用的晶片是AM335x,故仍然可以參考am3

構建NetCore應用框架之實戰篇:什麽是框架,如何設計一個框架

net 希望 dmi 清晰 構建 組織 評估 系統開發 概念 一、系列簡述 本篇起,將通過一系列文章,去描述如何構建一個應用開發框架,並以作者開發的框架為例,逐個點展開分析,如何從零開始,構建自己的開發框架。 本系列文章的目的,是帶領有一編程經驗的人,通過動手,初步完成

在centos7學習redis

alt arp med github 4.0 .py code 學習 成員 最近在按照《Redis實戰》來學習redis,今天嘗試在centos7上安裝並測試redis,首先從官網上下載最新源碼 wget http://download.redis.io/releases/

Delphi應用程序的調試

cat point 應用程序 程序 中一 編寫 ima 調試 重要特性 集成式調試器是Delphi IDE的一個重要特性。該調試器使用戶能方便地設置斷點、監視變量、檢查對象等等。在運行程序時,使用該調試器能快速查找出程序發生了什麽(或未發生什麽)。一個號的調試器對程序

Cisco 路由器傳IOS

log 技術分享 fff 分享 進行 剩余空間 ftp服務 delete cisco 路由器 (1)路由器上查看IOS。 通過dir flash: 命令查看IOS版本,flash的空間大小及剩余量。如果剩余空間不夠上傳新的IOS時候,上傳的時候會報錯。此時需刪掉原來的IOS

傳漏洞

漏洞 內容 如果 訪問 nbsp 文件中 一個 6.0 我們 解析漏洞 (1)IIS解析漏洞 ①當建立一個*.asa、*.asp格式的文件夾時,這個文件夾裏的任意文件都會被當做asp文件來執行。 如果我們上傳一個txt文件,文件內容是asp一句話木馬,一句話木馬將會被解析,

angularjs手機webapp 利用input拍照,相簿選擇、縮圖顯示 傳圖片

執行後的截圖: html程式碼 <ul class="list_img"> <li ng-repeat="imageSrc in imgshows track by $index"> <img n

國慶七篇-----struts2的檔案傳下載

       struts2提供了檔案的上傳下載功能,不過需要我們對其提供相關的檔案引數。 比如檔案上傳,必須提供三種屬性,並對其提供setter和getter方法,而且必須按照以下規範命名: private File XXX; private String XXXFi

部門第一次作業 在伺服器或虛擬機器搭建網站伺服器的初步搭建

自己的伺服器上是CentOS系統且已用來搭建個人部落格,不想重灌Windows且不想已工作網站為主要網站,因此選用搭建虛擬機器的方式來完成任務。虛擬機器系統為Windows server 2008 R2標準版(本來我安裝的是web版,考慮到將來不知道還有哪些功能

使用Git管理Github的專案

Github是什麼就不講的,簡單介紹一下Github中的幾個概念。 Repositories:倉庫,用於存放專案程式碼。一個倉庫對應一個專案。Github上包含私有倉庫以及公共倉庫,私有倉庫是需要付費的。 Star:收藏,類似於瀏覽器收藏夾,用於收藏專案。 Fork

wangEditor的使用及傳圖片

      由於業務需要,最近新入手了一款富文字編輯器wangEditor,這是一款輕量級的富文字編輯器,比起百度的ueditor,這款編輯器的介面更加簡單,文件也很詳細。對於需求不是很高的功能來說,這款編輯器實在是不二之選。 一、wangEditor的基

使用form表單傳檔案

今天在專案中要寫一個上傳檔案的功能,使用jsp中的form表單的形式完成。 首先新建一個jsp,使用最原始的form表單來完成。 jsp中的程式碼如下,很簡單: <form method="post" action="<%=ermDomainUrl %>

小米OJ分之旅——A+B

序號:#1 難度:一般 時間限制:2000ms 記憶體限制:128M 描述: 和所有的 OJ 平臺一樣,第一題作為熱身題,也是送分題:給出兩個非負數 aa 和 bb,輸出 a+ba+b 的結果。 輸入 包含兩個非負數 aa 和 bb,以空格分隔;aa 和 bb 保證小於 2^32 輸出

通用流程化應用審批單設計思路

        本文為通用流程化應用審批設計思路表單部分。 審批單結構分析         審批單承載流程化應用所需要的業務資訊,以及業務操作處理入口。為了實現審批單與具體業務鬆藕、快速開發的目標,在此提出審批單框架的設計思路。如下圖所示,審批單介面分為4個核心功能區域:

H5標籤input標籤傳檔案

之前專案做檔案上傳(本篇著重講純圖片上傳)的時候,一般都是用的flash外掛。 H5的input標籤提供了type=file的檔案上傳功能,那麼如何用這個標籤實現前後端之間的檔案上傳呢。 百度了一下,一個能用的都沒有,都有BUG,講的也很複雜,好氣喔,自己寫

嵌入式WEB伺服器BOA的移植方法

  作者:李駒光、鄭耿 本文摘自作者《嵌入式Linux系統開發詳解-基於EP93XX系列ARM》一書的相關章節。   隨著Internet技術的興起,在嵌入式裝置的管理與互動中,基於Web方式的應用成為目前的主流,這種程式結構也就是大家非常熟悉的B/S結構,即在 嵌入式裝置上

React-Native 之Android應用開發踩坑紀 ————windows環境下配置

歡迎轉載,轉載註明出處: 我不只是看客 自從在公司中被老大安利了移動開發的未來 React-Native之後開始關注相關,想嘗試相關app開發。正好畢業準備畢設,腦子一熱就選擇了RN來開發一款app……題目上交就不能改了,現在好後悔。。。但硬著頭皮上吧 ,廢

機器學習在量化交易的運用

首先闡述下背景。 也需要一個自己去做總結提高的地方,所以在此開個博。 廢話少說,開始幹活(後面也請諒解想到哪寫到哪的風格,因為這裡很多東西是用分享的方式在自己總結) 今天的第一個任務是在TB上實現均線特徵的線性迴歸交易。 之前這個東西我做過,但是卻被某些機器學習方面的大牛批

android之wifi移植全過程

硬體環境                                     WIFI模組:Marvell8686 SDIO WIFI                               開發板:S5PC100                        

Lcd顯示原理

一、LCD控制原理 S5PV210處理器中自帶LCD控制器,控制LCD的顯示,把 LCD 影象資料從一個位於系統記憶體的 video buffer 傳送到一個外部的 LCD 驅動器介面。 型別: 1、STN(超扭曲向列),它的特點是功耗低,但亮度不足,響應時間長;(16