实习大学生如何在Purple Pi OH鸿蒙开发板下调试Android串口?

本文适用于Purple Pi OH在Android固件后串口的开发与使用。触觉智能的Purple Pi OH鸿蒙开源主板,是华为Laval官方社区主荐的一款鸿蒙开发主板。

该主板主要针对学生党,极客,工程师,极大降低了开源鸿蒙开发者的入门门槛,具有以下几点优势:

  • 支持开源鸿蒙/Linux /Andriod 11/麒麟,兼容树莓派 ;

  • 四核A55,最高1.8G主频 Mali G52-2EE GPU ;

  • 支持OpenGL/CL/Vulkan/1T NPU/8MISP ;

  • 支持TensorFlow/MXNet/PyTorch/Caffe ;

  • 支持1*千兆以太网、3*USB2.0、1*USB3.0、3*UART、2*SPI、2*I2C、28*GPIO、1*MIPI DSI、1*HDMI ;

  • 支持OpenHarmony3.2/4.0/4.1版本,开放SDK源代码 ;

  • 活跃的开发者社区, 更多牛人在线技术支持 ;

  • 超小尺寸,极致性价比,只需249元 ;

1、介绍

今天的文章主题是分享与探讨关于Purple Pi OH开发板烧写Android 11固件后串口的开发与使用。

基于嵌入式开发的步骤,每个模块的开发与使用前都需要测试其单独工作时的状态是否正常。因此我们通常上来就会直接使用USB TO TTL串口模块(下文称CH340)连接Purple Pi OH开发板的RX、TX引脚,然后使用PC机的串口调试助手对其进行收发数据。

2、PC直连Purple Pi OH测试串口

接下来我将详细介绍PC通过CH340连接Purple Pi OH开发板后测试串口是否正常,若此方法您已使用并且还是无法打开串口,可以跳过此小段直接看后续的方法。

2.1 CH340驱动安装

在连接CH340模块至电脑时,很多新手甚至老鸟都会遇到很多奇奇怪怪的问题,基本最终的表现都是“设备管理器”中无法正常显示CH340所在的端口,如下图所示:

图片

现在我来分享如何排查PC无法识别CH340的可能问题:

1. 驱动未安装:当“设备管理器“显示未知设备并且图标上带有黄色感叹号时,我们首先需要检查我们的PC机是否安装了CH340对应的驱动,安装方法如下:

a) 下载CH340驱动安装软件,一般在网上一检索就可以下载到

图片

,我们双击打开后,页面如下图所示:

图片

b)  安装之前先点击卸载,这是为了防止电脑之前有驱动残留的数据,卸载完毕后我们再点击安装即可。

2. CH340模块本身损坏:CH340插入USB口时,模块本身会有红色PWR灯亮起,若不亮可能是模块本身损坏。

3. 扩展坞或PC主板USB口损坏:如果上述的方法无法解决,我们也应该考虑是否是扩展坞或者PC主板USB口损坏,此时我们需要更换USB口甚至更换另一台PC机插入排查是不是这个问题。

4. 开发板连接着CH340导致无法识别:导致这种现象的原因有很多种,可能是您使用开发板给CH340提供了错误的供电,当供电不稳定或者电流不足有可能会导致CH340无法正常工作,因此我们通常只连接CH340和开发板的GND、Tx、Rx引脚。还有可能是开发板硬件资源与CH340有冲突导致无法识别。甚至是开发板电路设计问题,即没有按照CH340规范来设计电路等原因。

2.2 硬件连接

1. 将CH340插入PC机USB口,打开“设备管理器”

2. 在设备管理器列表中,找到“端口 (COM & LPT)”类别,展开它。你应该能看到一个标记为“USB-SERIAL CH340”(或类似名称)的设备,旁边会显示它的 COM 端口号,比如 COM6。

图片

若成功显示,即代表CH340模块正常。

