扩展板驱动移植准备

  1. 实验原理

Linux 设备树目录下文件分三种分别是 dtsi、dts 和 dtb,dtsi 类似于 C 语言中的头文件,定义一些通用的信息会被 dts 文件引用,dts 是最终的文件,用来描述设备的硬件资源、编译后生成 dtb 文件,这个文件将会传递给 linux 内核,内核启动后通过解析这个文件获取设备的硬件资源信息。

即使同一款芯片也会有不同的设备树,对应不同的设备,这里我们要准备驱动我们的扩展板,这样我们可以认为加了扩展板的 fsmp1a 是一个新的设备,所以我们要为这个新的设备创建一个新的设备树文件,当然他继承了 fsmp1a 的主板资源,所以我们设备设备树会应用原有的设备树文件。

  1. 实验步骤

1) 导入交叉编译工具链

linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

2) 新建设备树文件

在内核的 arch/arm/boot/dts 目录下新建文件 stm32mp157a-fsmp1a-extended.dts 文件并添加如下内容:

stm32mp157a-fsmp1a-extended.dts

// 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

3)修改 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 \#新增内容

4)编译设备树文件

编译后会生成 stm32mp157a-fsmp1a-extended.dtb 文件

5)增加启动项配置

u-boot 可以通过 eMMC、SD 卡、TFTP 三种方式加载内核和设备树文件,三种不同的方式分别需要修改不同的文件

eMMC 启动:修改根文件系统的/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.conf

SD 卡启动:修改根文件系统的/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.conf

TFTP 启动:修改根文件系统的/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 地址。

红色部分为增加内容

# 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
/*新增内容start*/
LABEL stm32mp157a-fsmp1a-extended
 KERNEL /uImage
 FDT /stm32mp157a-fsmp1a-extended.dtb
 APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200
/*新增内容end*/

说明:

“APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200”表示根文件系统在 eMMC 上、如果需要使用 nfs 挂载根文件系统需将 APP 内容改为:

APPEND root=/dev/nfs nfsroot=192.168.11.251:/source/rootfs ip=dhcp rootwait rw earlyprintk console=ttySTM0,115200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐的记事本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值