在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AM335x(TQ335x)學(xué)習(xí)筆記——LCD驅(qū)動(dòng)移植

      AM335x(TQ335x)學(xué)習(xí)筆記——LCD驅(qū)動(dòng)移植

      作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

      (3)backlight節(jié)點(diǎn)分析及配置

      本文引用地址:http://www.biyoush.com/article/201611/322821.htm

      從backlight節(jié)點(diǎn)中可以獲得如下信息:

      1. 1.匹配內(nèi)核驅(qū)動(dòng)的關(guān)鍵詞是"pwm-backlight"。
      2. 2.使用的ECAP0進(jìn)行PWM輸出。
      3. 3.有8個(gè)亮度等級(jí)。
      4. 4.默認(rèn)的亮度等級(jí)是8,也就是最亮。
      了解以上信息后需要查閱TQ335x手冊(cè),弄清楚backlight控制管腳是如何連接的。通過(guò)分析TQ335x的原理圖可知,TQ335x的背光控制也是使用PWM方式控制,且該引腳接到AM335x的ECAP2_IN_PWM2_OUT管腳上,而evm開(kāi)發(fā)板是接在ECAP0_IN_PWM0_OUT管腳上的,因此,需要修改DTS配置才能正常使用TQ335x的背光功能。思路是將DTS中的背光配置由EACP0改為EACP2,下面是修改的步驟:
      1. Step1.將backlight節(jié)點(diǎn)中&eacp0改為&eacp2。
      2. Step2.將&epwmss0改為&epwmss2,并將該節(jié)點(diǎn)內(nèi)的ecap0:ecap@48304100改成ecap0:ecap@48304100,然后將該節(jié)點(diǎn)中的&ecap0_pins改成&ecap2_pins。
      3. Step3.將ecap0_pins節(jié)點(diǎn)改名為ecap2_pins,然后將pinctrl-single,pins內(nèi)的內(nèi)容改為:0x19cMUX_MODE4。
      最后修改后的DTS相關(guān)部分如下:
      1. backlight{
      2. compatible="pwm-backlight";
      3. pwms=<&ecap20500000>;
      4. brightness-levels=<05153566275101152255>;
      5. default-brightness-level=<8>;
      6. };
      7. &epwmss2{
      8. status="okay";
      9. ecap2:ecap@48304100{
      10. status="okay";
      11. pinctrl-names="default";
      12. pinctrl-0=<&ecap2_pins>;
      13. };
      14. };
      15. ecap2_pins:backlight_pins{
      16. pinctrl-single,pins=<
      17. 0x19cMUX_MODE4/*MCASP0_AHCLKR.eCAP2_in_PWM2_outMODE4*/
      18. >;
      19. };
      這樣就完成了背光功能的DTS配置。
      (4)配置內(nèi)核驅(qū)動(dòng)
      由于evm開(kāi)發(fā)板的代碼是使用ATAGS方式啟動(dòng)的,沒(méi)有配置pwm-backlight和基于TI LCD控制器的通用panel驅(qū)動(dòng),需要通過(guò)menuconfig開(kāi)啟相應(yīng)的配置項(xiàng)。通過(guò)DTS中的compatible屬性可以找到pwm-backlight驅(qū)動(dòng)是在drivers/video/backlight/pwm-bl.c中實(shí)現(xiàn)的,而panel驅(qū)動(dòng)則是在drivers/gpu/drm/tilcdc/tilcdc_panel.c中實(shí)現(xiàn)的,閱讀相應(yīng)目錄下的Makefile和Kconfig就可以確定出如何配置menuconfig。Makefile和Kconfig的分析過(guò)程很簡(jiǎn)單,我就不多寫(xiě)了,下面是通過(guò)menuconfig開(kāi)啟相應(yīng)功能的步驟。
      Step1. 執(zhí)行menuconfig指令:
      1. makeARCH=armmenuconfig
      Step2. 開(kāi)啟通用pwm-backlight驅(qū)動(dòng)和基于TI LCD控制器的通用panel驅(qū)動(dòng),配置內(nèi)容如下:
      1. Graphicssupport--->
      2. [*]Pulse-WidthModulation(PWM)Support--->
      3. <*>ECAPPWMsupport
      4. <*>EHRPWMPWMsupport
      5. -*-Backlight&LCDdevicesupport--->
      6. <*>GenericPWMbasedBacklightDriver
      7. Graphicssupport--->
      8. DirectRenderingManager--->
      9. <*>DirectRenderingManager(XFree864.1.0andhigherDRIsupport)--->
      10. <*>DRMSupportforTILCDCDisplayController
      (5)編譯DTB和內(nèi)核
      執(zhí)行DTB編譯指令:
      1. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi-tq335x.dtb
      執(zhí)行內(nèi)核編譯指令:
      1. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi--j8
      (6)用新內(nèi)核啟動(dòng)開(kāi)發(fā)板
      將新編譯好的tq335x.dtb和zImage拷貝到SD卡的boot目錄下,然后用SD啟動(dòng)開(kāi)發(fā)板到u-boot命令行模式,通過(guò)u-boot指令啟動(dòng)內(nèi)核(每次都這樣啟動(dòng)會(huì)比較麻煩,可以通過(guò)設(shè)置u-boot的bootcmd環(huán)境變量并保存來(lái)簡(jiǎn)化此動(dòng)作),啟動(dòng)內(nèi)核的指令與前一篇文章的命令是相同的:
      1. loadmmc00x88000000/boot/tq335x.dtb
      2. loadmmc00x82000000/boot/zImage
      3. loadmmc00x88080000/boot/ramdisk.img
      4. bootz0x820000000x880800000x88000000
      這時(shí),可以看到開(kāi)發(fā)板正常啟動(dòng)并且能看到熟悉的Linux小企鵝Logo,至此,就完成了am335x的LCD驅(qū)動(dòng)移植,實(shí)際上是不需要我們寫(xiě)代碼的,但需要了解內(nèi)核的組織方式和DTS配置的方法。

      (7)pinmux配置參數(shù)的確定方法

      相信有些人看完這幾篇文章之后有個(gè)疑問(wèn),就是配置pinmux的時(shí)候offset是如何確定的。配置GPIO管腳復(fù)用功能時(shí)經(jīng)常用到pinctrl-single,pins = 屬性,內(nèi)核解析該屬性后根據(jù)offset和function配置對(duì)應(yīng)的寄存器,是GPIO管腳配置為指定的復(fù)用功能。

      講offset的確定方法之前需要指出的是,TI的GPIO控制與三星的芯片不同,三星的芯片管腳復(fù)用功能是放在GPIO寄存器中的,而TI的芯片則有個(gè)專(zhuān)門(mén)的控制模塊叫Control Module,該模塊可以控制所有的GPIO管腳功能復(fù)用;另外,與三星芯片的另外一個(gè)不同是TI的芯片分為技術(shù)參考手冊(cè)和數(shù)據(jù)手冊(cè),技術(shù)參考手冊(cè)非常詳細(xì)的講述同family的芯片功能及使用方法,數(shù)據(jù)手冊(cè)則用來(lái)講述同family中不同芯片特有的屬性。因此,調(diào)試TI芯片時(shí)需要結(jié)合技術(shù)參考手冊(cè)和數(shù)據(jù)手冊(cè),而配置GPIO則需要閱讀技術(shù)手冊(cè)的GPIO、Control Module兩章和數(shù)據(jù)手冊(cè)中相關(guān)的部分。

      從am33xx.dtsi中可以看到pinmux的基地址是0x44e10800,我們先來(lái)看這個(gè)地址是怎么來(lái)的。從技術(shù)參考手冊(cè)的內(nèi)存映射表可以確定該地址位于L4_WKUP段內(nèi),如下圖:

      點(diǎn)擊L4_WKUP超鏈接,可以切換到L4_WKUP的地址映射表,從該表中可以確定,該地址位于Control Module,如下圖:

      點(diǎn)擊Control Module的超鏈接,可以切換到Control Module的地址映射表,從該表中可以找到0x44e10800地址,實(shí)際上就是conf_gpmc_ad0控制寄存器的地址,也就是說(shuō),pinmux配置時(shí)的offset都基于這個(gè)地址的。

      以PWM背光控制為例。該功能引腳是接在ECAP2_IN_PWM_OUT上的,實(shí)際上就是AM335x的MCASP0_AHCLKR管腳,該管腳的地址也可以在Control Module的地址映射表中找到,該管腳的地址是0x44e1099c(表中是基于Control Module的offset,這個(gè)值是計(jì)算之后的),因此,在pinmux中配置該引腳時(shí)使用的offset應(yīng)該是0x19c,這樣就確定出了offset。
      pinctrl-single,pins的第二項(xiàng)是function,用來(lái)指定GPIO管腳是輸入還是輸出,當(dāng)前處于哪種模式。輸入輸出很容易配置,但是AM335x技術(shù)參考手冊(cè)中只提到每個(gè)管腳有8中模式,即MODE0~MODE7,其中,MODE0是主模式,但是沒(méi)有具體講每個(gè)引腳的每個(gè)MODE是什么功能,這時(shí),就需要查閱AM335x數(shù)據(jù)手冊(cè)了。在AM335x數(shù)據(jù)手冊(cè)MCASP0_AHCLKR的八種模式的含義,如下圖:
      由于我們使用的是eCAP2_in_PWM2_out功能,故使用MUX_MODE4。這就是backlight的pinmux配置時(shí)使用pinctrl-single,pins = <0x19c MUX_MODE4>的原因。

      評(píng)論


      技術(shù)專(zhuān)區(qū)

      關(guān)閉