早在这篇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影像做完后,竟然启动不了。
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查看,開始监听554port了。通过另外一个pc吧VLC打开。并将url填上后连接。
我地乖乖,竟然连接不上
使用wirsharke抓包看看,工具分析是对端拒绝了?我猜想必是该死的防火墙给我挡住了。
于是乎,运行service iptables stop。果真封包開始动起来了。视频也来了。好咧,退出VLCclient,server竟然没死。也没退出。一切迹象表明它还活的好好的。
再次开启vlc连接进去。视频还是来了了,多试了几次还是好好的。NND 这是为啥啊!
!
pc是好好的,到了mips下莫名其妙了。我总结了下有下面几点不一样:
1、编译器不一样
2、硬件平台不一样(cpu、内存大小。mips挂的内存不过32M。除了系统等程序有16M 空间使用)
3、软件平台也不一样(内核版本号有点诧异,可是驱动是驱动起来了。一个是基于glib的。一个是基于uclibc的)
一样的地方是,驱动是同一套。server是同一套,人是同一个人在调试!!!!