毕业设计之wifi视频监控小车(二)

    首先我是一个爱分享的人,在第一篇博客关于linux和Windows下qt网络通信里有提高摄像头视频传输的问题,而我毕设也在做这个,所以就和大家分享了,而我后面QT收数据的时候也是用的第一篇博客中提到的第二种更好的方法。写到这里先写第三篇吧,第二篇主要分享些系统移植的方面的问题,也没多少干货,所以先把第三篇写了再写吧。

    继续写第二篇,因为第二篇系统移植我基本都是按照手册和教学视频等来的,所以细节问题没有深究,只有我遇到的问题我才会去查资料,解决了再分享给大家。关于我遇到的问题我就不再重新弄回去截图了,但我会详细阐述,希望大家谅解。

    首先是移植u-boot,买的官方的2440呢移植的是它自己的supervivi啥的,不好用,也没给你自己做事情的机会,嗯就是启动不管你干啥它都启动它自己的一套,所以对我来说,必须得换,必须得换,因为内核和根文件系统有些东西都要用自己的。在官方给的资料上提供了一个u-boot.bin ,然后我通过官方提供的minitools烧写工具烧进去用了下,有些 功能都没有,所以果断弃用。这里说些minitools这个工具,确实可以方便小白,像我这种不会用什么jtag或者sdk烧写的人来说,但是 也有点问题,就是如果你是win8系统或者更高,系统高级设置有个东东是对未知来源的驱动拒绝的,所以在安装minitools时会提示某个东西安装失败,一定要认真看那英文,是失败不是成功,是用不了的,毕竟我的笔记本也是win8的系统,所以很深刻,关于解决方法百度是有的,我这里也不再回去找链接了,也就是一个设置的问题。安装好minitools我们通过norflash启动就可以烧写需要的东西。前面说了我不是用的官方提供的u-boot,而我用的是贺老师视频讲解里的u-boot和源码包u-boot-2010的,这里有个小问题就是第一次编译之前一定要make distclean 一下,不然错误,试了就知道是啥,然后再是找一个系列的配置编译。我用的贺老师那款,smdk2440a,arm920t的,好,成功后再用tftp下载重新烧了一下,然后u-boot移植结束,这里后面会遇到问题的,做个铺垫。

    然后是移植内核uImage,按照官方给的linux2.6.32.2包进行配置,默认配置都是有的,这里说一下,spi是没有配置的,要用的要去选上,然后我也去掉了一些我不需要的东西,比如官方的测试驱动啥的。关于怎么编译配置教程就很多了,不赘述了,编好以后在arch/arm/boot目录下会生成一个zImage,通过编译工具将其打包成uImage,至于什么工具,就是在编译u-boot时会生成的一个工具 ,大家可以看贺老师视频有说,然后通过tftp下载进行烧写,关于移植内核这一部分一开始问题并不是很大,毕竟基本都是按部就班的操作,首先需要的弄过内核先能跑起来再说吧,要改的后面根据需求再改。

    然后是挂载根文件系统,关于根文件系统格式有很多,mini2440常用的yaffs2,还有一个是nfs根文件系统,关于nfs的挂对新手来说一定会遇到很多问题的,这里说一下,教程大家自行搜索,我强调下一个是目录权限,还有一个是关防火墙,还有板子的ip设置和nfs启动选项,前提内核支持nfs启动,默认是有的。不管是本地yaffs2启动还是nfs启动,前提得有个根文件系统,关于根文件系统的制作以及如何自动加载设备和自启动选项以及配置网卡那些,大家可以根据贺老师的视频挨着做,没有可以找我拿,私我就是,嗯,其实根文件系统制作的原理步骤啥的教程博客真的一大堆,我也不再赘述,还有如何将根文件系统做成文件系统映像,需要那些工具教程也是有的,真的,说实话,只要肯学习,有问题就到处找资料,找别人的解决方法,那么你会感觉你自己的问题就是小问题,我记得我们老师甚至我们研发总监都说过并鼓励我们网上找资料,说:你们现在遇到的问题,肯定有人也遇到过,可能N年前就遇到并解决了,所以只要你去找,就会找到解决方法的。当然指的是我现在这个水平遇到的问题,大佬们忽略,忽略。好,不管怎么解决,最后我的系统移植并成功第一次跑起来了,那么接下来肯定是想跑应用程序了,于是乎我迫不及待的插上了摄像头,然后问题来了注意。

    问题就是插上USB摄像头或者USBwifi后显示几行英文说找到设备,但什么地址地址什么的不可用,然后就是没挂接上,遇到这个问题就很蒙蔽了,于是乎百度,一开始并未找到解决的方法,只找到原因说就是USB的时钟没有设置或启动,一个是内核驱动里的,另一个是u-boot里的。这个问题如果你是跟我一样按照贺老师给的u-boot的话,相信一定会有的。我一开始想的是官方给的内核既然他自己都能跑那就肯定是u-boot的原因了,于是乎我在u-boot界面查看help信息,也就是看各种命令,我发现了usb start和usb reset以及一些其他stop啊相关的命令,看到这里相信大家也明白了,于是乎我在u-boot界面输入了usb start 然后提示说找到了usb设备,然后我再启动内核,挂载根文件后就可以发现设备了,没错就是/dev/video0,算是提前让我跑起了应用程序,但是治标不治本啊,不可能每次我都要去u-boot输入usb start吧,所以又到处看博客,嗯找到了这位老哥的博客:

https://www.cnblogs.com/crazywangzx/p/3780674.html ;大家可以去看下,嗯,就是时钟的问题,没有设置UPLLCON,然后解决方法,再u-boot源码里的cpu/arm920t/下的start.S里改,当然s3c2440a这个是,用vi打开start.S然后搜索找到MPLLCON,然后在修改MPLLCON这一个选项的最前面加上:

    ldr r0,= 0x4c000000

    ldr r1,= 0x00038022

    str r1, [r0]
    nop

    nop

就是上面这几行,然后重新编译烧写u-boot,很幸运,成功了。成功了以后我也去linux源码下面找了这个UPLLCON  用的搜索显示文件的方式找到了几个文件是对它有设置的,所以反过来看就是u-boot的问题了,所以这个问题也就解决了。关于系统移植这块真的没有什么干货,这块的教程大佬们的视频和博客也够多了,所以我只对我遇到的u-boot的这个USB 的问题细说了下,第二篇就写这么多吧,虽然看起来很少,但其实小白一开始真正做起来确实会遇到的很多问题,嗯,多找其他大佬的博客看,在此也谢过愿意分享的大佬们了。

你可能感兴趣的:(Graduation,design)