首页 > 代码库 > RTSP server 在mips 上莫名其妙退出(PC上则无此问题)
RTSP server 在mips 上莫名其妙退出(PC上则无此问题)
早在这篇blog曾经写过,在虚拟机下调试sn9c291时,USB 传输数据出了问题。当时想兴许是virtualbox在usb 上对usb 2.0的支持尚未成熟导致的
所以当时也没管了,就继续在rt5350上调试sn9c291。(以为最新版本的virtualbox可以解决usb 2.0的问题,于是安装最新版本的virtualbox 4.3.16导致
虚拟机启动不了,退回4.3.12 OK)
现在整个rtsp server能运行起来,但是奇怪得是VLC一旦退出了,server也跟着退出了,并且是悄无声息。在这个问题上我跟踪了好几天,怀疑是server
在处理退出terdown下存在不合理的地方,如exit(),退出,查遍代码排除。查看是否是非法内存访问导致的?或者释放了不该释放的资源?但是console
上一丁点的信息都没有一,甚至是凡人的segmentation fault也没出现。也怀疑是某个信号导致的,整个进程退出。但是我注册了N个信号了,仍未触发对应的
处理函数。真的搞不定了?
就这样在rt5350上,源代码上折腾了整个国庆几天,仍然无果!!
就在今天,回想以前的blog写的在pc调试方法,试试pc上是否走得通。于是便有了u盘安装fedora 13的经历。官网上我找了,没找到fedora 13的完整安装
ios,居然下了个live版本的,才几百M。安装后显示器有花点飘动,估计是对本人这台机器支持不好。
为啥选择fedora 13 ?这个和调试sn9c291的驱动有关,它所支持的内核需要匹配。关键是对V4L的版本。原先机器上是安装的fedora 17的,正是因此才
放弃它从新安装fedora 13.
在支持usb 启动盘的时候,使用了live usb creator。下载的是官网最新版本,可是坑爹的是在使用691MB的iso影像做完后,居然启动不了。提示menu.c32 not a com32r image
google不了,于是百度了下。说是VESAMENU.C32版本的问题。下了个别人的说是可以的版本,将一些文件覆盖上即可。安装发现显示器出现花点、一闪一闪的。
随放弃。换成DVD正式发行版。
同样的方式,将dvd的iso制作成usb启动盘,这下来了出现新的问题,提示missing iso 9660 image
奇了怪了,4G u 盘都装上了很多东西了。居然提示没有,于是百度下。说需要将iso一起放进u盘。但是我看了下里面的东西很全了,其中的packes就狠多了,大约
有2G多。难道这玩意在这就是不管用,但是U盘所剩空间不多,于是将其删除,拷贝上dvd的iso。再次上电,一步一步next下去。终于完成安装。
开始干正事了,为了安装这个玩意可费了我不少时间。将代码拷贝过来编译,发现编译驱动的时候,找不到内核源码。原来安装fedora默认是不会安装内核源码的
于是将iso文件下的kernel安装包rpm拷贝过来、gcc 也一起了。
编译驱动,顺利编程模块,insmod进去,插上usb camera后出现了三个video*设备节点。我的乖乖,不应该是两个吗?先不管了,改下代码。因为驱动上是会创建
两个video设备节点的,一个作为mjpeg、一个作为h264使用。在源码中该一下所open的video的设备节点。
rtsp server也顺利编译过去了,ok。启动server,通过netstat查看,开始监听554端口了。通过另外一个pc吧VLC打开,并将url填上后连接。我地乖乖,居然连接不上
使用wirsharke抓包看看,工具分析是对端拒绝了?我猜想必是该死的防火墙给我挡住了。
于是乎,执行service iptables stop。果真封包开始动起来了,视频也来了。好咧,退出VLC客户端,server居然没死,也没退出,一切迹象表明它还活的好好的。
再次开启vlc连接进去,视频还是来了了,多试了几次还是好好的。NND 这是为啥啊!!
pc是好好的,到了mips下莫名其妙了。我总结了下有以下几点不一样:
1、编译器不一样
2、硬件平台不一样(cpu、内存大小,mips挂的内存仅仅是32M,除了系统等程序有16M 空间使用)
3、软件平台也不一样(内核版本有点诧异,但是驱动是驱动起来了。一个是基于glib的,一个是基于uclibc的)
一样的地方是,驱动是同一套,server是同一套,人是同一个人在调试!!!!
RTSP server 在mips 上莫名其妙退出(PC上则无此问题)