0%

uStar和芯星通 的专业 GNSS 上位机, 一般用于串口直连 GNSS 芯片调测芯片数据.

软件很强大, 单只支持 NMEA 报文日志或串口, 记录仪的芯片串口没有暴露, 所以目前只能通过抓 NMEA 日志的方式回放数据.

最近定位的问题略多, 希望通过 uStar 软件实时分析芯片数据, 然后和系统的输出对比分析问题.

正好AP日志里面默认有打印 NMEA 数据, 想了想可以通过虚拟串口喂给 uStar.

准备虚拟串口

虚拟串口可以使用大名鼎鼎的 VSPD.

虚拟串口软件通过向系统添加一对串口设备的方式, 实现模拟物理设备. 可以理解为一条串口线缆, 都接到了同一台电脑, 一端发送一端就能收到数据.

其意义在于可以通过这样的方式向一些读写串口的程序进行测试.

安装软件

过程略.

创建虚拟设备

VSPD.png 如图, 给 First portSecond port 分配一对串口名称, 注意不要和系统已经存在的设备重复, 然后 Add pair 就行了.

然后查看系统确认已经增加了一对串口设备. 串口设备.PNG

过滤转发GNSS报文

这里通过一个 Python 脚本来实现, 环境 Python 3, 需要 pyserial 支持, 注意其中的串口号请酌情修改:

# coding:utf-8

import os
import re
import signal
import serial
import serial.tools.list_ports


def start_logcat():
    global progress
    progress = os.popen('adb logcat')


def stop_logcat():
    global progress
    progress.close()


def open_serial():
    global uart
    # port_list = serial.tools.list_ports.comports()
    # port_select = port_list[0]
    # serial_port = port_select.device
    uart = serial.Serial("COM100", 115200)


def close_serial():
    global uart
    uart.close()


def start_forward():
    global uart
    global forward
    forward = True
    while forward:
        line = progress.readline()
        match = re.match( r'^.*(\$(GP|GL|GA|BD|GB|GN).*)$', line, re.M|re.I)
        if match:
            gnss = match.group(1).replace(" ", "")
            uart.write(bytes('%s\r\n' % (gnss), encoding='utf-8'))
            print(gnss)


def stop_forward():
    global forward
    forward = False


def handler_signal(signal, frame):
    stop_forward()
    close_serial()
    stop_logcat()


if __name__ == '__main__':
    signal.signal(signal.SIGINT, handler_signal)
    start_logcat()
    open_serial()
    start_forward()

执行这个 python 脚本, 自动开始读取 logcat 并过滤发送给虚拟串口.

使用 uStar 解析

打开串口.PNG

观察数据

最近 Github 越来越连接上了, 加个代理吧!

命令行

全局代理

# 使用 socks5 代理
git config --global http.proxy socks5://127.0.0.1:7890

# 必要时需要忽略证书校验
git config --global http.sslVerify false

# 取消代理
git config --global --unset http.proxy
git config --global --unset http.sslVerify

局部网站代理

# 使用 socks5 代理
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890

# 必要时需要忽略证书校验
git config --global http.https://github.com.sslVerify false

# 取消代理
git config --global --unset http.https://github.com.proxy
git config --global --unset http.https://github.com.sslVerify

直接修改配置文件(~/.gitconfig)

全局配置

[http]
        proxy = socks5://127.0.0.1:7890
        sslVerify = false

局部网站配置

[http "https://github.com"]
        proxy = socks5://127.0.0.1:7890
        sslVerify = false

引用

tcpdump 来源

https://www.androidtcpdump.com/android-tcpdump/downloads

但是注意较新的版本和某些分析工具不兼容, 比如《科来网络分析系统》就只能使用 4.9.3 / 1.9.1 及以下的版本, 否则信息分析不出来.

Version: 4.9.3 / 1.9.1
Release Date: September 30, 2019 (for tcpdump) and September 30, 2019 (for Libpcap)
File Size: 2025444
Download Link: tcpdump 4.9.3 / 1.9.1

下载链接: https://www.androidtcpdump.com/download/4.9.3.1.9.1/tcpdump
备用链接: https://6xyun.cn/files/2023/08/cmEpnvvZ/android_4.9.3_1.9.1.tcpdump

阅读全文 »

外场反馈了一个终端设备异常高温的问题, 通过一系列分析发现是 HAL 层服务异常使CPU其中一个核心运算跑满, 导致功耗和发热异常, 进而影响温升.

本文主要记录了何如在 Android 系统中搭建一个基础的 gdb 调试环境, 以及一种跟踪线程状态的思路.

阅读全文 »