展讯-GPIO操作

1.修改IO配置

以GPIO92为例

IO配置文件在:

bsp/kernel/kernel4.14/arch/arm64/boot/dts/sprd/uis8581e5h10.dts
bsp/bootloader/u-boot15/board/spreadtrum/uis8581e5h10/pinmap-sp9863a.c

配置

按上述内容,配置IO口

编译之前查看硬件GPIO,没有GPIO92

cat d/gpio

编译

2.ADB操作GPIO

adb shell
su
echo 284 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio284/direction
cat d/gpio

查看

echo 1 > /sys/class/gpio/gpio284/value

输出高电平

实测正常

3.安卓源码下C文件编译

创建文件夹及相关文件

test/Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
 
LOCAL_STATIC_LIBRARIES := libcutils libc
LOCAL_MODULE :=   gpiotest
 
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_SRC_FILES:= \
         gpiotest.c
 
LOCAL_C_INCLUDES := bionic/libc/bionic
 
ifeq ($(HAVE_SELINUX),true)
LOCAL_CFLAGS += -DHAVE_SELINUX
LOCAL_SHARED_LIBRARIES += libselinux
LOCAL_C_INCLUDES += external/libselinux/include
endif
 
include $(BUILD_EXECUTABLE)

test/gpiotest.c

#include<stdio.h>

int main()
{
    printf("Hello World!\n");
}

进入目录angleyes/test,编译

cp -rf vendor/sprd/release/IDH/uis8581e5h10_Natv-userdebug-native/out/ .
cp -rf vendor/sprd/release/IDH/uis8581e5h10_Natv-userdebug-native/bsp/ .
source build/envsetup.sh
lunch uis8581e5h10_Natv-userdebug-native
mm

找到输出目录

上传到设备上

adb root
adb disable-verity
adb reboot
adb root
adb remount
adb shell
mount -o rw,remount /system
exit
adb push gpiotest /system

测试代码

chmod a+x gpiotest
./gpiotest

4.通过源码控制GPIO

将上部分的c文件修改一下

#include <stdio.h>
#include <string.h>
#include <fcntl.h>// for open
#include <unistd.h>// for close

int main()
{
    int ret, fd; 
    fd = open("/sys/class/gpio/export", O_WRONLY); 
    if (fd < 0) 
    return -1; 
    ret = write(fd, "284", strlen("284")); if (ret < 0) 
    return -1; 
    close(fd); 
    fd = open("/sys/class/gpio/gpio284/direction", O_RDWR); 
    if (fd < 0)
    return -1; 
    ret = write(fd, "out", strlen("out")); 
    if (ret < 0) 
    return -1; 
    close(fd); 
    fd = open("/sys/class/gpio/gpio284/value", O_RDWR); 
    if (fd < 0) 
    return -1;
    ret = write(fd, "1", strlen("1")); 
    if (ret < 0)
    return -1; 
    close(fd);
}

测试

uis8581e5h10:/system # chmod a+x gpiotest
uis8581e5h10:/system # ls /sys/class/gpio/
export  gpio218 gpiochip176 gpiochip448 gpiochip480 unexport
gpio217 gpio268 gpiochip192 gpiochip464 gpiochip496
uis8581e5h10:/system # ./gpiotest
uis8581e5h10:/system # ls /sys/class/gpio/
export  gpio218 gpio284     gpiochip192 gpiochip464 gpiochip496
gpio217 gpio268 gpiochip176 gpiochip448 gpiochip480 unexport
uis8581e5h10:/system #

5.按键功能调试

设备树位置:bsp/kernel/kernel4.14/arch/arm64/boot/dts/sprd/uis8581e5h10.dts

修改节点:gpio-keys

如新增sos按键

key-sos {
			label = "SOS Key";
			linux,code = <KEY_F1>;
			gpios = <&ap_gpio 55 GPIO_ACTIVE_LOW>;
			debounce-interval = <2>;
			wakeup-source;
		};

在内核层查看

cat /sys/kernel/debug/gpio

