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

  1. seLinux 权限可根据内核信息自动生成,方法参照rk3568 LTE(seLinux 权限)。
  2. 如果直接读取数据正常,但是 GNSS 又无法显示星历。
    在室外并增加GPS天线同样无法搜到卫星,强制关闭 seLinux可正常显示星历;可断定为 seLinux 权限引起。
  3. 内核电源申请异常,可根据内核信息确定是否为复用或者 GPIO 被占用引起;如果是这种情况就需要排除复用。

结语

用心做好每件事,节省的不仅仅是精力,还有富裕的学习时间。

rk3568 移植 GPS/GNSS 模组相关推荐

  1. RK3568移植5G通信模组

    5G通信模组 这次移植的5G通信模组选择的是深圳广和通公司生产的FG650 5G通信模组,对外的通信数据接口为USB2.0, USB3.0两个接口.FG650模组默认工作在NCM驱动模式,如果不是可以 ...

  2. 广和通正式发布工业级低功耗单频双模GNSS模组G030G031

    8月,全球领先的无线通信模组提供商广和通正式发布工业级单频双模(BDS B1I,B1C.GPS L1C/A)GNSS模组G030&G031,助力各行业实现高性能精准导航定位体验.G030&am ...

  3. 正基模组:WIFI/BT/GPS/FM模组列表

    各种模块广泛应用于网络摄像头.智能机器人.儿童故事机.词典笔.智能音箱.智能家电等需要实现无线联网设备的消费类电子产品. 模组由于其特性,给终端硬件开发带来巨大的便利性和实用性,具体小结如下: Fea ...

  4. RK3568驱动OV13850摄像头模组调试过程

    摄像头介绍 品牌:Omnivision 型号:CMK-OV13850 接口:MIPI 像素:1320W OV13850彩色图像传感器是一款低电压.高性能1/3.06英寸1320万像素CMOS图像传感器 ...

  5. 广和通l610二次开发|广和通l610 CAT.1模组opencpu开发《二》cola_os移植

    广和通l610 CAT.1模组opencpu开发<二>cola_os移植 在L610模组下实现cola os的移植,cola os使用一个freertos的线程来驱动,这样可以避免资源的竞 ...

  6. 无线蜂窝通信模组是什么?

    无线蜂窝通信模组(以下简称模组)是在电路板上集成基带芯片.存储器.功放器件,并提供标准的接口功能模块,并能使各种终端都可以借助无线模块实现通信功能. 图2 模组在数据链路中的位置 因此,蜂窝通信模组的 ...

  7. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之01物联网模组简介

    本系列博文将系统性讲解物联网模组系列的实际使用和调试指南,以移远4G模组EC20为例(其他厂家模组的调试方法大同小异),加快嵌入式软硬件工程师对物联网模组调试和使用的上手速度,让你们的项目进度尽可能快 ...

  8. 移远通信新一代LTE智能模组SC200E系列,以强大性能赋能多场景转型

    全球领先的物联网整体解决方案供应商移远通信今日宣布,其全新LTE Cat 4智能模组SC200E系列正式面世.作为新一代入门级智能模组的优秀代表,SC200E系列凭借强大的运行性能.丰富的多媒体功能. ...

  9. 蜂窝通信模组,是物联网终端的核心组件之一

    无线蜂窝通信模组是什么? 图1 模组在产品生产过程中的位置 无线蜂窝通信模组(以下简称模组)是在电路板上集成基带芯片.存储器.功放器件,并提供标准的接口功能模块,并能使各种终端都可以借助无线模块实现通 ...

最新文章

  1. 程序员为什么会有职业瓶颈?
  2. 关于xilinx fir use reloadable coefficient的用法
  3. Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
  4. QtGraphicView添加图元
  5. mysql allowmultiqueries=true_Mysql批量更新的一个坑-allowMultiQueries=true允许批量更新(转)...
  6. 你们身边有没有程序媛?
  7. U盘美化(更换U盘logo和页面背景软件)
  8. 蒙特卡洛估值几种不同的计算方式(Python)
  9. C++学习 8.2 - 类及类成员
  10. CSS3 文字边框 -webkit-text-stroke
  11. webview的白屏,和硬件加速
  12. 显示器的分辨率,字体像素
  13. fixed脱离文档流 不占位置
  14. NOI 2008 假面舞会
  15. 笔记本电脑 Windows 10 中启用和禁用触摸屏
  16. 力量搬运术-“势”的妙用
  17. Java垃圾回收器(一)新生代垃圾收集器
  18. 软件实习项目4——校园一卡通管理系统(成品展示)
  19. 英文简历如何美言自己的性格
  20. windows server 2008的安装

热门文章

  1. DHGNN:Dynamic Hypergraph Neural Networks
  2. while (0) 是什么东东?
  3. L1-020. 帅到没朋友(2016)
  4. StrConv 内码转换
  5. 解决Openwrt安装插件提示一下错误的办法
  6. 朴素贝叶斯法及python实现
  7. 基于51单片机的篮球计分器
  8. github上如何删除自己的仓库
  9. Mac版本Unity如何设置中文
  10. ubc本科计算机雅思要求,加拿大各大学的雅思要求