【elfboard linux开发板】11. 版本管理和修改设备树流程(点亮LED)

news2024/11/20 20:21:55

1. 版本管理

1.1 初始化git仓库

git init 生成一个.git 目录
git config --global user.name 用户名
git config --global user.email 邮箱

1.2 查看.gitignore

vim .gitignore

1.3 添加删除到缓存区

git status 查看状态
git add 文件名
git rm 文件名

1.4 提交当前记录

git commit -m 说明

1.5 查看提交记录

git log

1.6 查看当前分支

git branch

1.7 创建分支

git branch 分支名

1.8 切换分支

git checkout 分支名

2. 叒叕点亮LED

通过linux自带的gpio-leds驱动实现,改驱动通过调用Pinctrl子系统和GPIO子系统实现LED灯的控制;

2.1 IOMUX介绍

IOMUX是指IO引脚功能多路复用;其对应的引脚功能可以看05-硬件资料\05-4 管脚分配表\ELF 1引脚复用对照表-20230921.xlsx,在表中Alt0为默认功能,后面的Alt[数字]列为可以复用功能,复用为GPIO需要配置为Alt5,相关的寄存器配置可以查看IMX6ULLRM.pdfchapter 32.6 中关于SW_MUX_CTL寄存器描述
a. 常用的寄存器类型

电气属性寄存器:IOMUXC_SW_PAD_CTL_PAD_* 20E_0204-20E_048F
复用寄存器:IOMUXC_SW_MUX_CTL_PAD_* 20E_0044-20E_0203

b. 怎么进行配置(可以看后面程序理解)

  1. arch/arm/boot/dts/dts文件名文件中,添加对iomuxc的描述,定义pinctrl_leds0
  2. 添加fsl,pins信息

信息按照:复用寄存器偏移值, 电气属性寄存器偏移值,输入寄存器偏移值,复用模式,输入值, 电气寄存器的值 排列,每行只描述一个引脚的各个值

举个例子:
首先利用arch/arm/boot/dts/imx6ull-pinfunc.h的定义的宏,
#define MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x008c 0x0318 0x0000 5 0
其排列顺序参照下列描述

/*
14  * The pin function ID is a tuple of
15  * <mux_reg conf_reg input_reg mux_mode input_val>
16  */

0x008c代表复用寄存器相较于基地址的偏移量在这里插入图片描述
0x0318 代表模式控制寄存器相较于基地址的偏移量
在这里插入图片描述
5 代表 复用模式为寄存器描述的GPIO1_IO18

0101 ALT5 — Select mux mode: ALT5 mux port: GPIO1_IO18 of instance: gpio1

其次,在fsl,pins中添加:

fsl,pins = <
	MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 		0x10b0
	>;

0x10b0代表将电气属性寄存器配置为:Pull/Keeper Enabled,速度 medium(100MHz),Drive Strength Field 为DSE_6_R0_6 — R0/6
在这里插入图片描述

2.2 硬件说明

2.2.1 原理图

硬件上有三个led灯,分别连接着第60、64、30号引脚,当GPIO输出配置为低电平时导通,LED点亮;
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.2.2 引脚说明

引脚的相关宏定义在以下两个文件:
arch/arm/boot/dts/imx6ull-pinfunc.h
arch/arm/boot/dts/imx6ul-pinfunc.h

如果查找对应引脚的GPIO号,通过vi arch/arm/boot/dts/imx6ul-pinfunc.h进入文件,在命令模式下,使用/GPIO号查找名称末尾为复用中描述的GPIO名称,例如:用/GPIO1_IO10查找*GPIO1_IO10*宏

序号名称引脚GPIO
60LED_RP15_JTAG_MODgpio1_IO10
64LED_GK13_GPIO_0gpio1_IO00
30LED_YK15_SD1_WPgpio1_IO18

2.3 程序配置说明

2.3.1 IOMUX配置

arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件的末位,新增关于IOMUX的描述如下:

&iomuxc {
	pinctrl_leds0:leds0grp{
		fsl,pins = <
 			MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x10b0
			MX6UL_PAD_JTAG_MOD__GPIO1_IO10   0x10b0
			MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x10b0
		>;
		};
};

ps. 注意标点符号的规范,0x10b0是对电气寄存器的配置:

2.3.2 设备树配置