3. 接下来我们需要将CH340的RX和TX分别连接在Purple Pi OH开发板的TX和RX脚上,在连接时可以根据背后丝印来判断是否连接正确。Purple Pi OH开发板串口节点/dev/ttyS0引脚位置,如下图 所示:

图片

     

       至此我们的硬件连接就完成了,接下来可以开始软件测试串口步骤。

2.3 软件测试

1. 第一步我们首先需要进入Purple Pi OH开发板的命令行终端,可以通过ADB连接到其中。ADB的使用方法可以参考触觉智能官网产品资料中的4.2章节,链接如下:

https://industio.yuque.com/mdtih8/gyzv1h/uecrhad89197uh01?singleDoc#aOLed

2. 第二步我们进入到命令行后,使用”su”切换为root身份,通过执行“dmesg | grep tty”命令查看系统启动时识别到的串口设备,再使用 stty 命令检查和设置串口参数,例如”stty –F /dev/ttyS0 115200”将串口节点波特率设置为115200.

图片

3. 第三步我们打开SSCOM或者类似的串口调试助手,选择“设备管理器“中识别到的COM口,配置波特率为刚刚使用stty命令设置的波特率,同时设置数据位、停止位、校验位以及流控制参数分别为8,1,None,None,随后点击打开串口,如下图所示:

图片

4. 如果此时一切顺利,我们便可以通过SSCOM与Purple Pi OH开发板互相收发串口信息,发送数据使用指令”echo “test” > /dev/ttyS0”,查看开发板接收到的数据使用”cat /dev/ttyS0”,此时SSCOM发送数据到开发板,开发板会将串口数据回显至SSCOM,如下图所示:

图片

2.其他常见问题

1. 数据呈现乱码或者\0\0\0…”波特率设置不对,使用stty修改开发板串口节点波特率后再次尝试。

2. 怎么查看串口节点:通过命令”ls /dev/tty*”查看设备串口节点,通过硬件规格书或者使用手册查询开发板串口引脚或端口位置。

3. 设备节点无法操作:通过”ls –l /dev/tty*”查看是否权限不足,通过su切换管理员后使用”chmod 666 /dev/ttyS0“修改文件读写权限。

4. 用户使用自己的app无法打开串口节点:先查看自己的app是否在Android 11的版本被支持,也有可能app不扫描这个节点名称,可以重新找一个串口助手查看是app问题还是串口节点问题(可以使用Google开源SerialPort)。或者查看串口是否被占用,尝试打开其他串口设备节点。

3、Android 11 SELinux功能

若上述操作无法解决串口无法被访问的问题,我们就需要查看SELinux是否对我们的访问做了限制,接下来我将分享SELinux的概念和处理方式。

3.1 SELinux简介

在基于Android的设备上,SELinux(Security-Enhanced Linux)是一种安全模块,用于强化访问控制策略。SELinux可以通过强制访问控制(MAC)来限制应用程序和系统进程对系统资源的访问。

3.2 SELinux阻止串口被访问的情况

1. 没有正确的SELinux政策如果SELinux政策没有为访问特定串口的进程或应用程序明确授权,那么访问会被阻止。需要相应的SELinux上下文或标签(如u:object_r:serial_device:s0)允许对应用程序或进程访问串口。

2. SELinux处于Enforcing模式当SELinux处于Enforcing模式时,它会强制执行所有的安全策略,并阻止任何违反这些策略的行为。如果串口设备的SELinux标签或访问控制列表(ACL)配置不正确,任何尝试访问这些设备的操作都会被阻止。此时我们可以使用“getenforce“命令直接检查SELinux的模式。

3. 设备文件权限不足:串口通常作为设备文件(如/dev/ttyS0)存在于文件系统中。如果这些文件的SELinux标签设置不允许特定的访问(例如,某个应用需要读写权限但仅被授予了读权限),则访问会被拒绝。

3.3 解决SELinux串口访问问题

要解决由SELinux导致的串口访问问题,可以采取以下步骤:

1. 检查SELinux状态使用“getenforce“命令查看SELinux的当前模式。如果是Enforcing,系统会强制执行所有策略。