配置pinmap

gpio55:REG_PIN_SPI2_CLK

gpio123:REG_PIN_KEYOUT2

gpio28:REG_PIN_RFCTL9

在pinmap里面,找到对应内容

编译,通过命令;getevent -p

查看按键消息

通过命令:getevent

监听按键

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

建议收藏!100款宝藏级AIGC工具分享,70款ChatGPT插件惊艳的开发过程与宏大的商业化愿景

建议收藏&#xff01;100款宝藏级AIGC工具分享&#xff0c;70款ChatGPT插件惊艳的开发过程与宏大的商业化愿景。 不输ChatGPT&#xff1f;整理了100款AIGC神器&#xff0c;打工人速进。 说到AIGC工具&#xff0c;你还是只知道ChatGPT&#xff1f; 实际上&#xff0c;越来越多…

校园设施物联网信息化改造

随着物联网技术的发展越来越成熟&#xff0c;它不断地与人们的日常生活和工作深入融合&#xff0c;推动着社会的进步。其中物联网系统集成在高校实践课程中可以应用到许多项目&#xff0c;如环境气象检测、花卉种植信息化监管、水质信息化监管、校园设施物联网信息化改造、停车…

基于YOLOv8m的水族馆动物识别(附数据集和Coovally操作步骤)

本文主要内容:详细介绍了水族馆动物识别的整个过程&#xff0c;从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式&#xff0c;请先看检测效果 现状 随着水族馆行业的快速发展&#xff0c;对动物识别的需求日益增加。水族馆需要准确识别动物种…

爬虫阶段思考

内容&#xff1a;写这篇文章是因为最近帮同学改了很多的爬虫代码&#xff0c;感触良多。 我用豆瓣为例&#xff0c;并不是不会用别的&#xff0c;而是这个我个人感觉最经典。然后还会写我遇到的一些问题以及解决方法。 首先&#xff0c;我们得先知道怎样爬取。我用的scrapy框…

揭秘shopee、Lazada爆单秘诀:自养号补单策略大公开

在东南亚的电商跨境领域&#xff0c;Shopee和Lazada无疑占据了举足轻重的地位&#xff0c;为印地、马来、台湾、菲律宾、新加坡、泰国和越南等地的消费者提供了丰富的在线购物选择。随着电商竞争的日益激烈&#xff0c;许多商家开始探索各种有效的推广策略&#xff0c;其中&…

Python应用开发——30天学习Streamlit Python包进行APP的构建(8)

