如何搭建USB RNDIS并使用RTSP出流?

Comake Online


作者| 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下载|芯片、开发板购买



X 提交 下一题

查看更多