2. 查看和修改SELinux政策使用”audit2allow”查看由于SELinux政策被拒绝的相关日志,以了解为什么访问被拒绝。根据需要调整或创建新的SELinux政策。这可能需要深入了解SELinux政策语言,并使用如semanage和semodule等工具。

3. 临时切换到Permissive模式作为临时解决方案,可以将SELinux设置为Permissive模式,这样SELinux不会阻止任何操作,但会记录所有违反政策的行为。可以使用“setenforce 0“命令来实现,如下图所示:

图片

4. 于安卓源码中关闭:修改安卓源码中device/rockchip/common/BoardConfig.mk 的BOARD_SELINUX_ENFORCING := false;

5. 确保有适当的设备文件权限:确保应用或进程有正确的权限来访问串口设备文件。使用ls -l查看设备文件的权限和所有权。

购买链接

Purple Pi OH 购买链接

https://m.tb.cn/h.g1qerYc?tk=ahOAWGe64ky

图片

Purple Pi OH已过XTS兼容性认证

图片

好啦,关于Purple Pi OH开发板串口使用的分享今天就到此为止啦。非常感谢大家的耐心阅读,祝大家生活顺利,代码一调就通!

END

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

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

相关文章

Ubuntu系统搭建Tipask开源问答系统并发布公网分享好友远程访问

文章目录 1. 前言2.Tipask网站搭建2.1 Tipask网站下载和安装2.2 Tipask网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道(云端设置)3.3 Cpolar稳定隧道(本地设置) 4. 公网访问测试5. 结语…

神经网络复习--数学相关基础知识

文章目录 矩阵范数卷积激活函数信息熵 矩阵 标量:一个标量就是一个单独的数向量:一个向量是一列数。这些数是有序排列的。通过次序中的索引,我们可以确定每个单独的数矩阵:矩阵是一个二维数组,其中的每个元素被两个索…

基于网络的无人海洋船舶控制

书籍:Network-Based Control of Unmanned Marine Vehicles 作者:Yu-Long Wang,Qing-Long Han,Chen Peng,Lang Ma 出版:Springer 书籍下载-《基于网络的无人海洋船舶控制》控制系统中的通信网络可能引起延…

IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例

近日,国际知名数据咨询机构 IDC 重磅发布了《IDC PeerScape:金融领域中数据管理分析服务最佳实践案例》报告,Aloudata 与招商银行联合打造的 DDH 数据研发运维一体化平台成功入选,Aloudata 的技术、产品实力,以及在金融…

英语学习笔记12——名词所有格的运用

Whose is this … ? This is my/your/his/her … 这……是谁的?这是我的 / 你的 / 他的 / 她的…… Whose is that … ? That is my/your/his/her … 那……是谁的?那是我的 / 你的 / 他的 / 她的…… 词汇 Vocabulary father n. 爸爸 口语&#xf…

【Java】引用

变量的实质是一小块内存单元,这一小块内存里存储着变量的值 而当变量指向一个对象时,这个变量就被称为引用变量 比如 A anew A(); a 就是引用变量,它指向了一个A对象,也可以说它引用了一个A对象 我们通过操纵这个a来操作A对象。…

【RabbitMQ】消息队列 - RabbitMQ的使用记录

目录 一、什么是消息队列 二、什么是RabbitMQ 三、安装RabbitMQ 3.1 安装Erlang环境 3.2 安装RabbitMQ 3.3 打开服务管理界面 3.4 常用命令 四、Python示例代码 4.1 发送数据 4.2 接收数据 一、什么是消息队列 消息队列(Message Queue)是一种用于在应用程序之间传递消…

Docker 部署 Prometheus 实现一个极简的 QPS 监控

背景 : Prometheus 是近年来最流行的开源监控框架, 其功能强大且易于使用, 拥有各种主流后端语言(Java/Go/Python/Node.js等)与各种场景(如web handler/ k8s/Nginx/MySQL等)的客户端, 并自带图形化显示页面。分享一个快速入门Prometheus 的教程, 实现一个极简的, 后端开发需要特…

