• Rovio智能车北极星定位分析


    背景

    最近在hack rovio小车的定位系统,从一些公开的资料(CSK.Blog-对Wowwee Rovio机器人的拆解和扩展可能性探讨)获知,北极星主芯片与主控板的通信是通过串口,也就是URAT总线进行通信。

    接线图如下

    从上往下依次为:GND,Reset,TX,RX,CON,VIN

    这里面,必须接的是GND,TX,RX,VIN,VIN口电压4.6V,用5V应该也没问题

    既然是串口,那么用esp32,甚至单片机就可以驱动起来,理论分析到这,下面就是软硬件上的hack分析

    硬件hack

    根据上述接口图,从之前的hack分析中,抓取的小车和上位机通信数据包看,位置信息是通过head_position字段传递的,是一个int值,不出意外,这个值是通过北极星主芯片的tx口发给小车主控板的。

    为了抓这个数据,把tx口接线柱拆下来,接到usb 串口的rx口后,试图从总线数据上进行分析。

    首先,摆在眼前的是波特率问题,因为没有总线分析仪这样高端的设备,只能反复切换波特率尝试,终于在切换到19200时,发现了有效的ascii字符。

    然后就把主控板的TX口接到电脑usb串口芯片的RX口上,然后把电脑usb串口芯片的TX口接到北极星芯片的RX口上,硬件这么接的目的,是为了分析主控板的上行通信协议。

    随后就碰到一个比较棘手的问题,串口跟TCP端口有所区别,无法像网卡一样,获取所有TCP/IP流,然后过滤指定的端口数据进行分析。端口被某个应用独占后,其它应用无法再打开端口监听端口上的数据包。

    为了达到监听的目的,做了如下尝试:

    软件hack

    在windows上,写了一段python代码,之所以用python,完全是考虑开发环境搭建的简化,批处理没有找到合适的方式,C++要搭编译环境,退而求其次,用了python

    首先在windows上安装python3.x,官方网站下载3.5-3.8即可,最新的是3.12了。注意,别被x度导流到国内的二道贩子网站,出二维码缴费,真恶心。

    安装过程注意,勾选环境变量和安装pip,后面要用

    安装完成,打开命令行,输入pip install pyserial

    随后,找个记事本,写下如下代码,保存后缀.py, 用python打开

    1. import serial
    2. from time import sleep
    3. def recv(serial):
    4. while True:
    5. data = serial.read_all()
    6. if data == '':
    7. continue
    8. else:
    9. break
    10. sleep(0.02)
    11. return data
    12. if __name__ == '__main__':
    13. ser = serial.Serial('com10', 19200, timeout=0.5) #/dev/ttyusb0
    14. if ser.isOpen() :
    15. print("open success")
    16. else :
    17. print("open failed")
    18. while True:
    19. data =recv(ser)
    20. if data != b'' :
    21. print("receive data & write back ====>: ",data)
    22. ser.write(data) #数据写回

    上述代码的作用是打开窗口com10(根据需要指定),接收主控板发过来的数据,打印出来,随后再发送出去,传递给北极星,相当于再电脑内部做了个环回+打印的功能。

    如法炮制,可以在电脑上再安装一个usb ttl适配器,连接北极星上的TX口,这样就能在同一台电脑上,同时监听上下行数据,进行分析了。

    软硬件接线图

    关于串口工具

    过程中用到的工具,做个记录,备忘

    1. 串口调试精灵

    绿色版的,这个不多介绍了。网上李逵很多,正经的叫sscom

    2. Virtual Serial Port Driver

    也叫vspd,要下载破解版的。这个软件的作用是可以虚拟出串口,在物理串口和虚拟串口之间建立桥接,桥接后,可以用串口监听软件监听物理串口上的数据,场景是某些下位机通过串口与windows主机通信,因为物理串口被占用,无法监听,所以变通为在桥接的虚拟端口上做监听

    3. CommMonitor

    与上述vspd配合使用,能够对某些常用的协议做格式化显示,看起来方便些。

    4. SerialMonitor,Device Monitoring Studio等

    同上

    注意,Device Monitoring Studio有的版本还只有tcp端口,没有串口监听,下载了一个8.4的破解版,可用。

    http://www.ceiwei.com  这个网站有串口工具下载,非免费版和收费版,免费版也够用了。

  • 相关阅读:
    小白的二叉树(C语言实现)
    关于rsyncd同步问题
    iOS打包错误The operation couldn’t be completed. (AppThinning.StubError error 1.)
    好教程推荐系列:收录常见的Qt面试题
    前端 JS 经典:apply、call、bind
    第一百六十一回 Sliver综合示例
    HTML基础之<h>,<p>,<span>,<pre>
    RocketMQ相关概念
    DM达梦数据库的使用以及数据迁移工具的使用
    Android仿QQ消息拖拽效果(二)
  • 原文地址:https://blog.csdn.net/obana/article/details/133772955