【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.hqwc.cn/news/335947.html

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

相关文章

【复习】人工智能 第7章 专家系统与机器学习

专家系统就是让机器人当某个领域的专家&#xff0c;但这章专家系统不咋考&#xff0c;主要靠书上没有的机器学习。 一、专家系统的基本组成 二、专家系统与传统程序的比较 &#xff08;1&#xff09;编程思想&#xff1a; 传统程序 数据结构 算法 专家系统 知识 推理 &…

关于java的冒泡排序

关于java的冒泡排序 我们前面的文章中了解到了数组的方法类Arrays&#xff0c;我们本篇文章来了解一下最出名的排序算法之一&#xff0c;冒泡排序&#xff01;&#x1f600; 冒泡排序的代码还是非常简单的&#xff0c;两层循环&#xff0c;外层冒泡轮数&#xff0c;里层依次比…

日志系统一(elasticsearch+filebeat+logstash+kibana)

目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装&#xff08;docker方式&#xff09; 三、logstash部署 四、kibana部署 背景&#xff1a;因业务需求需要将nginx、java、ingress日志进行收集。 架构&#xff1a;filebeatlogstasheskib…

TypeScript基础(五)泛型

✨ 专栏介绍 TypeScript是一种由微软开发的开源编程语言&#xff0c;它是JavaScript的超集&#xff0c;意味着任何有效的JavaScript代码都是有效的TypeScript代码。TypeScript通过添加静态类型和其他特性来增强JavaScript&#xff0c;使其更适合大型项目和团队开发。 在TypeS…

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析 【赛程名称】高职组-云计算赛项第一场-私有云【任务 1】私有云服务搭建[10 分]【题目 2】Yum 源配置[0.5 分]【题目 3】配置无秘钥 ssh[0.5 分]【题目 4】基础安装[0.5 分]【题目 5】数据库安装与调优[0.5 分]【题目 …

再谈前端算法

楔子 – 青蛙跳台阶什么是算法算法实例 &#xff1a; 实现一个LRU缓存 实现 LRUCache扩展&#xff1a; ES6 Map Map的创建和初始化&#xff1a;添加键值对&#xff1a;获取键值对&#xff1a;检查Map中是否存在某个键&#xff1a;删除键值对&#xff1a;遍历Map&#xff1a;获取…

Python综合数据分析_RFM用户分组模型

文章目录 1.导入数据2.月度订单数据可视化3.数据清洗4.特征工程5.构建User用户表6.求R值7.求F值8.求M值9.显示R、F、M值的分布情况10.显示手肘图辅助确定K值11.创建和训练模型12.给R值聚类13.给聚类后的层级排序14.继续给F、M值聚类&#xff0c;并排序15.为用户整体分组画像 1.…

数据库连接池配置生成、读取二维码集成多数据源入参字段定义为Date类型,支持时间戳及年-月-日

数据库连接池配置 # 数据源配置 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:# 主库数据源master:url: jdbc:mysql://localhost:3306/database?useUnicodetrue&characterEncodingutf8&zeroDateT…

数据库:如何取消mysql的密码

因为调试MySQL数据接口&#xff0c;总是需要输入密码很烦&#xff0c;所以决定取消mysql的root密码&#xff0c; 网上推荐的有两种方法&#xff1a; 1、mysql命令 SET PASSWORD FOR rootlocalhostPASSWORD(); 2、运行 mysqladmin 命令 mysqladmin -u root -p password …

Docker与微服务实战(基础篇)

Docker与微服务实战&#xff08;基础篇&#xff09; 1、Docker简介2、Docker安装步骤1.Centos7及以上的版本2.卸载旧版本3.yum安装gcc相关4.安装需要的软件包5.设置stable镜像仓库【国内aliyun】6.更新yum软件包索引--以后安装更快捷7.安装Docker-Ce8.启动Docker9.测试10.卸载1…

2024.01.09.Apple_UI_BUG

我是软件行业的&#xff0c;虽然不是手机设计的&#xff0c;但是这个设计真的导致经常看信息不完整&#xff0c;要下拉的。 特别读取文本或者其他文件的时候&#xff0c;上面有个抬头就是看不到&#xff0c;烦&#xff0c;体验感很差

解决在eclipse2021中,用mysql-connector-java-8.0.18.jar不兼容,导致无法访问数据库问题

1.环境场景 组件版本mysql5.7.44mysql-connector-java80.18 2. 问题描述 报mysql-connector-java 驱动连不上mysql数据库。 3. 可能的原因分析 查看数据库连接句柄是否对 如果数据库连接句柄中没有 useSSLfalse 的话可能会导致这样的问题。 就像下面这样&#xff1a; jdb…