系统移植-驱动移植

系统移植-驱动驱动

  • 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

移植摄像头

  1. 市面上常见的摄像头有两种:
    • uvc–>windows下是免驱动的,未经压缩
    • gspca–>压缩,较好的画质
    • 视频通过一帧一帧连续播放得到视频信息
    • 每秒播放24帧图像得到流畅的视频
  2. 如何在内核中移植摄像头驱动
    • 确定摄像头的信号(厂商,设备名),将摄像头插入到pc电脑查看设备管理器–详细信息
      • VID:0AC8–> 厂商ID
      • PID:303B–> 产品ID
  3. 在linux内核中查找设备信息
    grep “303b” * ./* -nR

    drivers/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)},

  4. 只需将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.

  5. 设置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

  6. 设置摄像头驱动内核参数

    Device Drivers
    <*>Multimedia support
    [*] Cameras/video grabbers support
    <*> Media USB Adapters
    <*> GSPCA based webcams
    <*> ZC3XX USB Camera Driver

  7. make uImage

移植第三方源码

- mjpg-streamer-->查看视频软件
- jpegsrc-->图片库源码
1. 下载源码
2. 移植图片库的源码  
` tar xvf jpegsrc.v8b.tar.gz `
` cd jpeg-8b/ `
` ./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/jpeg `
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.lo33 (CC) (CFLAGS)ljpegL/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

  1. 开发板上运行程序
    • mjpg_streamer -i “/jpeg/input_uvc.so” -o “/jpeg/output_http.so 192.168.6.250:8080”
  2. 在ubuntu或者windows下使用火狐浏览器访问
    • 查看视频 –> 192.168.6.250:8080/?action=stream
    • 查看图片 –> 192.168.6.250:8080/?action=snapshot

你可能感兴趣的:(系统移植-驱动移植)