第2课第1.1_11节_在LCD上显示摄像头图像1_效果_框架_准备工作_P

         从摄像头中采集的数据存在VideoBuf中,格式有好几种(YUV、MJPG、RGB),而LCD只能显示RGB格式的数据,因此要进行格式转换,转换后保存在ConvertBuf中。转换后的图像还不能直接显示在LCD上,因为有可能分辨率跟LCD的大小不匹配,因此还必须有一个缩放的过程,缩放后的数据保存在ZoomBuf中。将ZoomBuf中的数据保存到FrameBuf后,2440里面的LCD控制器就会自动地把FrameBuf中的数据发送到LCD上去。如果使用电脑显示屏显示,会将FrameBuf里面的数据写到显卡上面去。

        怎么实现读取摄像头数据呢?以面向对象的思想,定义结构体VideoDivece和VideoOpr。具体可查看本节图片。

        同样的,实现转换过程也抽象出一个结构体ConvertOpr。

        缩放过程和合并过程、显示过程直接使用数码相框里面的代码。

 

 

(1)准备工作:

1. 准备虚拟机

2.安装工具链

sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /

设置环境变量:

sudo vi /etc/environment  : PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"  

然后重启就好,如果不想重启,就执行

echo &PATH

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/

arm/4.3.2/bin

 

3. 编译内核

tar xjf linux-3.4.2.tar.bz2

cd linux-3.4.2

 

可以使用我们制作好的补丁:

linux-3.4.2_camera_jz2440.patch

linux-3.4.2_camera_mini2440.patch

linux-3.4.2_camera_tq2440.patch

 

patch -p1 < ../linux-3.4.2_camera_jz2440.patch

cp config_ok .config

make uImage

 

也可以从毕业班的内核补丁、驱动程序,自己修改、编译:

patch -p1 < ../linux-3.4.2_100ask.patch

 

把 lcd_4.3.c 复制到 /work/projects/linux-3.4.2/drivers/video  (内核中自带的s3c2410fb.o不适用与本开发板,所以要换成自己写的)

修改/work/projects/linux-3.4.2/drivers/video/Makefile

#obj-$(CONFIG_FB_S3C2410)         += s3c2410fb.o

obj-$(CONFIG_FB_S3C2410)          += lcd_4.3.o  

 

把dm9dev9000c.c、dm9000.h复制到/work/projects/linux-3.4.2/drivers/net/ethernet/davicom

修改/work/projects/linux-3.4.2/drivers/net/ethernet/davicom/Makefile

 

cp config_ok .config

make menuconfig

   <*> Multimedia support  --->

       <*>   Video For Linux

       [*]   Video capture adapters (NEW)  --->

              [*]   V4L USB devices (NEW)  --->

                   <*>   USB Video Class (UVC)

 

// 如果你使用的是百问网自制的USB摄像头,

// 还需要参考第2课1.1.9节视频修改UVC驱动

                  

make uImae

 

 

cp arch/arm/boot/uImage /work/nfs_root/uImage_new

 

 

4. 文件系统:

cd /work/nfs_root

sudo tar xjf fs_mini_mdev_new.tar.bz2

sudo chown book:book fs_mini_mdev_new

 

5. 用新内核、新文件系统启动开发板

启动开发板至UBOOT

设置UBOOT的环境变量:

set ipaddr 192.168.1.17

set bootcmd 'nfs 32000000 192.168.1.124:/work/nfs_root/uImage_new; bootm 32000000'

set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.124:/work/nfs_root/fs_mini_mdev_new ip=192.168.1.17

save

boot

猜你喜欢

转载自blog.csdn.net/hahaha_2017/article/details/81777065