1. 主板型号:AIO-3399J

2. 芯片型号:RK3399

3. 操作系统版本:Android 7.1

4. Linux版本:v4.4.103

RPLIDAR A3M1 激光雷达通讯接口采用 3.3V 电平的串口。UART ttyS配置文件适配的波特率:256000bps。本文根据驱动来修改非标准波特率,然后通过APP读写雷达设备串口数据,修改串口读写、串口安全权限的问题。

5. RK3399采用的是8250通用驱动8250_dw.c:

static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios,struct ktermios *old)
{。。。diff = rate * 20 / 1000;if ((rate_temp < rate) && ((rate - rate_temp) > diff)) 。。。
}

串口设置的是3M的波特率,从log可以看出,串口走的是clk_uart4_pmu 整数分频,由676M PLL分出来接近48M的的clk(48M根据上面的公式,是分出 3M波特率的最小时钟)。这虽然有误差,但在允许范围内,这个误差的大小驱动里设定为正负2%。

串口以256000波特率发送的数据,根据波特率大小来设置时钟,一般1.5M以下的波特率都可以分出来。1.5M以上的波特率,可能会经 过小数分频或整数分频。如果以上都分不出来,则需要修改PLL。但修改PLL有风险,会影响其他模块。用示波器查看并测量:

6. APP对串口设备读写操作时,无法打开某个设备文件,提示权限失败:unable to open /dev/ttyS3, error:Permission denied。

6.1 、确认设备节点是否存在;

6.2、 确认设备节点权限;尝试向所有组添加权限(chmod 666 /dev/ttyS3);

./device/rockchip/common/ueventd.rockchip.rc/dev/ttyS3                0666   system     system

6.3、在device/rockchip/rk3399/rk3399_firefly_edp_box/sepolicy/目录下,添加untrusted_app.te;

allow  untrusted_app  serial_device:chr_file  {read open ioctl getattr create write};

6.4、在device.mk和system_server.te添加并编译权限;

+BOARD_SEPOLICY_DIRS += \
+  device/rockchip/rk3399/rk3399_firefly_edp_box/sepolicy
+
+BOARD_SEPOLICY_UNION += \
+  untrusted_app.te

rw_dir_perms包含read write;

+#untrusted_app
+allow system_server serial_device:chr_file rw_file_perms;

6.5、selinux security level引起的denied u:r:untrusted_app:s0:c512,c768问题,由于security level为MLS访问机制所添加的安全上下文的扩展部分mlstrustedsubject,这一attribute包含了所有能越过MLS检查的客体type。所以在device.te加入type serial_device, dev_type, mlstrustedobject;

2019-06-04 11:40:17.518 1696-1696/? W/ample.hello_ros: type=1400 audit(0.0:74): avc: denied { write } for name="ttyS3" dev="tmpfs" ino=2524 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:serial_device:s0 tclass=chr_f

此时APP的接口获得对串口的内核节点的访问权限。

Android 串口开发相关推荐

  1. android 串口开发第二篇:利用jni实现android和串口通信

    一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...

  2. QT for Android串口开发

    QT for Android 思路 一.所用到的头文件 1.打开串口 2.配置串口 3.接收数据 3.发送数据 最近在搞QT for Android开发,在网上搜了下解决方案发现都是需要java库的支 ...

  3. android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...

    01 写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是 ...

  4. Android 串口开发,发送串口命令,读卡,反扫码,USB通讯,实现demo。——持续更新

    应用场景:APP发送串口命令到打印机,打印相应数据小票 // 串口 implementation 'com.github.licheedev.Android-SerialPort-API:serial ...

  5. android串口开发!一年后斩获腾讯T3,附面试题答案

    开头 互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛. 自己在努力的基础上,还学习了一些高效的学习方法,让我 ...

  6. Android 串口开发——粘包解决方法,定时查询心跳数据,解析心跳数据。——持续更新中

    粘包解决方法 方法1 getXOR--是校验方法 /*** 最小数据包的长度(除开数据的N个字节)* 帧头 保留字节 协议控制字 地址字段 命令长度 命令码 命令数据 校验和* 2字节 3字节 1字节 ...

  7. Android USB串口开发

    因为第一次接触Android下的串口开发,在网上找了很多例子都不能满足自己的需要以及不能正常使用,于是结合网上的资源以及查阅资料,终于完成了关于这个串口的开发,在此记录下usb转串口通信开发的过程. ...

  8. 快速使用Android串口

    天下武功,唯快不破 有多快?只需要一招!引入第三方库就可以快速开发和使用Android串口,毕竟我们站在了巨人的肩膀上. 第一步导包,也就只有这一步了 // 在项目根目录的build.gradle文件 ...

  9. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载

    . 最新下载 : 2017年 8 月 28 日 : 平台 Android Studio 软件包 大小 SHA-1 校验和 Windows (64 位) android-studio-bundle-16 ...

最新文章

  1. 怎么导入mysql示例_MySQL命令行导出导入数据库实例详解
  2. 性能测试之计数器的阀值(windows)
  3. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(jQuery1)
  4. WebService部署时提示:HTTP错误 404.3-Not Found,如果该页面是脚本,请添加处理程序,如果应下载文件,请添加MIME映射
  5. Python中运算符 is 和 == 的区别
  6. Javascript 問題汇总(不定期更新)【一】
  7. strlen的神奇实现
  8. UIImage 裁剪图片和等比列缩放图片
  9. Oracle使用Sql把XML解析成表(Table)的方法
  10. 连CEO都不香了?这些互联网大佬接连辞任
  11. Windows Server 2012 解决无法连接无线网络
  12. MySQL索引的使用知识有哪些?
  13. hiveSql获取日期时间
  14. Coin3D三维可视化教程3
  15. selenium官网下载地址
  16. 微波射频学习笔记2--------传输线理论
  17. 华为路由器配置网络地址转换NAT/静态NAT/动态NAT/Easy-ip/NAPT代理上网
  18. Python之Turtle库绘制简单图形
  19. Linux刻录系统文件ISO到光盘
  20. scrapy爬取表情包使用flask搭建搜索网站

热门文章

  1. 入门学习因果推断在智能营销/权益应用的通用框架
  2. python︱写markdown一样写网页,代码快速生成web工具:streamlit 展示组件(三)
  3. MYsql隔离级别问题和解决方案,Spring的七大传播机制
  4. SpringCloud_Eureka集群配置
  5. 人工智能将为维护网络安全带来更多可能
  6. 菜鸟进阶Linux高手之路——第四天(下)
  7. KLite 移植说明 V1.0
  8. [LeetCode] Permutations II
  9. xp等系统的登陆的密码清除方法
  10. 主流搜索引擎Lucene,Solr,ElasticSearch