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

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 0x10b0MX6UL_PAD_JTAG_MOD__GPIO1_IO10   0x10b0MX6UL_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.mzph.cn/news/609791.shtml

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

相关文章

【AI视野·今日Robot 机器人论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 4 Jan 2024 Totally 17 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Many-Objective-Optimized Semi-Automated Robotic Disassembly Sequences Authors Takuya Kiyokawa, Kensuke Harada, Weiwei …

canvas绘制路径之 beginPath() 和 closePath()

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

《Shader开发实战》-笔记

一、初识游戏图形 1、什么是渲染&#xff1f; 渲染实际上就是创建图像的过程&#xff0c;在渲染过程中创建的图像被称为渲染或者帧&#xff0c;该图像&#xff08;帧&#xff09;以每秒多次在计算机屏幕上进行呈现&#xff0c;即帧率。 负责渲染图像&#xff08;帧&#xff09…

【Redis】非关系型数据库之Redis的主从复制、哨兵和集群高可用

目录 一、主从复制、哨兵、集群的区别 二、主从复制 2.1主从复制的作用 2.2主从复制的原理 2.3主从复制的实操 步骤一&#xff1a;环境准备 步骤二&#xff1a;安装Redis以及配置文件修改 Redis的主从配置文件都一样 步骤四&#xff1a;验证主从复制 三、哨兵 3.1哨兵…

linux(ubuntu)中drontab定时器命令详解

linux&#xff08;ubuntu&#xff09;中drontab定时器命令详解 crontab 是一个用于创建、编辑和管理用户的定时任务的命令&#xff0c;它可以让用户在指定的时间自动执行指定的命令或脚本。 基本语法 -e&#xff1a;编辑用户的 crontab 文件&#xff1b;-l&#xff1a;列出用…

4.MapReduce 序列化

目录 概述序列化序列化反序例化java自带的两种Serializable非Serializable hadoop序例化实践 分片/InputFormat & InputSplit日志 结束 概述 序列化是分布式计算中很重要的一环境&#xff0c;好的序列化方式&#xff0c;可以大大减少分布式计算中&#xff0c;网络传输的数…

Redis 常用操作

一、Redis常用的5种数据类型 字符串&#xff08;String&#xff09;&#xff1a;最基本的数据类型&#xff0c;可以存储字符串、整数或浮点数。哈希&#xff08;Hash&#xff09;&#xff1a;键值对的集合&#xff0c;可以在一个哈希数据结构中存储多个字段和值。列表&#xf…

Docker实战09|使用AUFS包装busybox

前几篇文章中&#xff0c;重点讲解了如何实现构建容器&#xff0c;需要回顾的小伙伴可以看以下文章&#xff1a; 《Docker实战06&#xff5c;深入剖析Docker Run命令》《Docker实战07&#xff5c;Docker增加容器资源限制》《Docker实战08&#xff5c;Docker管道及环境变量识别…

5.3 Android BCC环境搭建(eadb版 上)

写在前面 eadb即eBPF Android Debug Bridge,它是基于adeb的重构。后者曾随aosp 10发布在platform/external目录下。 一,root权限 这里再HighLight下,当前整个专栏都是基于开发环境来展开的,也就是Android设备需要具有root权限。因此该专栏下每一篇博客都是默认了当前开发…

YOLOv8改进 | 主干篇 | 12月最新成果UniRepLknet特征提取网络(附对比试验效果图)

一、本文介绍 本文给大家带来的改进机制是特征提取网络UniRepLknet,其也是发表于今年12月份的最新特征提取网络,该网络结构的重点在于使用Dilated Reparam Block和大核心指导原则,强调了高效的结构进行通道间通讯和空间聚合,以及使用带扩张的小核心进行重新参数化,该网络…

vsode中调试CPP

如果希望在调试的时候传入参数&#xff0c;则需要再launch.json中配置&#xff0c;这个文件就是执行&#xff08;非编译&#xff09;程序时的相关配置&#xff1a; {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: …

.netcore 6 ioc注入的三种方式

1、定义接口 public interface MyInterceptorInterface 2、实现接口 public class MyInterceptorImpl : MyInterceptorInterface 在构造中增加以下代码&#xff0c;便于观察 static ConcurrentDictionary<string, string> keyValues new ConcurrentDictionary<s…

自动化生产线-采用工业机器人比人工有哪些优势?

工业机器人相对于人工具有一些显著的优势&#xff0c;这些优势使它们在制造和生产领域得到广泛应用。以下是工业机器人相对于人工的一些主要优势&#xff1a; 1、精度和一致性&#xff1a; 机器人可以执行高精度的操作&#xff0c;确保产品的质量和规格一致&#xff0c;而且不容…

CSS渐变透明

文章目录 一、前言1.1、MDN 二、实现2.1、源码2.2、线上源码 三、最后 一、前言 使用场景&#xff1a;在做两个元素的连接处的UI适配时&#xff0c;图片的颜色不能保证一定跟背景颜色或者是主色调保持一致时&#xff0c;会显得比较突兀。 1.1、MDN MDN的文档&#xff0c;点击【…

MySQL 8.0中新增的功能(八)

用户评论和用户属性 MySQL 8.0.21引入了在创建或更新用户账户时设置用户评论和用户属性的功能。用户评论由作为COMMENT子句参数传递的任意文本组成&#xff0c;通过CREATE USER或ALTER USER语句使用。用户属性由以JSON对象形式传递的数据组成&#xff0c;作为ATTRIBUTE子句参数…

​如何在iOS手机上查看应用日志

引言 在开发iOS应用过程中&#xff0c;查看应用日志是非常重要的一项工作。通过查看日志&#xff0c;我们可以了解应用程序运行时的状态和错误信息&#xff0c;帮助我们进行调试和排查问题。本文将介绍两种方法来查看iOS手机上的应用日志&#xff0c;并提供相应的操作步骤。 …

基于Github官方教程的快速入门学习

GitHub 是一个用于版本控制和协作的代码托管平台。 它允许您和其他人随时随地协同处理项目。 创建仓库 在任何页面的右上角&#xff0c;使用 下拉菜单选择“新建存储库”。 之后会进入创建仓库的界面&#xff0c;需要我们进行如下操作&#xff1a; 写仓库的名字写对于本仓库…

无失真编码之算术编码的python实现——数字图像处理

原理 无失真编码中的算术编码是一种用于将输入数据进行高效压缩的方法&#xff0c;同时保留了原始数据的完整性。 算术编码的实现过程如下&#xff1a; 数据分段&#xff1a;首先&#xff0c;将要进行编码的数据划分为一个个符号或字符。每个符号可以是文本中的一个字母、一幅…

ubuntu 20.04下 Tesla P100加速卡使用

1.系统环境&#xff1a;系统ubuntu 20.04, python 3.8 2.查看cuDNN/CUDA与tensorflow的版本关系如下&#xff1a; Build from source | TensorFlow 从上图可以看出&#xff0c;python3.8 对应的tensorflow/cuDNN/CUDA版本。 3.安装tensorflow #pip3 install tensorflow 新版…

hadoop自动获取时间

1、自动获取前15分钟 substr(from_unixtime(unix_timestamp(concat(substr(20240107100000,1,4),-,substr(20240107100000,5,2),-,substr(20240107100000,7,2), ,substr(20240107100000,9,2),:,substr(20240107100000,11,2),:,00))-15*60,yyyyMMddHHmmss),1) unix_timestam…