STM32MP157 Linux系統(tǒng)移植開發(fā)篇13:Linux內(nèi)核5寸觸摸屏驅(qū)動移植
本文章為《STM32MP157 Linux系統(tǒng)移植開發(fā)篇》系列中的一篇,筆者使用的開發(fā)平臺為華清遠見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)。stm32mp157是ARM雙核,2個A7核,1個M4核,A7核上可以跑Linux操作系統(tǒng),M4核上可以跑FreeRTOS、RT-Thread等實時操作系統(tǒng),STM32MP157開發(fā)板所以既可以學嵌入式linux,也可以學stm32單片機。
針對FS-MP1A開發(fā)板,除了Linux系統(tǒng)移植篇外,還包括其他多系列教程,包括Cortex-A7開發(fā)篇、Cortex-M4開發(fā)篇、擴展板驅(qū)動移植篇、Linux應(yīng)用開發(fā)篇、FreeRTOS系統(tǒng)移植篇、Linux驅(qū)動開發(fā)篇、硬件設(shè)計篇、人工智能機器視覺篇、Qt應(yīng)用編程篇、Qt綜合項目實戰(zhàn)篇等。歡迎關(guān)注,更多stm32mp157開發(fā)教程及視頻,可加技術(shù)交流Q群459754978,感謝關(guān)注。
關(guān)于FS-MP1A開發(fā)板:
手機淘寶分享碼:復(fù)制本行文字打開手淘?T4FPXn3YYJ2?
鏈接:https://item.taobao.com/item.htm?id=622457259672
1.實驗原理
FS-MP1A使用的是GT911觸摸芯片,通過I2C2總線與SoC進行數(shù)據(jù)交互。

查看原理圖確認I2C2管腳對應(yīng)關(guān)系:

查看原理圖確認中斷管腳TP_IRQ和復(fù)位管腳TP_RST管腳對應(yīng)關(guān)系:

原理圖網(wǎng)絡(luò)編號對應(yīng)管腳管腳功能管腳功能碼I2C2_SCLPH4I2C2_SCLAF4I2C2_SDAPH5I2C2_SDAAF4TP_RSTPG8GPIOTP_INTPG7INT
I2C2設(shè)備樹節(jié)點
I2C節(jié)點添加與HDMI中對應(yīng)I2C的內(nèi)容一致,本節(jié)不再重復(fù)。
觸摸屏設(shè)備樹節(jié)點
參考文檔:
devicetree/bindings/input/touchscreen/goodix.txt
參考goodix.txt及ST提供的I2C相關(guān)設(shè)備樹文檔,觸摸屏節(jié)點內(nèi)容如下:
touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
interrupt-parent = <&gpiog>;
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
status = "okay";
// touchscreen-inverted-x;
touchscreen-inverted-y;
// touchscreen-swapped-x-y;
};
2.實驗?zāi)康?/h1>
熟悉基于Linux操作系統(tǒng)下的MIPI 觸摸屏設(shè)備驅(qū)動移植配置過程。
3.實驗平臺
華清遠見開發(fā)環(huán)境,F(xiàn)S-MP1A平臺;
4.實驗步驟
導入交叉編譯工具鏈
linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
修改設(shè)備樹
修改arch/arm/boot/dts/stm32mp157a-fsmp1a-mipi050.dts文件,在文件末尾增加如下內(nèi)容:
&i2c2 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c2_pins_a>;
pinctrl-1 = <&i2c2_pins_sleep_a>;
i2c-scl-rising-time-ns = <100>;
i2c-scl-falling-time-ns = <7>;
status = "okay";
/delete-property/dmas;
/delete-property/dma-names;
touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
interrupt-parent = <&gpiog>;
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
status = "okay";
// touchscreen-inverted-x;
touchscreen-inverted-y;
// touchscreen-swapped-x-y;
};
};
配置內(nèi)核
由于內(nèi)核源碼默認配置以及支持sii902x,本節(jié)列出主要選項,如下:
linux@ubuntu:$ make menuconfig
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<*> DRM Support for STMicroelectronics SoC Series
Display Interface Bridges --->
<*> Silicon Image sii902x RGB/HDMI bridge
編譯內(nèi)核級設(shè)備樹:
linux@ubuntu:$ make -j4 uImage dtbs LOADADDR=0xC2000040
重啟測試
將編譯好的設(shè)備樹和內(nèi)核鏡像拷貝到/tftpboot目錄下,通過tftp引導內(nèi)核,設(shè)備連接MIPI屏幕,重啟設(shè)備后查看/dev會多出event0的信息,這是點擊屏幕會的到反饋。
root@fsmp1a:# ls /dev/input

硬件平臺:華清遠見FS-MP1A開發(fā)板(STM32MP157)
部分開發(fā)教程下載:加QQ群459754978,群文件里有。
淘寶購買鏈接:華清遠見stm32mp157 linux開發(fā)板stm32單片機arm開發(fā)嵌入式學習板
手機淘寶分享碼:復(fù)制本行文字打開手淘?T4FPXn3YYJ2?