娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32MP157移植Qt5.12.10

發布者:Serendipity66最新更新時間:2025-02-28 來源: cnblogs關鍵字:移植  Qt5 手機看文章 掃描二維碼
隨時隨地手機看文章

一 說明

不帶GPU功能,只能使用linuxFB方式運行QT程序

STM32MP15-Ecosystem-v2.1.0 release

tf-a-stm32mp-2.2.r2-r0

u-boot-stm32mp-2020.01.r2-r0

linux-stm32mp-5.4.56-r0

Buildroot: buildroot-2021.02.10

tslib: tslib-1.22

qt-everywhere-src-5.12.10

qt-opensource-linux-x64-5.12.10.run

Arm GNU Toolchain: gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf

二 屏幕驅動

屏幕是800x480的RGB-LCD,與開發板的硬件接口與ST官方開發板STM32MP157-EVAL的RGB-LTDC接口引腳一致。


首先修改設備樹文件arch/arm/boot/dts/stm32mp157d-custom.dts:


根節點添加panel_backlight和panel_rgb節點



/ {

......

panel_backlight: panel-backlight {

        compatible = 'pwm-backlight';

        pwms = <&pwm4 1 5000000>;

        brightness-levels = <0 32 64 96 128 160 192 224 255>;

        power-supply = <&v3v3>;

        default-brightness-level = <7>;

        status = 'okay';

    };


    panel_rgb: panel-rgb {

        compatible = 'custom,rgb-lcd5';

        backlight = <&panel_backlight>;

        status = 'okay';


        port {

            rgb_panel_in: endpoint {

                remote-endpoint = <<dc_ep0_out>;

            };

        };

};

    ......

};

<dc節點追加內容如下:


<dc {

pinctrl-names = 'default', 'sleep';

pinctrl-0 = <<dc_pins_b>;

pinctrl-1 = <<dc_pins_sleep_b>;

    status = 'okay';


    port {

        #address-cells = <1>;

        #size-cells = <0>;


        ltdc_ep0_out: endpoint@0 {

            reg = <0>;

            remote-endpoint = <&rgb_panel_in>;

        };

    };

};

接著修改設備樹文件arch/arm/boot/dts/stm32mp157d-custom.dtsi:


&timers4節點追加用于控制屏幕背光的內容如下


&timers4 {

    status = 'okay';

    /* spare dmas for other usage */

    /delete-property/dmas;

    /delete-property/dma-names;

    pwm4: pwm {

        pinctrl-0 = <&pwm4_pins_b>;

        pinctrl-1 = <&pwm4_sleep_pins_b>;

        pinctrl-names = 'default', 'sleep';

        #pwm-cells = <2>;

        status = 'okay';

    };

};

接著修改屏幕驅動文件drivers/gpu/drm/panel/panel-simple.c:


platform_of_match數組中添加自己屏幕的匹配數據


static const struct of_device_id platform_of_match[] = {

    ......

    {

.compatible = 'custom,rgb-lcd5',

.data = &custom_rgb_lcd5_desc,

},{

/* sentinel */

}

};

添加自己屏幕的時序參數及相關描述信息


static const struct drm_display_mode custom_rgb_lcd5_mode = {

.clock = 33300, /* LCD像素時鐘,單位:KHz */

.hdisplay = 800, /* LCD X軸像素個數 */

.hsync_start = 800 + 88, /* LCD X軸 + hbp 像素個數 */

.hsync_end = 800 + 88 + 48, /* LCD X軸 + hbp + hspw 像素個數*/

.htotal = 800 + 88 + 48 + 40,         /* LCD X軸 + hbp + hspw + hfp */

.vdisplay = 480, /* LCD Y軸像素個數 */

.vsync_start = 480 + 32, /* LCD Y軸 + vbp 像素個數 */

.vsync_end = 480 + 32 + 3, /* LCD Y軸 + vbp + vspw 像素個數 */

.vtotal = 480 + 32 + 3 + 13,         /* LCD Y軸 + vbp + vspw + vfp */

.vrefresh = 60, /* LCD刷新率,單位:HZ */

.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,

};