st.table 显示静态表格。 这与 st.dataframe 的不同之处在于,这里的表格是静态的:其全部内容直接显示在页面上。 Function signature[source]st.table(data=None) Parametersdata (pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame,…

哪个牌子充电宝好?好用充电宝排行榜!精选充电宝排行榜

在如今这个科技飞速发展的时代&#xff0c;充电宝已然成为我们日常生活中不可或缺的伴侣。无论是出差旅行&#xff0c;还是日常通勤&#xff0c;我们都离不开它为我们的电子设备保驾护航。然而&#xff0c;面对市场上琳琅满目的充电宝品牌&#xff0c;您是否感到眼花缭乱&#…

【九】【QT开发应用】WebRTC的sigslot源码和使用WebRTC的sigslot使用编写信号槽

WebRTC&#xff08;Web Real-Time Communication&#xff09; 是一个开源项目&#xff0c;提供实时通信能力&#xff0c;广泛应用于视频、音频和数据传输。在WebRTC的实现中&#xff0c;sigslot库用于信号和槽机制&#xff0c;以实现事件驱动的编程模型。 WebRTC的sigslot部分…

[个人感悟] MySQL应该考察哪些问题?

前言 数据存储一直是软件开发中必不可少的一环, 从早期的文件存储txt, Excel, Doc, Access, 以及关系数据库时代的MySQL,SQL Server, Oracle, DB2, 乃至最近的大数据时代f非关系型数据库:Hadoop, HBase, MongoDB. 此外还有顺序型数据库InfluxDB, 图数据库Neo4J, 分布式数据库T…

陀螺仪LSM6DSV16X与AI集成(8)----MotionFX库解析空间坐标

陀螺仪LSM6DSV16X与AI集成.8--MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启CRC串口设置开启X-CUBE-MEMS1设置加速度和角速度量程速率选择设置FIFO速率设置FIFO时间戳批处理速率配置过滤链初始化定义MotionFX文件卡尔曼滤波算法主程序执行流程lsm6dsv16x_motion_fx…

Spring IOC架构设计解析

一、spring famework 模块解析 二、SpringIOC容器:Core Container: Beans、Core、Context、Expression 三、BeanFactory (该接口定义了容器最基本的功能方法)和 ApplicationContext&#xff08;对容器提供了更丰富的功能扩展&#xff0c;大部分应用中所使用的基于它实现&…

LLM之表格理解任务-文本模态

这一章我们聊聊大模型表格理解任务&#xff0c;在大模型时代主要出现在包含表格的RAG任务&#xff0c;以及表格操作数据抽取文本对比等任务中。这一章先聊单一的文本模态&#xff0c;既你已经通过OCR或者多模态等方式从PDF或者图片中获取了表格的文本数据。和前文相同&#xff…

Kompas AI 语音识别技术的对比

一、引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;语音识别技术已经成为现代智能助手和设备的重要组成部分。随着技术的不断发展&#xff0c;语音识别的准确度和应用范围也在逐步扩大。本文将对比Kompas AI与其他主要AI产品在语音识别技术上的表现&#xff0c;突…

嵌入式学习——数据结构(双向无头有环链表、内核链表、栈)——day48

1. 约瑟夫环问题——双向无头回环链表 1.1 问题描述 给定 ( n ) 个人&#xff08;编号为 ( 1, 2, \ldots, n )&#xff09;&#xff0c;他们围成一个圈。从第一个人开始报数&#xff0c;每报到第 ( k ) 个人时&#xff0c;杀掉这个人&#xff0c;然后从下一个人重新开始报数。…

Softing “Ethernet-APL现场交换机”亮相ACHEMA 2024

Softing工业在ACHEMA 2024上展示了新的“aplSwitch Field”。作为一个先进的16端口以太网高级物理层&#xff08;Ethernet-APL&#xff09;现场交换机&#xff0c;它配有可选的PROFIBUS Process Automation&#xff08;PA&#xff09;代理&#xff0c;适用于Zone 2环境&#xf…

Windows 可变刷新率是什么?如何开启?

在现代计算设备中&#xff0c;显示屏的刷新率对用户体验起着至关重要的作用。随着显示技术的不断进步&#xff0c;固定刷新率显示器逐渐被支持可变刷新率&#xff08;Variable Refresh Rate, VRR&#xff09;技术的显示器所取代。 可变刷新率定义 可变刷新率是什么&#xff1…

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;系统流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 系统登录注册 系统登录 登录界面 用户添加 &#x1f4ac; 抗疫列表展示模块 区域信息管理 …

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档&#xff1a;https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址&#xff1a;https://github.com/Hufe921/canvas-editor 前提声明&#xff1a; 由于CanvasEditor目前不支持vue、react 等框架开箱即用版&#xff0c;所以…

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展&#xff1a;人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点&#xff1a;数据的管理者&#xff08;DBMS&#xff09;&#xff1b;数据结构化&#xff1b;数据共享性高&#xff0c;冗余度低&#xff0c;易于扩充&#xff…

初学51单片机之PWM实例呼吸灯以及遇到的问题(已解答)

PWM全名Pulse Width Modulation中文称呼脉冲宽度调制 如图 这是一个周期10ms、频率是100HZ的波形&#xff0c;但是每个周期内&#xff0c;高低电平宽度各不相同&#xff0c;这就是PWM的本质。 占空比是指高电平占整个周期的比列,上图第一个波形的占空比是40%&#xff0c;第二个…