http://wiki.farsightdev.com/index.php?title=%E6%89%A9%E5%B1%95%E6%9D%BF%E9%A9%B1%E5%8A%A8%E7%A7%BB%E6%A4%8D%E5%87%86%E5%A4%87&feed=atom&action=history
扩展板驱动移植准备 - 版本历史
2024-03-29T08:18:37Z
本wiki的该页面的版本历史
MediaWiki 1.26.4
http://wiki.farsightdev.com/index.php?title=%E6%89%A9%E5%B1%95%E6%9D%BF%E9%A9%B1%E5%8A%A8%E7%A7%BB%E6%A4%8D%E5%87%86%E5%A4%87&diff=715&oldid=prev
FarSight:创建页面,内容为“==实验原理== Linux设备树目录下文件分三种分别是dtsi、dts和dtb,dtsi类似于C语言中的头文件,定义一些通用的信息会被dts文件...”
2021-03-23T01:59:26Z
<p>创建页面,内容为“==实验原理== Linux设备树目录下文件分三种分别是dtsi、dts和dtb,dtsi类似于C语言中的头文件,定义一些通用的信息会被dts文件...”</p>
<p><b>新页面</b></p><div>==实验原理==<br />
Linux设备树目录下文件分三种分别是dtsi、dts和dtb,dtsi类似于C语言中的头文件,定义一些通用的信息会被dts文件引用,dts是最终的文件,用来描述设备的硬件资源、编译后生成dtb文件,这个文件将会传递给linux内核,内核启动后通过解析这个文件获取设备的硬件资源信息。<br />
<br />
即使同一款芯片也会有不同的设备树,对应不同的设备,这里我们要准备驱动我们的扩展板,这样我们可以认为加了扩展板的fsmp1a是一个新的设备,所以我们要为这个新的设备创建一个新的设备树文件,当然他继承了fsmp1a的主板资源,所以我们设备设备树会应用原有的设备树文件。<br />
<br />
[[Image:57-1-1.png]]<br><br />
==实验目的==<br />
了解Linux内核设备树的原理,设备树的层次结构等,掌握如何在内核中添加一个新设备的支持。<br />
==实验平台==<br />
华清远见开发环境,FS-MP1A平台<br />
==实验步骤==<br />
<ol><br />
<br />
<li>导入交叉编译工具链</li><br />
linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi<br />
<br />
<li>新建设备树文件</li><br />
<br />
在内核的arch/arm/boot/dts目录下新建文件stm32mp157a-fsmp1a-extended.dts文件并添加如下内容:<br />
<pre><br />
stm32mp157a-fsmp1a-extended.dts<br />
<br />
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)<br />
/*<br />
* Copyright (C) Farsight 2018 - All Rights Reserved<br />
*/<br />
<br />
/dts-v1/;<br />
<br />
#include "stm32mp157a-fsmp1a-mipi050.dts"<br />
//#include "stm32mp157a-fsmp1a-rgb070.dts"<br />
//#include "stm32mp157a-fsmp1a.dts"<br />
<br />
/ {<br />
model = "HQYJ STM32MP157 FSMP1A EXTENDED Discovery Board";<br />
compatible = "st,stm32mp157a-dk1", "st,stm32mp157";<br />
};<br />
</pre><br />
说明:<br><br />
主板使用的是5寸的MIPI屏需引用stm32mp157a-fsmp1a-mipi050.dts,<br><br />
主板使用的是7寸的RGB屏需引用stm32mp157a-fsmp1a-mipi050.dts <br><br />
如果没有屏幕则可以引用stm32mp157a-fsmp1a.dts <br><br />
<br />
<li>修改arch/arm/boot/dts/Makefile</li><br />
在原有stm32mp157a-fsmp1a-rgb070.dts下添加如下新dts文件的条目(标红部分未新增条目)<br />
<br />
<div style="background-color:#F8F8F8;border:1px solid #E5E5E5;font-family: monospace,Courier;"><br />
:dtb-$(CONFIG_ARCH_STM32) += \<br />
:: stm32f429-disco.dtb \<br />
:: stm32f469-disco.dtb \<br />
:: stm32f746-disco.dtb \<br />
:: stm32f769-disco.dtb \<br />
:: stm32429i-eval.dtb \<br />
:: stm32746g-eval.dtb \<br />
:: stm32h743i-eval.dtb \<br />
:: stm32h743i-disco.dtb \<br />
:: stm32mp157a-dk1.dtb \<br />
:: stm32mp157a-fsmp1a.dtb \<br />
:: stm32mp157a-fsmp1a-mipi050.dtb \<br />
:: stm32mp157a-fsmp1a-rgb070.dtb \<br />
<font color="#F00"><br />
:: stm32mp157a-fsmp1a-extended.dtb \<br />
</font><br />
</div><br />
<li>编译设备树文件</li><br />
编译后会生成stm32mp157a-fsmp1a-extended.dtb文件<br />
<li>增加启动项配置</li><br />
u-boot可以通过eMMC、SD卡、TFTP三种方式加载内核和设备树文件,三种不同的方式分别需要修改不同的文件<br />
<br />
eMMC启动:修改根文件系统的/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.conf<br />
<br />
SD卡启动:修改根文件系统的/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.conf<br />
<br />
TFTP启动:修改根文件系统的/tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17<br />
<br />
注意:<br />
<br />
01-00-80-e1-42-60-17为板子u-boot期间的MAC地址,如需改变可以在u-boot期间使用env set -f ethaddr xx:xx:xx:xx:xx:xx来修改mac地址。<br><br />
红色部分为增加内容<br />
<div style="background-color:#F8F8F8;border:1px solid #E5E5E5;font-family: monospace,Courier;"><br />
<br />
<nowiki># Generic Distro Configuration file generated by OpenEmbedded</nowiki><br><br />
menu title Select the boot mode<br><br />
MENU BACKGROUND ../splash.bmp<br><br />
TIMEOUT 20<br><br />
DEFAULT stm32mp157a-fsmp1a-mipi-emmc<br><br />
LABEL stm32mp157a-fsmp1a-emmc<br><br />
: KERNEL /uImage<br />
: FDT /stm32mp157a-fsmp1a-extended.dtb<br />
: APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200<br />
<font color="#F00"><br />
LABEL stm32mp157a-fsmp1a-extended<br />
: KERNEL /uImage<br />
: FDT /stm32mp157a-fsmp1a-extended.dtb<br />
: APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200<br />
</font><br />
</div><br />
说明:<br><br />
“APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200”表示根文件系统在eMMC上、如果需要使用nfs挂载根文件系统需将APP内容改为:<br />
APPEND root=/dev/nfs nfsroot=192.168.11.251:/source/rootfs ip=dhcp rootwait rw earlyprintk console=ttySTM0,115200<br />
</ol></div>
FarSight