ICRA 2024 成果介绍:基于 RRT* 的连续体机器人高效轨迹规划方法

近来,连续体机器人研究受到越来越多的关注。其灵活度高,可以调整形状适应动态环境,特别适合于微创手术、工业⽣产以及危险环境探索等应用。 连续体机器人拥有无限自由度(DoF),为执行空间探索等任务提供了灵…

有了这玩意,分分钟开发公众号功能!

大家好,我是程序员鱼皮。 不论在企业、毕设还是个人练手项目中,很多同学或多或少都会涉及微信相关生态的开发,例如微信支付、开放平台、公众号等等。 一般情况下,我们需要到官网查阅这些模块对应的 API 接口,自己编写…

数据结构(Java实现):顺序表

目录 1. 线性表2.顺序表2.1自己实现一个List接口2.2 IList接口的实现2.3 测试代码 1. 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、…

下载npm I就包错解决方案

npm i xxxx -S --legacy-peer-deps 如果包错就执行以上命令

【CSP CCF记录】202209-1 如此编码

题目 过程 C中"/"的使用 当a和被b均为int, long, char这样的整数类型&#xff0c;此时除法运算的结果为所得商的整数部分&#xff0c;例如&#xff1a;180/100&#xff0c;结果为1&#xff1b; int a 180;int b a / 100;cout << b << endl;#结果为1当…

用Arm CCA解锁数据的力量

安全之安全(security)博客目录导读 目录 CCA将如何改变Arm架构呢? 在实践中部署CCA 释放数据和人工智能的全部力量和潜力 早期计算中最大的挑战之一是管理计算资源&#xff0c;以最大化计算效率同时提供给不同程序或用户分配资源的分离。这导致了我们今天大多数使用的时间…

windows安装DrawDB

下载 新建一个目录drawdb,使用git下载&#xff0c;如果没有安装git的话&#xff0c;进入git官网进行下载windows版本 https://git-scm.com/downloads。 空白地方鼠标右键&#xff0c;打开git终端 执行命令&#xff1a; git clone https://github.com/drawdb-io/drawdb 安装依…

阿里巴巴找黄金宝箱(II) - 贪心思维

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输出描述三、输入描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布自己的解题思路&#xff0c;希望大家多指教 一、题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发…

【自动驾驶技术栈学习】1-硬件《大话自动驾驶》| 综述要点总结 by.Akaxi

----------------------------------------------------------------------------------------------------------------- 致谢&#xff1a;感谢十一号线人老师的《大话自动驾驶》书籍&#xff0c;收获颇丰 链接&#xff1a;大话自动驾驶 (豆瓣) (douban.com) -------------…

头歌(EduCoder):数据挖掘算法原理与实践 -- 决策树

【头歌】机器学习实训代码 第一关&#xff1a;决策树算法思想 1、下列说法正确的是&#xff1f;&#xff08; AB &#xff09; A、训练决策树的过程就是构建决策树的过程B、ID3算法是根据信息增益来构建决策树C、C4.5算法是根据基尼系数来构建决策树D、决策树模型的可理解性不…

GPU性能实时监控的几种软件

在深度学习服务器上&#xff0c;各种模型的训练&#xff0c;需要监控GPU的情况&#xff0c;并且需要根据使用状态来切换不同的GPU上。 有以下四款软件&#xff0c;可以很好的进行GPU状态监控。 1. nvidia-smi 一个跨平台工具&#xff0c;用于监控和管理NVIDIA GPU的状态和性…

python获取网页表格数据

需求 需要网页中的基因&#xff08;Gene Symbol&#xff09;&#xff0c;一共371个。 使用pandas读取网页表格 read_html 返回的是列表&#xff08;a list of DataFrame&#xff09; import pandas as pd import bioquest as bq url "http://exocarta.org/browse_resul…