static const struct panel_desc custom_rgb_lcd5_desc = {

.modes = &custom_rgb_lcd5_mode,

.num_modes = 1,

.bpc = 8,

.size = {

.width = 117,

.height = 67,

},

.bus_format = MEDIA_BUS_FMT_RGB888_1X24,

};

三 觸摸驅動

我手上開發板配套的RGB-LCD使用的觸摸芯片型號為GT9147,通信接口使用的是開發板的i2c2,除此之外還有RST復位引腳和IRQ中斷引腳。為了使Linux內核匹配該設備驅動,需要修改arch/arm/boot/dts/stm32mp157d-custom.dts設備樹文件。在&i2c2節點下追加如下內容:


&i2c2 {

    pinctrl-names = 'default', 'sleep';

pinctrl-0 = <&i2c2_pins_a>;

pinctrl-1 = <&i2c2_pins_sleep_a>;

i2c-scl-rising-time-ns = <185>;

i2c-scl-falling-time-ns = <20>;

clock-frequency = <400000>;

status = 'okay';

/* spare dmas for other usage */

/delete-property/dmas;

/delete-property/dma-names;


    goodix_ts: gt9147@14 {

compatible = 'goodix,gt9147';

reg = <0x14>;

        interrupt-parent = <&gpioe>;

        interrupts = <1 IRQ_TYPE_EDGE_RISING>;

irq-gpios = <&gpioe 1 GPIO_ACTIVE_HIGH>;

reset-gpios = <&gpioa 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;

status = 'okay';

};

};

Linux源碼中已有gt9147的驅動文件drivers/input/touchscreen/goodix.c,只需要配置內核使能該驅動即可。該驅動文件匹配列表如下:


static const struct of_device_id goodix_of_match[] = {

{ .compatible = 'goodix,gt1151' },

{ .compatible = 'goodix,gt5663' },

{ .compatible = 'goodix,gt5688' },

{ .compatible = 'goodix,gt911' },

{ .compatible = 'goodix,gt9110' },

{ .compatible = 'goodix,gt912' },

{ .compatible = 'goodix,gt927' },

{ .compatible = 'goodix,gt9271' },

{ .compatible = 'goodix,gt928' },

{ .compatible = 'goodix,gt967' },

{ .compatible = 'goodix,gt9147',},

{ }

};

四 測試顯示和觸摸

4.1 配置Linux

1、使能DRM(Direct Rendering Module)驅動(st源碼默認配置已使能配置)


Device Drivers  --->

Graphics support  ---> 

<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->

<*> DRM Support for STMicroelectronics SoC Series

Display Panels  ---> 

<*> support for simple panels

Backlight & LCD device support  --->

<*>   Generic PWM based Backlight Driver

開啟DRM驅動的傳統FB(FrameBuffer)框架:


Device Drivers  ---> 

Graphics support  ---> 

<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->  

[*]   Enable legacy fbdev support for your modesetting driver  

2、使能Goodix I2C觸摸芯片驅動(st源碼默認配置已使能配置)


Device Drivers  --->  

Input device support  ---> 

[*]   Touchscreens  ---> 

<*>   Goodix I2C touchscreen

4.2 配置Buildroot

1、使能libdrm庫用來調用DRM驅動測試屏幕


Target packages  ---> 

Libraries  --->  

Graphics  --->   

        [*] libdrm  ---> 

        [*]   Install test programs 

2、使能evtest用來測試觸摸


Target packages  --->  

Hardware handling  --->   

[*] evtest  

3、使能字庫(后面配置Qt環境變量會用到,否則后面在開發板運行軟件會無法正常顯示字符)


Target packages  ---> 

Fonts, cursors, icons, sounds and themes  --->

[*] DejaVu fonts

[*]   mono fonts (NEW) 

[*]   sans fonts (NEW) 

[*]   serif fonts (NEW) 

[*]   sans condensed fonts (NEW) 

[*]   serif condensed fonts (NEW) 

配置完成后重新make然后接下來使用新編譯的文件系統啟動開發板進行測試。


4.3 測試

4.3.1 屏幕測試

