# sample **Repository Path**: xuanwu_s3/sample ## Basic Information - **Project Name**: sample - **Description**: Ebaina玄武S3测试硬件功能示例代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-06 - **Last Updated**: 2026-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux 嵌入式测试工具集 本项目包含三个用于 ARM64 嵌入式 Linux 环境的测试工具: 1. **linux_uart_test** - 串口通信测试工具 2. **linux_gps_test** - ATGM336H GPS/北斗定位解析工具 3. **vi_venc_rtsp** - 摄像头/HDMI-IN 采集编码 RTSP 推流测试工具 ## 环境要求 ### 交叉编译工具链 需要安装 ARM64 交叉编译工具链: ```bash git clone https://gitee.com/xuanwu_s3/toolchain.git ``` ## 编译说明 ### 默认编译 使用 `aarch64-none-linux-gnu-gcc` 交叉编译器: ```bash make ``` ### 指定交叉编译器 如果需要使用其他编译器,可以指定 `CROSS_COMPILE` 环境变量: ```bash make CROSS_COMPILE=aarch64-linux-gnu- ``` ### 清理编译产物 ```bash make clean ``` ## 工具使用说明 ### 1. linux_uart_test - 串口测试工具 **功能**:测试串口收发功能,支持多波特率配置 **使用方法**: ```bash ./linux_uart_test <串口设备> <波特率> ``` **参数说明**: - `<串口设备>`: 串口设备路径,如 `/dev/ttyS0`, `/dev/ttyUSB0` - `<波特率>`: 支持的波特率:9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 **示例**: ```bash ./linux_uart_test /dev/ttyS0 115200 ``` **说明**: - 程序启动后会持续发送测试数据 "12345" - 同时接收串口数据并打印 - 收到 "exit" 或 "EXIT" 命令后退出 ### 2. linux_gps_test - GPS/北斗定位解析工具 **功能**:解析 ATGM336H 模块的 NMEA 语句,支持 GPS/北斗单模及双模切换 **使用方法**: ```bash ./linux_gps_test <串口设备> <波特率> [模式] ``` **参数说明**: - `<串口设备>`: 串口设备路径,如 `/dev/ttyS0`, `/dev/ttyUSB0` - `<波特率>`: 通信波特率(最大支持 9600) - `[模式]`: 可选参数,工作模式: - `gps`: 纯 GPS 模式 - `bd`: 纯北斗模式 - `both`: GPS+北斗双模(默认) **示例**: ```bash # 默认双模模式 ./linux_gps_test /dev/ttyS9 9600 # GPS 单模 ./linux_gps_test /dev/ttyS9 9600 gps # 北斗单模 ./linux_gps_test /dev/ttyS9 9600 bd ``` **说明**: - 程序会实时解析 GNGGA 语句并输出定位信息 - 支持按 Ctrl+C 或输入 "exit" 退出 - 定位状态为 0 表示未定位,1 表示已定位 ### 3. vi_venc_rtsp - 摄像头/HDMI-IN RTSP 推流工具 **功能**:通过 VI 采集摄像头或 HDMI-IN 数据,经 VENC 编码为 H.264 后通过 RTSP 推流 **使用方法**: ```bash ./vi_venc_rtsp [-t 类型] [-w 宽度] [-h 高度] [-d 设备节点] ``` **参数说明**: - `-t`: 源类型,`camera`(摄像头,走 ISP)或 `hdmi`(HDMI-IN,走 CIF),默认 `camera` - `-w`: VI 采集宽度,默认 1920 - `-h`: VI 采集高度,默认 1080 - `-d`: VI 采集节点,如 `/dev/video11`,默认由 ISP media 配置自动选择 **示例**: ```bash # 摄像头(经 ISP),默认 1920x1080 ./vi_venc_rtsp -t camera # HDMI-IN,指定采集节点 ./vi_venc_rtsp -t hdmi -d /dev/video11 # 指定分辨率 ./vi_venc_rtsp -t hdmi -w 1280 -h 720 -d /dev/video11 ``` **拉流**:在 PC 端使用 VLC 播放器打开 RTSP 流(`<板端IP>` 通过 `ifconfig` 查看): 打开 VLC,选择「媒体 → 打开网络串流」,输入以下地址后播放: ``` rtsp://<板端IP>/live/0 ``` **说明**: - RTSP 服务监听 554 端口,推流路径为 `/live/0` - 支持按 Ctrl+C 退出 - 依赖板端 `/usr/lib/librockit.so`(需与 `third/rockit` 头文件版本配套,当前为 2025-11-05 版本) - 摄像头为 CIF 直出(无 ISP)时请使用 `-t hdmi` 模式 ## 项目文件结构 ``` . ├── Makefile # 交叉编译 Makefile ├── README.md # 项目说明文档 ├── linux_uart_test.c # 串口测试源码 ├── linux_gps_test.c # GPS/北斗测试源码 ├── vi_venc_rtsp.c # 摄像头/HDMI-IN RTSP 推流源码 └── third/ # vi_venc_rtsp 依赖的第三方头文件与库 ├── rockit/ # rockit(VI/VENC)头文件、librockit.so 及其依赖库 └── rtsp/ # rtsp 推流头文件与 librtsp.a ``` ## 编译产物 编译成功后会生成三个可执行文件: - `linux_uart_test` - 串口测试工具 - `linux_gps_test` - GPS/北斗定位工具 - `vi_venc_rtsp` - 摄像头/HDMI-IN RTSP 推流工具 ## 部署说明 将编译生成的可执行文件复制到目标 ARM64 设备上: ```bash # 假设设备 IP 为 192.168.1.100 scp linux_uart_test linux_gps_test vi_venc_rtsp root@192.168.1.100:/usr/bin/ ``` > `vi_venc_rtsp` 运行时依赖板端已有的 `/usr/lib/librockit.so`(`librtsp` 已静态链接进程序),无需额外拷贝库文件。 ## 注意事项 1. 确保目标设备已正确配置串口权限 2. 使用前请确认串口设备路径和波特率正确 3. GPS 模块需要在开阔环境下才能获取定位信号 4. 建议使用 9600 波特率进行 GPS 通信 ## License GPL-2.0