介绍

在Ubuntu20.04上交叉编译gpsd-3.25,目标系统为rk3588 Linux,目标编译工具链为aarch64-buildroot-linux-gnu

移植

rk3588编译工具链配置

1
2
3
4
source /opt/rk3588/rk3588-aarch64-buildroot-linux-gnu/environment-setup
export TOOLCHAIN_PATH=/opt/rk3588/rk3588-aarch64-buildroot-linux-gnu
export SYSROOT=$TOOLCHAIN_PATH/aarch64-buildroot-linux-gnu/sysroot
export PATH=$TOOLCHAIN_PATH/bin:$PATH

GPSD使用scons工具构建,Ubuntu20.04上安装scons

1
sudo apt install scons

scons工具大致用法

1
2
3
4
5
6
# 清理
scons -c
# 编译(可带参数)
scons
# 安装
scons install

GPSD交叉编译配置

1
scons target=aarch64-buildroot-linux-gnu sysroot=$SYSROOT prefix=$PWD/build gpsd_user=nobody gpsd_group=nogroup install_root=$PWD/build qt=no python=no dbus=no chrpath=no strip=yes ncurses=no

使用scons install命令安装到指定目录,然后部署到rk3588开发板上去(adb或者scp)

img

运行

部署至开发板的/userdata/admin目录,实际上只要bin、sbin、lib三个目录就够了,然后配置环境变量

1
2
export PATH=/userdata/admin/build/bin:/userdata/admin/build/sbin:$PATH
export LD_LIBRARY_PATH=/userdata/admin/build/lib:$LD_LIBRARY_PATH

找到GNSS的串口节点,可以用cat命令,我这里的节点是ttyS1

1
cat /dev/ttyS1

生成配置文件:/etc/gpsd.conf

1
2
3
4
5
6
[gpsd]
listen = "0.0.0.0"
port = "2947"
device = "/dev/ttyS1"
speed = "9600"
nowake = "true"

运行gpsd应用

1
/userdata/admin/build/sbin/gpsd -n -G -F /etc/gpsd.conf

测试

可以用gpsd命令打印当前的定位数据:gpsd -N -n -D5 /dev/ttyS1

img

进阶

把gpsd做成一个自启动的service

1
2
3
4
5
6
7
8
9
[Unit]
Description=gpsd.service

[Service]
ExecStart=/usr/bin/bash /userdata/admin/autorun.sh
#Restart=always

[Install]
WantedBy=sysinit.target

© 2025 hywing 使用 Stellar 创建
总访问 113701 次 | 本页访问 326