概述
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 := false
BOARD_COMPASS_SENSOR_SUPPORT := true
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
CAMERA_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 移植 GNSS 模组 (SIM68D UM220)的全部内容,希望文章能够帮你解决rk3568 移植 GPS/GNSS 模组rk3568 移植 GNSS 模组 (SIM68D UM220)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复