使用modetest測試屏幕顯示。查看該命令使用幫助如下:


# modetest --help


usage: modetest [-acDdefMPpsCvrw]


 Query options:


        -c      list connectors

        -e      list encoders

        -f      list framebuffers

        -p      list CRTCs and planes (pipes)


 Test options:


        -P @:x[++][*][@]  set a plane

        -s [,][@]:[#][-][@]    set a mode

        -C      test hw cursor

        -v      test vsynced page flipping

        -r      set the preferred mode for all connectors

        -w :: set property

        -a      use atomic API

        -F pattern1,pattern2    specify fill patterns


 Generic options:


        -d      drop master after mode set

        -M module       use the given driver

        -D device       use the given device


        Default is to dump all info.

直接執行modetest命令會自動掃描并嘗試打開顯示設備,如下:


# modetest

......

trying to open device 'amdgpu'...failed

trying to open device 'imx-drm'...failed

trying to open device 'virtio_gpu'...failed

......

trying to open device 'stm'...done

Encoders:

id      crtc    type    possible crtcs  possible clones

31      35      DPI     0x00000001      0x00000000


Connectors:

id      encoder status          name            size (mm)       modes   encoders

32      31      connected       DPI-1           117x67          1       31

  modes:

        index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot

  #0 800x480 64.62 800 888 936 976 480 512 515 528 33300 flags: phsync, pvsync; type: preferred, driver

  props:

        1 EDID:

                flags: immutable blob

                blobs:


                value:

        2 DPMS:

                flags: enum

                enums: On=0 Standby=1 Suspend=2 Off=3

                value: 0

[1] [2] [3] [4] [5] [6]
關鍵字:移植  Qt5 引用地址:STM32MP157移植Qt5.12.10

上一篇:STM32MP157構建OpenSTLinux的QT鏡像和SDK
下一篇:STM32MP157開發板調試筆記

推薦閱讀最新更新時間:2025-03-26 17:39

新版U-boot2012.04.01移植(二)(JZ2440-S3C2440)
1、分析u-boot啟動過程 根據u-boot編譯過程分析。 然后打開u-boot.lds文件:
[單片機]
新版U-boot20<font color='red'>12</font>.04.01<font color='red'>移植</font>(二)(JZ2440-S3C2440)
uboot-2011.12移植到S3C2440(序三)—— Makefile之參考文獻
參考文獻: 《韋東山——嵌入式Linux應用開發完全手冊》第15章 uboot之start.s分析 DENX的u-boot是一個狠龐大的系統,研究透徹u-boot的Make的運作同樣是一個狠龐大的工程,目前我僅參考以上兩個參考文檔對S3C2440的u-boot的編譯的Make相關的文件和命令做一個簡單說明。如果深入學習《嵌入式Linux應用開發完全手冊》是一個很好的指引。 一般針對S3C2440的移植都是參照smdk2410來的,所以在smdk2410的目錄,拷貝一個做為smdk2440; 另外,編譯后,可以直接查找*.o文件查看已編譯選項; 讀Makefile可以發現u-boot.lds的用途。 start.S是整個uboo
[單片機]
Exynos4412 內核移植(三)—— 內核啟動過程分析
內核啟動所用函數如下: 與移植U-Boot 的過程相似,在移植Linux 之前,先了解它的啟動過程。Linux 的過程可以分為兩部分:架構/開發板相關的引導過程、后續的通用啟動過程。對于uImage、zImage ,它們首先進行自解壓得到vmlinux ,然后執行 vmlinux 開始“正常的”啟動流程。 引導階段通常使用匯編語言編寫,它首先檢查內核是否支持當前架構的處理器,然后檢查是否支持當前開發板。通過檢查后,就為調用下一階段的start_kernel函數作準備了。這主要分如下兩個步驟: 1)-- 連接內核時使用的虛擬地址,所以要設置頁表、使能MMU; 2)調用C 函數 start_kernel 之前的常規工作
[單片機]
Exynos44<font color='red'>12</font> 內核<font color='red'>移植</font>(三)—— 內核啟動過程分析
Exynos4412 內核移植(五)—— 驅動的移植
以移植自己制作的驅動,學習內核移植中的驅動移植,及 驅動程序的動態編譯和靜態編譯 硬件環境: Linux 內核版本:Linux 3.14 主機:Ubuntu 12.04發行版 目標機:FS4412平臺 交叉編譯工具:arm-none-linux-gnueabi-gcc 一、靜態編譯 1、添加驅動文件 將寫好的實驗代碼fs4412_led_drv.c 拷貝到 drivers/char 下 fs4412_led_drv.c 如下: #include linux/kernel.h #include linux/module.h #include linux/fs.h #include linux
[單片機]
Exynos44<font color='red'>12</font> 內核<font color='red'>移植</font>(五)—— 驅動的<font color='red'>移植</font>
AVR128_uC/OS-II 移植代碼
開發平臺:AVR128 移植系統:uC/OS-II 功能: 系統建立兩個任務,操作“8個LED” 以及 “蜂鳴器”(附上LED和蜂鳴器 部分的原理圖) 代碼量少,添加了個人注釋,容易理解 電路原理圖如下: 此工程為TS8900-M128開發板uCOSii移植教程代碼 功能是 1--8個LED進行“亮-滅”操作 2--控制蜂鳴器“響-不響”操作 單片機源程序如下: /* ***********************************Copyright(c)***************************** * *
[單片機]
AVR<font color='red'>12</font>8_uC/OS-II <font color='red'>移植</font>代碼
【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列
1.本文簡介 GD32F30x 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F10x 系列 MCU 保持高度兼容。本文主要從以下三個方面進行介紹:硬件資源對比、外設及性能對比以及從 STM32F10x 移植到 GD32F30x 的移植步驟,旨在讓開發者能夠快速從 STM32F10x 移植到 GD32F30x,縮短研發周期,加快產品開發進度。 2.GD32F30x vs STM32F10x 硬件資源對比 GD32F30x 和 STM32F10x 硬件引腳對比如表 2-1. GD32F30x 和 STM32F10xpin 對比所示,由該表可知,GD32F30x 與 STM32
[單片機]
【GD32 MCU <font color='red'>移植</font>教程】9、從 STM32F<font color='red'>10</font>x 系列<font color='red'>移植</font>到 GD32F30x 系列
u-boot-2014.10移植(1)
1 /*************************************************** 2 3 *u-boot版本 :u-boot-2014.10 4 5 *gcc版本 :/home/flinn/tools/4.4.3/bin/arm-none-linux-gnueabi- 6 7 * 8 9 *服務器 :ubuntu14.05 10 11 * 12 13 *編譯命令 :make smdk2440_config;make 14 15 *Note(s) : 不要使用gcc-4.3.2(坑) 16 17 **************************************
[單片機]
linux內核移植s3c2410,準備工作,繼續
vmlinux在鏈接時,使用的文件是在vmlinux-all中定義的所有文件,鏈接俄腳本是在arch/arm/kernel/vmlinux.lds中定義該如何 鏈接這些文件。 總結上面: 真個的 linux的源碼是通過Makefile來實現項目的 管理的,頂層的Makefile定義了那些文件夾 中的 內容 被編譯進內核,各級 的子目錄下的Makefile決定該目錄下的那些文件被編譯進內核。 對于編譯選項的設置的話,存在全局的,局部的和僅對一個文件 起作用的選項。 3.內核的Kconfig文件的 分析 在linux內核目錄下,如果直接使用make menuconfig的話,出現的配置界面就是使用的是Kbuild來實現的。最終通過ma
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 宽城| 射洪县| 当阳市| 朔州市| 岗巴县| 丽江市| 青海省| 义马市| 丰台区| 达日县| 银川市| 青海省| 宁武县| 台前县| 山阴县| 贞丰县| 西青区| 宝应县| 瓦房店市| 深圳市| 石林| 台前县| 黑水县| 长沙市| 永德县| 共和县| 和田市| 张家港市| 大方县| 孟村| 应用必备| 漳平市| 资源县| 玉林市| 镇安县| 左云县| 沛县| 营山县| 綦江县| 马龙县| 读书|