arch/arm/boot/dts/imx6ull-elf1-emmc.dts设备树描述文件中的根目录/下添加对led的文本说明

		leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_leds0 >;
                status = "okay";
                led1{
                        lable = "led1";
                        gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
                        default-state = "on";
                };
                led2{
                        lable = "led2";
                        gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
                        default-state = "on";
                };
                led3{
                        lable = "led3";
                        gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
                        default-state = "on";
                };
        };

解释:
compatible: 兼容,表示该设备可以被一个或多个驱动匹配,此处匹配gpio-leds驱动;
定义的pinctrl_leds0标签在此处使用
status 设置为 “okay” 表示 LED可用
gpios表示对映的引脚和极性(GPIO_ACTIVE_LOW 或GPIO_ACTIVE_HIGH)
default-state 表示默认状态,有"off"和"on"两种状态

2.3.3 生成镜像和设备树

make menuconfig
make -j2

在menuconfig中,按"/LEDS_GPIO”查找,选中保证该驱动已经编译进内核

2.3.4 拷贝下载验证

将相关镜像和设备树发送到开发板

scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@192.168.0.232:/run/media/mmcblk1p1/
scp arch/arm/boot/zImage root@192.168.0.232:/run/media/mmcblk1p1/

在开发板保存重启

sync
reboot

更改前:在这里插入图片描述
更改后:
在这里插入图片描述
现在可以通过操作文件点灯:

echo 0 > /sys/class/leds/led1/brightness
echo 1 > /sys/class/leds/led1/brightness

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1370836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET Framework 与 .NET Core 与 .NET Standard 之间的差异

介绍 在本文中&#xff0c;我们将探讨 .NET Framework、.NET Core 和 .NET Standard 之间的差异。 .NET Framework 与 .NET Core .NET框架.NET核心 历史 .NET Framework 是 .NET 的第一个实现。 .NET Core 是 .NET 的最新实现。 开源 .NET Framework 的某些组件是开源的。 .N…

在学习爬虫前的准备

1. 写一个爬虫程序需要分几步 获取网页内容。 我们会通过代码给一个网站服务器发送请求&#xff0c;它会返回给我们网页上的内容。 在我们平时使用浏览器访问服务器内容是&#xff0c;本质上也是向服务器发送一个请求&#xff0c;然后服务器返回网页上的内容。只不过浏览器还会…

Spark八:Spark性能优化

Spark性能调优 Spark调优的方法&#xff0c;包括RDD使用、文件读取&#xff0c;partition 学习资料&#xff1a;https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 一、Spark调优之RDD算子调优 1.1 RDD复用 在对RDD进行计算时&#xff0c;要避免相同的算子和计算逻辑下对…

高防服务器、高防 IP 和高防 CDN 之间有什么区别?

网络运营人员最头痛的是什么&#xff1f; 网络攻击无疑名列前茅。一旦企业遭受网络攻击&#xff0c;所面临的损失可能是无法估量的。那么&#xff0c;如何有效地抵御网络攻击呢&#xff1f; 高防 IP、高防 CDN 和高防服务器是当前主流的防御手段。那何为“高防”呢&#xff1…

unity小程序websocket:nginx配置https (wss)转http (ws)及其他问题解决

目录 前言 实际运用场景 处理流程如下 nginx配置ssl和wss 配置过程中遇到的问题 1、无法连接服务器 2、通过IP可以访问&#xff0c;域名却不行 问题描述 解决 3、如何判断该域名是否备案了 前言 为了服务器网络的通用性&#xff0c;我们在实现移动端的游戏转微信小程序…

植物大战僵尸小游戏抖音快手直播搭建弹幕插件教程

植物大战弹幕插件功能介绍 该插件由梦歌技术部团队支持开发&#xff0c;本插件软件通过监测抖音弹幕信息&#xff0c;获取礼物数据触发脚本插件对应的功能&#xff1b; 功能目前基本上已经完善&#xff0c;后期功能会陆续上线支持更新&#xff0c;全新的脚本监测稳定方便实用…

2024年1月9日学习总结

目录 学习目标学习内容联邦学习基础&#xff1a;why, what, howwhy&#xff1f;what&#xff1f;how&#xff1f; 联邦学习的例子——CIFAR-10数据集&#xff08;分类问题&#xff09;1、import libararies2、hyper-parameters3、加载并且划分数据4、创建神经网络模型5、helper…

