rk3568 移植 GPS/GNSS 模组
rk3568 移植 GNSS 模组 (SIM68D UM220)
部分LTE模组(EC20 M750) 仅有 GPS ,但场景需求 GNSS 定位功能,此时需要额外增加 GNSS的模组功。单GPS/GNSS 模组总线方式分为 UART、SPI、USB,本文以 SIM68D 模组的UART总线模组为例讲解移植全过程。
文章目录
- rk3568 移植 GNSS 模组 (SIM68D UM220)
- 分步走看重点
- 1 GNSS 加载内核驱动
- 2 GNSS HAL 移植
- 2.1 NMEA HAL 驱动移植
- 2.2 NMEA HAL 验证
- 3 rk3568 GNSS 平台适配
- 3.1 开启 GNSS hidl
- 3.2 rk3568 开启 GPS功能
- 3.3 GNSS 添加相关系统服务
- 3.4 GNSS 配置文件
- 3.4 GNSS 数据通信节点赋权
- 4 GNSS 适配 seLinux 权限
- Tips
- 结语
分步走看重点
a) 加载内核驱动
b) 移植 GNSS HAL驱动库
c) 添加相关系统服务
d) 适配 seLinux 权限
1 GNSS 加载内核驱动
经查阅原理图 GNSS 模组仅有供电使能控制信号,作为上电控制,前级输入为 vcc5v0_sys;通信端口 为 uart4, 内核设备树需做对应调整。
vcc5v0_sys: vcc5v0-sys {vin-supply = <&dc_12v>;};
+
+ vcc3v3_gnss: vcc3v3-gnss-regulator {+ compatible = "regulator-fixed";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ enable-active-high;
+ gpio = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gps_pwr_en>;
+ regulator-name = "vcc3v3_gnss";
+ regulator-always-on;
+ vin-supply = <&vcc5v0_sys>;
+ };vcc_lcd: vcc-lcd {&uart2 {status = "disabled";
};
+
+&uart4 {+ status = "okay";
+};
&usbdrd_dwc3_0 {&pinctrl {+ gps {+ gps_pwr_en: gps-pwr-en {+ rockchip,pins =
+ <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };wireless-bluetooth {
内核编译完成并刷入内核分区,可以看到 /dev/ttyS4 节点生成;测量 GNSS 模组供电有 3.3v电压,驱动已经完成一半。
查阅模组手册,模组波特率为 115200,手动设置串口节点波特率,可直接读取,此时已基本完成内核驱动。
adb root;adb shell
# 设定端口波特率
stty -F /dev/ttyS4 ispeed 115200 ospeed 115200 cs8
# 查看串口接收的 NMEA 原始数据
cat /dev/ttyS4
2 GNSS HAL 移植
SIM68D 是使用 NMEA 协议标准的GPS协议模组,可以直接查看到明文数据。RK3568 Android11 HAL 没有 NEMA 处理机制,需要下载第三方驱动来来适配模组。本着所查即可用的原则,从 github 中扒来相关 NMEA 驱动。
2.1 NMEA HAL 驱动移植
拉取 NMEA 源码,拷贝到 HAL 指定目录
git clone https://github.com/zxcwhale/android9_gnss_hal_driver
cp -r android9_gnss_hal_driver/gnsshal hardware/rocchip/
增加编译配置,下次编译时可自动生成 gps HAL库
vi device/rockchip/rk356x/rk3568_r/rk3568_r.mk
PRODUCT_PACKAGES += \
- SoundRecorder
+ SoundRecorder \
+ gps.$(TARGET_BOARD_PLATFORM)
2.2 NMEA HAL 验证
编译生成驱动可单独验证是否正常;先到到系统,重启生效。
adb shell mount -o remount,rw /vendor
adb push out/target/product/rk3568_r/obj/SHARED_LIBRARIES/gps.rk30board_intermediates/gps.rk3568.so /vendor/lib64/hw/
adb reboot
3 rk3568 GNSS 平台适配
3.1 开启 GNSS hidl
--- a/manifest.xml
+++ b/manifest.xml
@@ -207,5 +207,14 @@<instance>slot1</instance></interface></hal>
+ <hal format="hidl">
+ <name>android.hardware.gnss</name>
+ <transport>hwbinder</transport>
+ <version>1.0</version>
+ <interface>
+ <name>IGnss</name>
+ <instance>default</instance>
+ </interface>
+ </hal></manifest>
3.2 rk3568 开启 GPS功能
--- a/rk3568_r/BoardConfig.mk
+++ b/rk3568_r/BoardConfig.mk
@@ -6,6 +6,7 @@ BOARD_SENSOR_MPU_PAD := falseBOARD_COMPASS_SENSOR_SUPPORT := trueBOARD_GYROSCOPE_SENSOR_SUPPORT := trueCAMERA_SUPPORT_AUTOFOCUS:= false
+BOARD_HAS_GPS := true
3.3 GNSS 添加相关系统服务
PRODUCT_PACKAGES += \
- SoundRecorder
+ SoundRecorder \
+ android.hardware.gnss@1.0-impl \
+ android.hardware.gnss@1.0.so \
+ android.hardware.gnss@1.0-service \gps.$(TARGET_BOARD_HARDWARE)
正确配置后,刷机后在对应目录生成相关库文件。
/vendor/lib64/android.hardware.gnss@1.0.so/vendor/lib64/android.hardware.gnss@1.0-adapter-helper.so/vendor/lib64/hw/android.hardware.gnss@1.0-impl.so
3.4 GNSS 配置文件
新建 gnss.conf 配置文件,内容如下:
# Configuration file for GNSS HAL driver# TTY settings
TTY_NAME=/dev/ttyS4 # GNSS 模组通信端口
TTY_BAUD=115200 # GNSS 模组默认波特率# SUPL settings
SUPL_HOST=supl.qxwz.com
SUPL_PORT=7275
编译文件自动拷贝
PRODUCT_PACKAGE_OVERLAYS += $(LOCAL_PATH)/gnss.conf:$(TARGET_COPY_OUT_VENDOR)/etc/gnss.conf
3.4 GNSS 数据通信节点赋权
经查阅原理图,GNSS 使用 UART4端口收发数据;将生成的 /dev/ttyS4 赋读写权限。
vi device/rockchip/common/ueventd.rockchip.rc
# for GPS
+/dev/ttyS4 0666 gps gps
/dev/gps 0660 gps gps
4 GNSS 适配 seLinux 权限
GNSS 的 seLinux 权限与 GPS 配置方法相同,方法参照rk3568 LTE(seLinux 权限)。
Tips
- seLinux 权限可根据内核信息自动生成,方法参照rk3568 LTE(seLinux 权限)。
- 如果直接读取数据正常,但是 GNSS 又无法显示星历。
在室外并增加GPS天线同样无法搜到卫星,强制关闭 seLinux可正常显示星历;可断定为 seLinux 权限引起。 - 内核电源申请异常,可根据内核信息确定是否为复用或者 GPIO 被占用引起;如果是这种情况就需要排除复用。
结语
用心做好每件事,节省的不仅仅是精力,还有富裕的学习时间。
rk3568 移植 GPS/GNSS 模组相关推荐
- RK3568移植5G通信模组
5G通信模组 这次移植的5G通信模组选择的是深圳广和通公司生产的FG650 5G通信模组,对外的通信数据接口为USB2.0, USB3.0两个接口.FG650模组默认工作在NCM驱动模式,如果不是可以 ...
- 广和通正式发布工业级低功耗单频双模GNSS模组G030G031
8月,全球领先的无线通信模组提供商广和通正式发布工业级单频双模(BDS B1I,B1C.GPS L1C/A)GNSS模组G030&G031,助力各行业实现高性能精准导航定位体验.G030&am ...
- 正基模组:WIFI/BT/GPS/FM模组列表
各种模块广泛应用于网络摄像头.智能机器人.儿童故事机.词典笔.智能音箱.智能家电等需要实现无线联网设备的消费类电子产品. 模组由于其特性,给终端硬件开发带来巨大的便利性和实用性,具体小结如下: Fea ...
- RK3568驱动OV13850摄像头模组调试过程
摄像头介绍 品牌:Omnivision 型号:CMK-OV13850 接口:MIPI 像素:1320W OV13850彩色图像传感器是一款低电压.高性能1/3.06英寸1320万像素CMOS图像传感器 ...
- 广和通l610二次开发|广和通l610 CAT.1模组opencpu开发《二》cola_os移植
广和通l610 CAT.1模组opencpu开发<二>cola_os移植 在L610模组下实现cola os的移植,cola os使用一个freertos的线程来驱动,这样可以避免资源的竞 ...
- 无线蜂窝通信模组是什么?
无线蜂窝通信模组(以下简称模组)是在电路板上集成基带芯片.存储器.功放器件,并提供标准的接口功能模块,并能使各种终端都可以借助无线模块实现通信功能. 图2 模组在数据链路中的位置 因此,蜂窝通信模组的 ...
- QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之01物联网模组简介
本系列博文将系统性讲解物联网模组系列的实际使用和调试指南,以移远4G模组EC20为例(其他厂家模组的调试方法大同小异),加快嵌入式软硬件工程师对物联网模组调试和使用的上手速度,让你们的项目进度尽可能快 ...
- 移远通信新一代LTE智能模组SC200E系列,以强大性能赋能多场景转型
全球领先的物联网整体解决方案供应商移远通信今日宣布,其全新LTE Cat 4智能模组SC200E系列正式面世.作为新一代入门级智能模组的优秀代表,SC200E系列凭借强大的运行性能.丰富的多媒体功能. ...
- 蜂窝通信模组,是物联网终端的核心组件之一
无线蜂窝通信模组是什么? 图1 模组在产品生产过程中的位置 无线蜂窝通信模组(以下简称模组)是在电路板上集成基带芯片.存储器.功放器件,并提供标准的接口功能模块,并能使各种终端都可以借助无线模块实现通 ...
最新文章
- 程序员为什么会有职业瓶颈?
- 关于xilinx fir use reloadable coefficient的用法
- Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
- QtGraphicView添加图元
- mysql allowmultiqueries=true_Mysql批量更新的一个坑-allowMultiQueries=true允许批量更新(转)...
- 你们身边有没有程序媛?
- U盘美化(更换U盘logo和页面背景软件)
- 蒙特卡洛估值几种不同的计算方式(Python)
- C++学习 8.2 - 类及类成员
- CSS3 文字边框 -webkit-text-stroke
- webview的白屏,和硬件加速
- 显示器的分辨率,字体像素
- fixed脱离文档流 不占位置
- NOI 2008 假面舞会
- 笔记本电脑 Windows 10 中启用和禁用触摸屏
- 力量搬运术-“势”的妙用
- Java垃圾回收器(一)新生代垃圾收集器
- 软件实习项目4——校园一卡通管理系统(成品展示)
- 英文简历如何美言自己的性格
- windows server 2008的安装