流程:
一. 安装jpeg库
1.先下载获得两个压缩包文件:jpeg库和mjpg-stream源码包,然后先移植jpeg库
2.在解压出的jpeg的目录下,设置交叉工具链+安装库,运行:
./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/workdir/fs4412-bak/camera/jpeg-install
这里的--host= 设定的是交叉开发工具链 ;--prefix=设定的是用make编译完后,库安装的路径
3.编译:make
4.安装:make install 。安装结束后,进入之前--prefix设定的路径,即 /home/linux/workdir/fs4412-bak/camera/jpeg-install里面,可以看到 bin , include , lib , share ,那么库安装成功。
二. 移植mjpg-streamer
1.解压mjpg-streamer包,然后进入解压的文件里面,分别到顶层目录和plugins里的input_uvc和output_http里面的Makefile里面,把CC=后面的开发平台编译器由ggc改为交叉编译器arm-none-linux-gnueaebi-gcc ;
并且在顶层目录的Makefile里面下方的plugins里面,需要只保留input_uvc和output_http两个so文件,其他的都去掉。这两个文件又是在编译后会自动生成的,其中:
input_uvc.so是插件库,负责从摄像头中采集数据;out_http.so负责将采集过来的数据通过http协议传到客户端,它也是插件库。(so是linux下的共享库文件,即编译好供其他文件使用的代码和数据);start.sh是运行应用程序的脚本文件;www目录存放的是一个网页,这个网页可以通过网络的方式在192.168.7.78:8080上,显示摄像头的内容;mjpg_streamer就是需要运行的应用程序,它在运行的时候,会加载input_uvc.so和output_http.so
2.进行编译make,报错fatal error NO such file or directory的话,就去相应的文件和行数里面,把里面的改成就可以了。
3.去之前安装库的里面,把里面的libjpeg.so.8和编译完成的mjpg_streamer的包一起拷贝到nfs里面,挂载到文件系统
4.进去start.sh里面,将摄像头采集到的YUYV格式转成jpeg格式就可以了。
5.然后重新编译内核,将arch/arm/boot里面的内核uImage拷贝到tftpboot下面,
cp uImage /tftpboot,重启开发板,在板子上进去camera里面,运行./start.sh,出现:
进去ubuntu里面的火狐流浪器,输入192.168.7.78,即板子的ip,出现图像,则调通。
(注意:除了移植之外,还需要添加摄像头驱动,并且在配置完成后,需要重新编译内核,所以最好先添加摄像头驱动)