系统移植-驱动驱动
- sudo apt-get install libncurses5-dev –> 图形化的配置工具
- sudo apt-get install ncurses-doc –> 按照图形man手册
initscr();
//初始化按键
nonl();
//不使用回车作为换行符
intrflush(stdscr,FALSE);
//禁止中断刷新
keypad(stdscr,TRUE);
//使能中断输入
clear();
//清屏
endwin();
//退出NCURSES模式
getch();
//
菜单的生成
- make menuconfig
- bool-->单选
- tristare-->多选
内核中编译一个程序
1. Kconfig
- config TEST
- bool “”
2. .config
- CONFIG_TEST
3. Makefile
- obj-$(CONFIG_TEST)+=test.o
移植摄像头
- 市面上常见的摄像头有两种:
- uvc–>windows下是免驱动的,未经压缩
- gspca–>压缩,较好的画质
- 视频通过一帧一帧连续播放得到视频信息
- 每秒播放24帧图像得到流畅的视频
- 如何在内核中移植摄像头驱动
- 确定摄像头的信号(厂商,设备名),将摄像头插入到pc电脑查看设备管理器–详细信息
- VID:0AC8–> 厂商ID
- PID:303B–> 产品ID
- 确定摄像头的信号(厂商,设备名),将摄像头插入到pc电脑查看设备管理器–详细信息
在linux内核中查找设备信息
grep “303b” * ./* -nRdrivers/media/usb/gspca/zc3xx.c:4377:/* from usbvm303.inf 0ac8:303b 07/03/25 (3 - tas5130c) */
drivers/media/usb/gspca/zc3xx.c:6986: {USB_DEVICE(0x0ac8, 0x303b)},只需将zc3xx.c编进内核中
- 确认摄像头驱动zc3xx.c
- vi Makefile
- 添加obj-$(CONFIG_USB_GSPCA_ZC3XX) += gspca_zc3xx.o
425 config USB_GSPCA_ZC3XX
426 tristate “ZC3XX USB Camera Driver”
427 depends on VIDEO_V4L2 && USB_GSPCA
428 help
429 Say Y here if you want support for cameras based on the ZC3XX chip.
430
431 To compile this driver as a module, choose M here: the
432 module will be called gspca_zc3xx.设置USB_GSPCA_ZC3XX , ZC3XX_V4L2 , USB_GSPCA 选项
- make menuconfig
- 在内核中搜索/gspca
x Symbol: USB_GSPCA [=n] x
x Type : tristate x
x Prompt: GSPCA based webcams x
x Location: x
x -> Device Drivers x
x (1) -> Multimedia support (MEDIA_SUPPORT [=n]) x
x -> Media USB Adapters (MEDIA_USB_SUPPORT [=n]) x
x Defined at drivers/media/usb/gspca/Kconfig:1 x
x Depends on: USB [=y] && MEDIA_SUPPORT [=n] && MEDIA_USB_SUPPORT [=n] && MEDIA_CAMERA_SUPPORT x
设置摄像头驱动内核参数
Device Drivers
<*>Multimedia support
[*] Cameras/video grabbers support
<*> Media USB Adapters
<*> GSPCA based webcams
<*> ZC3XX USB Camera Drivermake uImage
移植第三方源码
- mjpg-streamer-->查看视频软件
- jpegsrc-->图片库源码
1. 下载源码
2. 移植图片库的源码 <br/>
` tar xvf jpegsrc.v8b.tar.gz ` <br/>
` cd jpeg-8b/ ` <br/>
` ./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/jpeg ` <br/>
3. 编译
- make
- make install
- 将生成的.h 文件和.so文件拷贝到/home/linux/jpeg
- include 存放头文件的目录
- lib 存放静态库和动态库的目录
9. 解压缩
unzip mjpg-streamer-code-182.zip
- 修改当前目录下的Makefile,将CC=gcc 修改成 CC=arm-none-linux-gnueabi-gcc
- 以及修改plugins/下的所有目录的Makefile
10. 修改plugins/input_uvc下Makefile
- 14 CFLAGS += -01 -DLINUX -D_GUN_SOURCE -Wall -shared -fPIC -I /home/linux/jpeg/include
- 32 input_uvc.so:
(OTHERHEADERS)inputuvc.cv4l2uvc.lojpegutils.lodynctrl.lo−33
(CC)
(CFLAGS)−ljpeg−L/home/linux/jpeg/lib/−o
@ input_uvc.c v4l2uvc.lo jpeg_utils.lo
- make
11. 拷贝编译成的文件到rootfs
- cp mjpg-streamer /source/rootfs/bin
- cp *.so /source/rootfs/jpeg
- sudo cp /home/linux/jpeg/lib/* -arf /source/rootfs/lib
- 开发板上运行程序
- mjpg_streamer -i “/jpeg/input_uvc.so” -o “/jpeg/output_http.so 192.168.6.250:8080”
- 在ubuntu或者windows下使用火狐浏览器访问
- 查看视频 –> 192.168.6.250:8080/?action=stream
- 查看图片 –> 192.168.6.250:8080/?action=snapshot