stm32mp157 linux下擴展板驅動移植1:驅動移植準備
寫在前面:
本文章為《Linux系統(tǒng)移植之擴展板外設驅動移植篇》系列中的一篇,筆者使用的開發(fā)平臺為華清遠見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)。資源擴展板是FS-MP1A開發(fā)板的擴展模塊,主要包含了10余種助主流傳感器、執(zhí)行器件、總線控制器件,非常方便項目擴展用??赏卣归_發(fā)智慧家庭、智能醫(yī)療、智能安防、工業(yè)控制、圖像識別、環(huán)境檢測等方向的10個左右綜合項目,華清遠見開發(fā)板也將配套提供所有項目的說明文檔、實驗源碼、應用程序等資料。
針對FS-MP1A開發(fā)板,除了擴展板外設驅動移植篇外,還包括其他多系列教程,包括Cortex-A7開發(fā)篇、Cortex-M4開發(fā)篇、FreeRTOS篇、Linux應用開發(fā)篇、Linux系統(tǒng)移植篇、Linux驅動開發(fā)篇、硬件設計篇、人工智能機器視覺篇、Qt應用編程篇、Qt綜合項目實戰(zhàn)篇等。歡迎關注,更多stm32mp157開發(fā)教程及視頻,可加技術交流Q群483143191,感謝關注。
FS-MP1A開發(fā)板詳情介紹:https://item.taobao.com/item.htm?id=622457259672
1.資源擴展板介紹
1.1硬件介紹

1.2資源擴展板可開發(fā)項目

2.擴展板驅動移植準備
2.1實驗原理
Linux設備樹目錄下文件分三種分別是dtsi、dts和dtb,dtsi類似于C語言中的頭文件,定義一些通用的信息會被dts文件引用,dts是最終的文件,用來描述設備的硬件資源、編譯后生成dtb文件,這個文件將會傳遞給linux內(nèi)核,內(nèi)核啟動后通過解析這個文件獲取設備的硬件資源信息。
即使同一款芯片也會有不同的設備樹,對應不同的設備,這里我們要準備驅動我們的擴展板,這樣我們可以認為加了擴展板的fsmp1a是一個新的設備,所以我們要為這個新的設備創(chuàng)建一個新的設備樹文件,當然他繼承了fsmp1a的主板資源,所以我們設備設備樹會應用原有的設備樹文件。

擴展板資源標識圖
2.2實驗目的
了解Linux內(nèi)核設備樹的原理,設備樹的層次結構等,掌握如何在內(nèi)核中添加一個新設備的支持。
2.3實驗平臺
華清遠見開發(fā)環(huán)境,F(xiàn)S-MP1A平臺
2.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
新建設備樹文件
在內(nèi)核的arch/arm/boot/dts目錄下新建文件stm32mp157a-fsmp1a-extended.dts文件并添加如下內(nèi)容:
stm32mp157a-fsmp1a-extended.dts
123456789101112131415// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)/* * Copyright (C) Farsight 2018 - All Rights Reserved *//dts-v1/;#include "stm32mp157a-fsmp1a-mipi050.dts"//#include "stm32mp157a-fsmp1a-rgb070.dts"//#include "stm32mp157a-fsmp1a.dts"/ { model = "HQYJ STM32MP157 FSMP1A EXTENDED Discovery Board"; compatible = "st,stm32mp157a-dk1", "st,stm32mp157";};
說明:
主板使用的是5寸的MIPI屏需引用stm32mp157a-fsmp1a-mipi050.dts,
主板使用的是7寸的RGB屏需引用stm32mp157a-fsmp1a-rgb070.dts
如果沒有屏幕則可以引用stm32mp157a-fsmp1a.dts
修改arch/arm/boot/dts/Makefile
在原有stm32mp157a-fsmp1a-rgb070.dts下添加如下新dts文件的條目(標紅部分未新增條目)
dtb-$(CONFIG_ARCH_STM32) += \
stm32f429-disco.dtb \
stm32f469-disco.dtb \
stm32f746-disco.dtb \
stm32f769-disco.dtb \
stm32429i-eval.dtb \
stm32746g-eval.dtb \
stm32h743i-eval.dtb \
stm32h743i-disco.dtb \
stm32mp157a-dk1.dtb \
stm32mp157a-fsmp1a.dtb \
stm32mp157a-fsmp1a-mipi050.dtb \
stm32mp157a-fsmp1a-rgb070.dtb \
stm32mp157a-fsmp1a-extended.dtb \
編譯設備樹文件
編譯后會生成stm32mp157a-fsmp1a-extended.dtb文件
增加啟動項配置
u-boot可以通過eMMC、SD卡、TFTP三種方式加載內(nèi)核和設備樹文件,三種不同的方式分別需要修改不同的文件
eMMC啟動:修改根文件系統(tǒng)的/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.conf
SD卡啟動:修改根文件系統(tǒng)的/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.conf
TFTP啟動:修改根文件系統(tǒng)的/tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17
注意:
01-00-80-e1-42-60-17為板子u-boot期間的MAC地址,如需改變可以在u-boot期間使用env set -f ethaddr xx:xx:xx:xx:xx:xx來修改mac地址。
紅色部分為增加內(nèi)容
# Generic Distro Configuration file generated by OpenEmbedded
menu title Select the boot mode
MENU BACKGROUND ../splash.bmp
TIMEOUT 20
DEFAULT stm32mp157a-fsmp1a-mipi-emmc
LABEL stm32mp157a-fsmp1a-emmc
KERNEL /uImage
FDT /stm32mp157a-fsmp1a-extended.dtb
APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200
LABEL stm32mp157a-fsmp1a-extended
KERNEL /uImage
FDT /stm32mp157a-fsmp1a-extended.dtb
APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200
說明:
“APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200”表示根文件系統(tǒng)在eMMC上、如果需要使用nfs掛載根文件系統(tǒng)需將APP內(nèi)容改為:
APPEND root=/dev/nfs nfsroot=192.168.11.251:/source/rootfs ip=dhcp rootwait rw earlyprintk console=ttySTM0,115200
硬件平臺:華清遠見FS-MP1A開發(fā)板(STM32MP157)
部分開發(fā)教程下載:加QQ群483143191,群文件里有。
部分視頻課程收看:華清遠見研發(fā)中心的個人空間_嗶哩嗶哩_Bilibili
淘寶購買鏈接:https://item.taobao.com/item.htm?id=622457259672
手機淘寶分享碼:復制本行文字打開手淘?T4FPXn3YYJ2?