作者| veahow
本次专题主要讲解如何搭建USB RNDIS并使用RTSP出流,SSD21X/SSD22X/SSC9211 Linux适用。
1. 场景描述
客户在将板端配置为RNDIS后,由于EP数量的限制,无法使用UVC,需要走RTSP流进行传输。
2. 操作方法
以Ikayaki-ULS00V010版本的SPINAND配置为例,将提供的SDK放在同一路径下进行解压,目录结构如下:
~
boot/
kernel/
project/
sdk/
2.1 指定project的config
进入project目录,使用如下的配置
cd project/
make usbcam_p3_spinand.glibc-9.1.0-squashfs.s01a.64.qfn128.uvc_demo_defconfig
使用vim configs/current.configs能够看到kernel指定的是何种config:
...
KERNEL_CONFIG = pioneer3_ssc020a_s01a_qfn128_spinand_demo_usbcam_uvc_defconfig
...
2.2 替换kernel的config
由于kernel默认的pioneer3_ssc020a_s01a_qfn128_spinand_demo_usbcam_uvc_defconfig这个config并不带有RNDIS,因此需要先指定config,在此基础上再在menuconfig里去选择开启的功能:
cd kernel/
make pioneer3_ssc020a_s01a_qfn128_spinand_demo_usbcam_uvc_defconfig
make menuconfig
在menuconfig中选择:
Device Drivers --->
[*] USB support --->
USB Gadget Support --->
[*] Include configuration with RNDIS
最终在kernel目录下会生成.config文件,拷贝这个文件将原先的config覆盖掉:
cp .config arch/arm/configs/pioneer3_ssc020a_s01a_qfn128_spinand_demo_usbcam_uvc_defconfig
2.3 修改kernel_mod_list文件
编译完成后,修改project/kbuild/customize/4.9.84/p3/usbcam /kernel_mod_list文件,保证u_ether.ko、usb_f_rndis.ko、g_webcam.ko有在列表里头,修改点如下:
u_ether.ko
+usb_f_rndis.ko
-g_webcam.ko streaming_maxpacket=3072 streaming_maxburst=13 uac_function_enable=2 p_srate=48000
+g_webcam.ko streaming_maxpacket=3072 streaming_maxburst=13 uvc_function_enable=0 uac_function_enable=0 rndis_function_enable=1
2.4 修改rootfs_usbcam.mk脚本
由于RNDIS配置好后无法使用UVC,需要增加拷贝prog_vpe的脚本,修改image/configs/p3/rootfs_usbcam.mk文件:
if [ "$(verify_mi_demo)" = "enable" ]; then \
if [ -f "$(LIB_DIR_PATH)/bin/mi_demo/prog_uvc" ]; then \
cp -rf $(LIB_DIR_PATH)/bin/mi_demo/prog_uvc $(OUTPUTDIR)/customer/ ; \
fi; \
+ if [ -f "$(LIB_DIR_PATH)/bin/mi_demo/prog_vpe" ]; then \
+ cp -rf $(LIB_DIR_PATH)/bin/mi_demo/prog_vpe $(OUTPUTDIR)/customer/ ; \
+ fi; \
fi;
2.5 编译sdk
进入sdk目录下编译demo:
cd sdk/verify/mi_demo/
make clean -j32
make -j32
并将sdk/verify/mi_demo/out/demo/app/prog_vpe拷贝至project/release/usbcam/p3/common/glibc/9.1.0/bin/mi_demo中覆盖掉原有的prog_vpe,将sdk/verify/mi_demo/ikayaki/vpe/param_realtime.ini拷贝至project/board/ini/misc下。由于芯片只支持MJPEG编码,还需要修改拷贝过来的param_realtime.ini的内容:
port0Bindtype = 1
-port0EncodeType = 2
+port0EncodeType = 4
2.6 镜像打包工程编译
重新回到project目录下,使用命令make image -j32进行编译,最终生成镜像project/image/output/images/。
2.7 配置网络
烧录镜像到板端后,使用如下命令配置网络:
ifconfig usb0 up
ifconfig usb0 192.168.1.1 netmask 255.255.255.0
如果在PC设备管理器出现未识别RNDIS设备,需要更新驱动程序,选择型号“远程NDIS兼容设备”,同时进入网络连接里配置以太网的参数,这里配置IP和子网掩码分别为192.168.1.2和255.255.255.0。测试PC Host与Device是否连通,在板端使用ping 192.168.1.2,在PC端使用ping 192.168.1.1即可查看效果。
3. 验证
在确认usb device rndis和pc host通的情况下,板端运行:
/customer/prog_vpe /customer/misc/param_realtime.ini
然后就可以在potplayer或vlc上面走rtsp流看到图像,比如板端IP:192.168.1.1,那么就是rtsp://192.168.1.1/video0,这时候VPE创建起来,也能直接用IQ Tool连接了。
》》原帖地址
End.
往期回顾
微信刷掌支付搭载SSC9351Q
星宸科技智能门锁方案介绍
SSD222Q在工业HMI中的新应用
星宸科技智能网关方案介绍
星宸科技智能家居全家桶介绍
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买