android 串口打印root,27、从零写UVC驱动之分析数据传输(设置ubuntu通过串口打印,指定打印到文件,ubuntu切换root用户)...

本文档介绍了如何在Ubuntu系统中配置UVC(USB Video Class)摄像头驱动,包括从串口0输出printk信息,设置VMware的串口模拟,禁用root登录,以及调整内核打印级别。同时,提到了代码实现,涉及USB驱动的注册、接口设置和属性配置。此外,还提及了一款即将发布的支持多种格式输出的摄像头产品。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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格式的摄像头,也可以做完项目视频的所有实验,

只是进行远程视频传输时,需要用软件进行图像压缩,导致视频播放有些卡

75e554d42cc2460c24124289919c26ec.png

26、从零写UVC驱动之分析描述符

指令:lsusb 可以查看usb设备的描述符信息,当然lsusb指令要带一些参数 一个usb设备有多个config配置+设备描述符,一个config有多个接口和association.config描述 ...

28、从零写UVC驱动之实现设置属性

1. 先看APP以确定需要实现哪些接口xawtv.c: grabber_scan ng_vid_open//根据链表的设置和读取可以在xawtv中找到是调用v4l2_driver.open v4l2_ ...

Linux摄像头驱动学习之:(三)从零写虚拟驱动(仿照vivi.c)

本篇仿照vivi.c 写虚拟视频驱动,代码(myvivi.c+fillbuf.c+Makefile)如下: //==========================myvivi.c========== ...

UVC 驱动调用过程与驱动框架的简单分析

内核:Linux-3.4.2 驱动:drivers\media\video\uvc\uvc_driver.c UVC 驱动整体调用流程: /* 打开设备描述符 */ 1. open: uvc_v4l2 ...

Linux时间子系统之(十七):ARM generic timer驱动代码分析

专题文档汇总目录 Notes:ARM平台Clock/Timer架构:System counter.Timer以及两者之间关系:Per cpu timer通过CP15访问,System counter通 ...

13、虚拟驱动vivi.c注册过程分析及怎么写V4L2驱动及启动过程

UVC设备也是一个usb设备,在uvc_driver.c中的init函数会调用usb_register注册,根据id_table发送可支持的设备后调用probe函数,其会去uvc_register_c ...

Android中Input型输入设备驱动原理分析(一)

转自:http://blog.youkuaiyun.com/eilianlau/article/details/6969361 话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反 ...

Linux摄像头驱动学习之:(四)UVC-摄像头驱动框架分析

UVC: USB Video ClassUVC驱动:drivers\media\video\uvc\ uvc_driver.c分析:1. usb_register(&uvc_driver.dr ...

Android中Input型输入设备驱动原理分析<一>

话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反正这个是没变的,在android的底层开发中对于Linux的基本驱动程序设计还是没变的,当然Android底层机制也 ...

随机推荐

jquery css属性练习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值