3588 pwm android12 的操作,包含 NDK native C++

2024-05-15 16:52

本文主要是介绍3588 pwm android12 的操作,包含 NDK native C++,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题: 客户需要在android12 的界面上操作板卡上的 PWM 蜂鸣器设备。

过程:

1 了解一下 3588 android12 源码的 关于PWM 的驱动。

设备树找不到 pwm

但是,

还不知道,android12 最终包含的 设备树是哪个,但是经过我的测试, 在android12 的 shell 里可以通过 sysfs 操作 pwm15.

2 了解一下PWM 子系统。

主要参考的是 正点原子的手册。

linux 有pwm 子系统。 芯片厂商需要完成的函数。

官方的pwm 驱动 只是在 /sys/ 目录下生成节点。

3 能否在 /dev/ 下生成设备节点。

感觉是可以的。

可以按照裸机的方式+字符设备的方式,自己写驱动。

能不能 改官方的 pwm子系统呢? 估计不行,太复杂。

4 怎么在andorid界面上 操作 PWM

要么是 写一个 操作 /sys/ 节点的C应用程序,然后,android app 去调用这个应用程序。

要么就是通过 NDK的方式 去操作 PWM , 但是最后还是会走到 操作 /sys/ 的设备节点。

5 测试一下直接在shell 中操作 /sys/ 看看有没有权限的限制。

发现没有。

6 接下俩写一个 C程序,在shell 中执行,看看,有没有权限。

后来我发现,在andoid12 的shell 中,无法使用 gcc 编译器,难道是没有 gcc 编译器吗?

所以只能是, 先编译好, 应用程序,然后拷贝到 android12 的命令行,测试。

但是没有找到 android12 的编译器路径。

使用这种方法也不行。

干脆使用 linux 源码中的编译器。
 

直接在 build.sh 中便找到了。

用这个编译一遍测试一下。

将程序 通过U盘拷贝到 android12 的shell 测试一下。

执行时有这个报错。

这个错误的解决方法 :

但是我还有另一种方式的测试,就是使用 android 的 NDK 。

1 首先是安装 android studio

发现网址 https://developer.android.com/studio?hl=zh-cn

无法下载 android studio 所以使用 网盘上之前的 android studio 进行安装。

这里需要等一段时间才可以 点击下一步,可能是在下载什么东西。

        

接下俩测试第一个程序。

出现这个界面

然后是 下载一个虚拟机。

从新下载一下 android11 的 SDK。

依然报相同的错误。

增加几个SDK看看。

还是不行。

还是这个报错。

继续解决:  原因是, 我自定义 了 SDK 的安装目录

这样做依然是 不可以。

干脆就要 卸载重装了。

        

卸载完。

重新安装。

剩下的步骤跟上面是一样的,只是我还是自定义了studio 的安装 的目录。

但是还是报错。

哈哈哈。彻底崩了。

接下来我就 安装一个 win10 的虚拟机。系统崩了大不了重新安装。

网页链接  下载 Windows 10

然后无脑下一步。

大概有4G

接下来就是 ,使用虚拟机安装 iso 了。

使用net 是可以上网的。

通过远程桌面的方式, 在win10 虚拟机 与 宿主机之间来 传输文件。

结果是不支持。

那么我就使用 共享的方式来传文件。

在虚拟机中直接使用这种方式。

虽然 我的 主机是 192.168.1.113,  虚拟机的ip 是: 192.168.128.132, 这样也是可以的。

然后安装的话,就是,一路next , 不设置任何的个人路径,看看怎么样。

但是在虚拟机中 win10 的安装报错。

然后重新 启动一下。

但是依然是这个报错。

重新sync 的方式。

在测试一遍 看看行不行。

还是不行。

我最终的解决方法: 去掉这个斜杠。

然后就是 安装虚拟机,按照上面的步骤进行安装。

结果又有报错。

在虚拟机中开启bios ,这是uefi.

结果跳到了, 重新安装的界面。

那么接下来就重新安装就好了。

这次对上了。

但是TMD ,bios 里面没有 虚拟化选项。

但是bios 里面依然是没有这个选项。

直接启动在系统里查看一下。

但是查不到。

最终还是使用的这个方法。

接下来 测试, android studio 的 虚拟机。

问题: 

下载SDK

但是在虚拟机中的 android studio 仍然是报一样的错误。

我开始怀疑这个 android studio 的安装包了。

尝试在虚拟机中下载 android studio , 居然是可以的。

依然是这个错误:

有点无奈了。

重新在PC机上 安装上了最新的 androdi studio 但是还是之前的 错误。

2 然后是安装 NDK

3 然后是编写native C++ 的测试程序。

这篇关于3588 pwm android12 的操作,包含 NDK native C++的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992380

相关文章

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