查看“扩展板驱动移植准备”的源代码
←
扩展板驱动移植准备
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==实验原理== Linux设备树目录下文件分三种分别是dtsi、dts和dtb,dtsi类似于C语言中的头文件,定义一些通用的信息会被dts文件引用,dts是最终的文件,用来描述设备的硬件资源、编译后生成dtb文件,这个文件将会传递给linux内核,内核启动后通过解析这个文件获取设备的硬件资源信息。 即使同一款芯片也会有不同的设备树,对应不同的设备,这里我们要准备驱动我们的扩展板,这样我们可以认为加了扩展板的fsmp1a是一个新的设备,所以我们要为这个新的设备创建一个新的设备树文件,当然他继承了fsmp1a的主板资源,所以我们设备设备树会应用原有的设备树文件。 [[Image:57-1-1.png]]<br> ==实验目的== 了解Linux内核设备树的原理,设备树的层次结构等,掌握如何在内核中添加一个新设备的支持。 ==实验平台== 华清远见开发环境,FS-MP1A平台 ==实验步骤== <ol> <li>导入交叉编译工具链</li> linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi <li>新建设备树文件</li> 在内核的arch/arm/boot/dts目录下新建文件stm32mp157a-fsmp1a-extended.dts文件并添加如下内容: <pre> 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"; }; </pre> 说明:<br> 主板使用的是5寸的MIPI屏需引用stm32mp157a-fsmp1a-mipi050.dts,<br> 主板使用的是7寸的RGB屏需引用stm32mp157a-fsmp1a-mipi050.dts <br> 如果没有屏幕则可以引用stm32mp157a-fsmp1a.dts <br> <li>修改arch/arm/boot/dts/Makefile</li> 在原有stm32mp157a-fsmp1a-rgb070.dts下添加如下新dts文件的条目(标红部分未新增条目) <div style="background-color:#F8F8F8;border:1px solid #E5E5E5;font-family: monospace,Courier;"> :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 \ <font color="#F00"> :: stm32mp157a-fsmp1a-extended.dtb \ </font> </div> <li>编译设备树文件</li> 编译后会生成stm32mp157a-fsmp1a-extended.dtb文件 <li>增加启动项配置</li> 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地址。<br> 红色部分为增加内容 <div style="background-color:#F8F8F8;border:1px solid #E5E5E5;font-family: monospace,Courier;"> <nowiki># Generic Distro Configuration file generated by OpenEmbedded</nowiki><br> menu title Select the boot mode<br> MENU BACKGROUND ../splash.bmp<br> TIMEOUT 20<br> DEFAULT stm32mp157a-fsmp1a-mipi-emmc<br> LABEL stm32mp157a-fsmp1a-emmc<br> : KERNEL /uImage : FDT /stm32mp157a-fsmp1a-extended.dtb : APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200 <font color="#F00"> LABEL stm32mp157a-fsmp1a-extended : KERNEL /uImage : FDT /stm32mp157a-fsmp1a-extended.dtb : APPEND root=/dev/mmcblk2p4 rootwait rw console=ttySTM0,115200 </font> </div> 说明:<br> “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 </ol>
返回至
扩展板驱动移植准备
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
关于我们
联系我们
资料下载
STM32F103开发板
STM32U575开发板
STM32MP157开发板
Hi3861鸿蒙开发板
HaaS EDU开发板
ESP32开发板
i.MX8M Plus开发板
图书下载
嵌入式系列图书
物联网系列图书
Android系列图书
高校教仪
嵌入式实验室产品
物联网实验室产品
人工智能实验室产品
虚拟仿真实验室产品
行业应用实训室产品
虚拟仿真
嵌入式虚拟仿真平台
物联网虚拟仿真平台
人工智能虚拟仿真
友情链接
华清远见研发中心
元宇宙实验中心
华清远见硬件商城
工具
链入页面
相关更改
特殊页面
页面信息