树莓派2使用酷芯微C201-D图传模块的使用总结

根据C201-D提供的SDK中的文档《嵌入式使用指南》,在树莓派上编译好C201-D的USB驱动文件,以及需要使用的应用APP文件。

在系统中插入USB驱动文件后:

树莓派2使用酷芯微C201-D图传模块的使用总结

C201D 模块的 USB 设备有主要四个 interface, 目前正常使用中只用到两个: interface0 和 interface1, interface0 主要用于处理 command 相关交互, interface1 主要用于处理 video 相关交互。

 

在驱动层,将与 interface0 交互的逻辑抽象成设备节点/dev/artosyn_port0,将与 interface1
交互的逻辑抽象成设备节点/dev/arotsyn_port1。 为方便应用开发,我们提供了一个 libar8020.so动态库,与/dev/artosyn_port0, /dev/artosyn_port1 进行交互, 将相应的逻辑封装成接口提供给用户。 目前 lib 库主要提供 4 类接口:与用户命令交互接口, 数传接口, video 数据收发接口和升级相关接口。整个系统交互如图所示。

树莓派2使用酷芯微C201-D图传模块的使用总结

 

C201-D在树莓派上的使用:

1.驱动加载

1) 确保 C201D 和嵌入式板物理连接正常,嵌入式板与 C201D 的 USB 物理连接正常,供电正常
2) 将 artosyn_usb_8020.ko 拷贝到嵌入式板上,然后执行 insmod artosyn_usb_8020.ko
3) 查看嵌入式板的/dev/ 目录,会有 artosyn_port0 到 artosyn_port3 的设备节点生成,此时驱动加载成功

 

2.库和demo的使用

1) 驱动加载完成功后,将 Linux_Sample_Vx /bin/libar8020.so 拷贝到嵌入式板的/lib 目录下
2) 将 sample_cmd、 sample_transceiver、 sample_upgrade 拷贝到嵌入式板上
3) 如果需要执行 sample_cmd 可以在 sample_cmd 所在目录执行./sample_cmd

note

当使用demo:sample_cmd时出现usb open err -1的错误。

树莓派2使用酷芯微C201-D图传模块的使用总结

 

通过尝试在执行的时候前面加上 sudo权限即可。

 

现在需要在树莓派上运行使用SDK中的demo sudo ./sample_transceiver -r recv.h264接收到的h264文件。

树莓派2使用酷芯微C201-D图传模块的使用总结

发现不管是在树莓派上还是pc机上使用vlc都无法播放,但是使用ESEyE的软件就可以打开。

尝试了其他的商用播放器,爱奇艺也能够打开。所以打算就用爱奇艺代替vlc观看视频流。但是又遇见一个问题。就是爱奇艺播放器输入客户端的URL:rtsp://192.168.1.97:8554不能够正常的播放rtsp服务器上正常的h264流。所以使用抓包软件wireshark抓包。

树莓派2使用酷芯微C201-D图传模块的使用总结

只有3次rtsp的包交互,分别是客户端请求OPTIONS,服务器应答,客户端请求DESCRIBE。

 

然后就断掉了,所以应该是服务端没有解析到客户端的DESCRIBE.爱奇艺播放器最后发送的DESCRIBE如下:

树莓派2使用酷芯微C201-D图传模块的使用总结

 

因为这个服务器是按照和vlc播放器的rtsp交互编写的。所以继续抓取当使用vlc播放器,观察交互的具体数据。

 

以下是使用vlc播放器作为rtsp流媒体的客户端向流媒体服务器请求h264流的抓包:

树莓派2使用酷芯微C201-D图传模块的使用总结

 

对比了爱奇艺和vlc和rtsp服务器的rtsp交互的数据包,发现确实有一些不同,比如:爱奇艺的CSeq是从1开始的,而vlc的CSeq是从2开始的。具体的DESCRIBE:

树莓派2使用酷芯微C201-D图传模块的使用总结

有上述的比较可以发现:vlc的CSeq字段是处于第二字段,而爱奇艺播放器的CSeq字段是在第3个字段,由此需要修改服务端的rtsp包解析的代码。

树莓派2使用酷芯微C201-D图传模块的使用总结