zoukankan      html  css  js  c++  java
  • 27、从零写UVC驱动之分析数据传输(设置ubuntu通过串口打印,指定打印到文件,ubuntu切换root用户)

    A. 设置ubuntu让它从串口0输出printk信息
    a. 设置vmware添加serial port, 使用文件作为串口(在vmware中设置,文件是保存在windows中)
    b. 启动ubuntu,修改/etc/default/grub(可以参考Ubuntu Serial Console Login.htm)
    GRUB_CMDLINE_LINUX_DEFAULT=""
    GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"  //tty0是指可以输出到屏幕,ttyS0指可以输出到串口,输入都可以从tty接受

    sudo update-grub
    sudo reboot

    c. ubuntu禁止root用户登录
    先修改root密码: sudo passwd root
    然后执行"su root"就可以用root登录了

    d. echo "8 4 1 7" > /proc/sys/kernel/printk

    再次重启后,只要执行这2个命令就可以:
    su root
    echo "8 4 1 7" > /proc/sys/kernel/printk

    B. 写代码:

    (代码中有个cnt=2在执行,因为UVC设备有两个接口VC和VS,probe会被调用两次,在第二次在执行注册分配操作)
    1.构造一个usb_driver
    2.设置
      probe:
        2.1. 分配video_device:video_device_alloc
        2.2. 设置
          .fops
          .ioctl_ops (里面需要设置11项)
          如果要用内核提供的缓冲区操作函数,还需要构造一个videobuf_queue_ops
        2.3. 注册: video_register_device
      id_table: 表示支持哪些USB设备
    3.注册: usb_register

    (在mmap函数中根据虚拟地址找到一个page结构体,通过vm_insert_page可以把page映射到mmap提供的地址区,这样应用程序就可以操作这块区域)

    USB摄像头型号:
    a. 视频里用的是: 环宇飞扬 6190 ,它输出的是原始YUV数据,不支持输出MJPEG压缩数据
    大概35元
    b. 你也可以使用其它符合UVC规范的摄像头: 就是接到WINDOWS电脑上后不用装驱动的摄像头
    如果你要从零写驱动,就需要你会变通。
    c. 我们也会生产一款摄像头, 有2个接口:USB、CMOS(ITU-R BT. 601/656)
    支持输出YUV(原始数据)、MJPEG格式数据, 正在生产调试中, 2013年8月20号左右会在100ask.taobao.com发布
    大概100元
    生产出来后, 我会针对它补录一个视频,现场修改代码

    注意:即使不支持MJPEG格式的摄像头,也可以做完项目视频的所有实验,
    只是进行远程视频传输时,需要用软件进行图像压缩,导致视频播放有些卡

  • 相关阅读:
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Visual Studio断点调试, 无法监视变量, 提示无法计算表达式
    ASP.NET MVC中MaxLength特性设置无效
    项目从.NET 4.5迁移到.NET 4.0遇到的问题
    发布网站时应该把debug设置false
    什么时候用var关键字
    扩展方法略好于帮助方法
    在基类构造器中调用虚方法需谨慎
    ASP.NET MVC中商品模块小样
    ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现
  • 原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/8733188.html
Copyright © 2011-2022 走看看