易基因:ChIP-seq等揭示WWOX基因通过上调Myc促进骨肉瘤发生发展的表观调控机制|Cell Death Dis

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 骨肉瘤&#xff08;Osteosarcoma, OS&#xff09;是一种高侵袭性骨肿瘤&#xff0c;主要影响儿童和青少年。这种恶性肿瘤与不良临床结果相关&#xff0c;尤其是肺转移。由于其罕见性和生…

【7-zip密码】7-Zip如何取消文件加密的密码

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确的密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…

Ubuntu20二进制方式安装nginx

文章目录 1.下载nginx安装包2.安装nginx3.安装出现的问题及解决方案错误1&#xff1a;错误2&#xff1a;错误3&#xff1a; 4.常用命令5.知识扩展&#xff1a; 1.下载nginx安装包 nginx官网&#xff1a;http://nginx.org/en/download.html 选择稳定的nginx版本下载。 2.安装ngi…

SWM341系列之SWM34SRET6介绍

SWM341系列的介绍 本文介绍了华芯微特SWM341系列主要性能&#xff0c;和其系列之一的SWM34SRET6-50驱动4.3寸800*480 TFTLCD显示的例程应用。 SWM341系列性能 SWM341是一款基于ARM Cortex-M33的32位微控制器&#xff0c;片上包含精度为 1%以内的 20MHz/40MHz 时钟&#xff0c;最…

Java18:网络编程

一.对象序列化&#xff1a; 1.对象流&#xff1a; ObjectInputStream 和 ObjectOutputStream 2.作用&#xff1a; ObjectOutputSteam&#xff1a;内存中的对象-->存储中的文件&#xff0c;通过网络传输出去 ObjectInputStream:存储中的文件&#xff0c;通过网络传输出去…

状态管理小能手:Cookie 和 Session

1. 引言 大家好&#xff0c;我是小❤&#xff0c;一个漂泊江湖多年的 985 非科班程序员&#xff0c;曾混迹于国企、互联网大厂和创业公司的后台开发攻城狮。 假期抢票的尴尬事件 最近小❤在抢出行的高铁票时&#xff0c;发生了一件尴尬的事情。 这不是临近假期了嘛&#xf…

【数字图像处理】水平翻转、垂直翻转

图像翻转是常见的数字图像处理方式&#xff0c;分为水平翻转和垂直翻转。本文主要介绍 FPGA 实现图像翻转的基本思路&#xff0c;以及使用紫光同创 PGL22G 开发板实现数字图像水平翻转、垂直翻转的过程。 目录 1 水平翻转与垂直翻转 2 FPGA 布署与实现 2.1 功能与指标定义 …

SSM 基础知识点

1. IoC IoC—Inversion of Control&#xff0c;即“控制反转”&#xff0c;不是什么技术&#xff0c;而是一种设计思想。在 Java 开发中&#xff0c;IoC 意味着将你设计好的对象交给容器控制&#xff0c;而不是传统的在你的对象内部直接控制。 谁控制谁&#xff0c;控制什么&…

Linux网络配置

一、查看网络配置 1、查看网络接口信息ifconfig 1.查看所有活动的网络接口信息 2.查看指定网络接口信息 ifconfig 网络接口 ifconfig -a #显示所有活动及非活动的连接 ifconfig网络接口 ifconfig -a #显示所有活动及非活动的连接 主机的网络接口卡(网卡)通常称为网络接口…

QT上位机开发(动态添加控件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 开发界面的时候&#xff0c;大多数情况下&#xff0c;我们都是推荐优先使用designer来进行界面开发。但凡事总有例外&#xff0c;如果控件本身数量…

C#编程-实现在文本文件中的读和写

实现在文本文件中的读和写 Stream类用于从文本文件读取数据和向文本文件写入数据。它是一个抽象类,支持向流读写字节。如果文件的数据仅是文本,那么您可以使用StreamReader类和StreamWriter类来完成相应的读和写任务。 StreamReader类 StreamReader类继承自从抽象类TextRea…

扩展边界opencv

扩展图像的边缘&#xff08;如上边增加50像素&#xff09;通常是通过添加额外的像素行来实现的 使用cv2.copyMakeBorder函数 valueborder_color指定了边框的颜色 import cv2 import numpy as np# 读取图像 image cv2.imread(th.jpg)# 设置边框宽度 top_border_width 50 # …