1. 先看APP以确定需要实现哪些接口xawtv.c: grabber_scan ng_vid_open//根据链表的设置和读取可以在xawtv中找到是调用v4l2_driver.open v4l2_driver.open // v4l2_open get_device_capabilities(h); // 调用VIDIOC_QUERYCTRL ioctl确定是否支持某个属性 /* controls */ for (i = 0; i < MAX_CTRL; i++) { h->ctl[i].…
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…
指令:lsusb 可以查看usb设备的描述符信息,当然lsusb指令要带一些参数 一个usb设备有多个config配置+设备描述符,一个config有多个接口和association.config描述符(这里的接口包括这个config所有的接口,control和streaming也在里面,control和streaming的个数在association里面说明,C和S也是属于接口),一个接口里面有多个设置(如果cur_altsetting->extralen不为零,其应该就是control接口或…
本篇仿照vivi.c 写虚拟视频驱动,代码(myvivi.c+fillbuf.c+Makefile)如下: //==========================myvivi.c=======================================/* 仿照vivi.c */#include <linux/module.h>#include <linux/delay.h>#include <linux/errno.h>#include <linux/fs…
UVC设备也是一个usb设备,在uvc_driver.c中的init函数会调用usb_register注册,根据id_table发送可支持的设备后调用probe函数,其会去uvc_register_chains注册所有uvc_device,前面说的根据id_table匹配的过程是usb_bus总线,uvc是另一个东西了 vivi.c是一个摄像头驱动模板或者实例,安装vivi模块后会产生一个虚拟的摄像头,使用应用程序可以获得其提供的虚拟数据并显示. vivi_init vivi_create_in…
最近在淘宝入手了一块ILI9341彩色屏幕,支持320x240分辨率.之前一直很好奇这类单片机驱动的彩色屏幕的原理,就打算自己写一个驱动,从电流层面操控ILI9341屏幕.话不多说,我们开始吧( ̄▽ ̄)~* 1.ILI9341芯片和ILI9341驱动板 首先这里要明确两个概念,ILI9341芯片和ILI9341驱动板. ILI9341芯片是ilitek发布的液晶驱动芯片,是这个样子的: 而淘宝上的ILI9341驱动板是把ILI9341芯片.屏幕和针脚焊接在一起的电路板,它可能是这个样子的: 也可…
本系列是一个教程,下面贴下目录~1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 今天给大家带来的是实现一个简单的类似 VUE 一样的前端框架,VUE 框架现在应该算是非常主流的前端数据驱动框架,今天我们来从零开始写一个非常简单的 VUE 框架,主要是让大家知道最核心的 vue 部分是怎么运转起来的.包括数据绑定,模板处理,以及页面渲染,数据驱动视图等几个部分,代码在文章末尾给出来,下面我们开始~ VUE 是怎么运转起来的 在正式动手之前,我们先来了解下 v…
内核:Linux-3.4.2 驱动:drivers\media\video\uvc\uvc_driver.c UVC 驱动整体调用流程: /* 打开设备描述符 */ 1. open: uvc_v4l2_open /* 查询设备属性 */ 2. VIDIOC_QUERYCAP if (video->streaming->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2…
UVC 即 usb video class.USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容.这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC class.此外还包括Video.Audio Class, Print Class等等.正是由于这些Class协议,大大促进了USB设备的普及,比如说各个厂商生产的U盘都能通过操…
教程目录1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 Hello,我又回来了,上一次的文章教会了大家如何书写一个简单 VUE,里面实现了VUE 的数据驱动视图渲染模板,更新到页面的过程,简单的带大家了解了类似 VUE 这样子的数据驱动视图框架的工作流程,今天我来给大家讲一讲作为一个前端框架最为核心的部分---模板,代码还是放在文章的最后,请随意下载 模板的分类 在介绍我们实现的模板语言之前,我们先来了解下,现在市面上比较流行的模板语言: PHP/ASP/…
转自: Ubuntu 14.04 Nvidia显卡驱动安装及设置   更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成显卡进入系统 将显示器连接到集显的VGI口, 并在BIOS中设置用集显显示, 一般来说可以成功进入系统. 2. 完全写在Nvidia驱动 (参考) 执行下列命令干干净净卸载nvidia驱动, sudo apt-get remove --purge nvidia-* sudo apt-get inst…
原因分析如下: 视频数据是由一帧一帧数据组成,为了防止数据错乱,会给每一帧数据分配一个frameid,从第0帧开始,接着是第1帧,接着又是第0帧这样交错进行的,对usb摄像头来说每一帧数据来源于多个包,每个包来源于urb里面的iso_frame(一帧数据都存在一个urb的buf中,这个buf分为多个包),这些数据里也含有fid值,如果这些fid值都是0,那么这些包的数据属于第0帧,如果接着的包fid值是1,那么着包数据就是第1帧的,并且前面那帧数据已经完了,开始处理下一帧了 if (fid !=…
版权声明:本文为博主原创文章,未经博主同意不得转载.转载联系 QQ 30952589,加好友请注明来意. https://blog.csdn.net/sleks/article/details/25158121 这里转载一篇 linux 下的驱动程序开发的非常基础和实用的文章 在pcduino开发板上写驱动控制板载LED的闪烁 ,实际是一个linux的驱动,该篇文章基础且够用:兴许找到 android 下的驱动开发相关文章,再补充进来,希望该文作者能再接再励,感谢于先. 这里用 原创 模式,以便…
第一次写驱动是在去年,2019年十月份左右.当时是看着韦老师的视频一步步完成的.其中经历了很多error.搭建环境花费了很多精力.时间来到了2020年2月19日星期三,韦老师新视频出来了,我跟着再来了一次学习,使用开发板是100ask_6ull,依然是从搭建环境开始,不过感觉没有说明进步,该经历的坎坷,一样也没有少.特别是shinrk,压缩虚拟机ubuntu大小,导致挂掉,幸亏之前导出来过一次,又还原了!要不然,又要推迟2天!废话不多说,下面正式开始. 准备工作: 构建系统 使用如下命令一键配置…
依据sonix提供的驱动,须要在内核下进行配置,以加入到内核或与模块的方式进行编译: 1.makefile中加入驱动的文件夹,尽量保持和原有的一致, obj-$(CONFIG_USB_SN9C102)       += sn9c102/ obj-$(CONFIG_USB_SONiX_UVC_SN9C29x) += sonix_uvc_sn9c291/ obj-$(CONFIG_USB_ET61X251)      += et61x251/ 2.kconfig中加入src文件夹例如以下 sourc…
开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 全志A64设备树结构体 #include <linux/of.h> //设备树里的每个设备及每个设备子节点都用此结构体描述 struct device_node { const char *name; const char *type; phandle phandle; const char *full_name; struct…
1.为什么写这套笔记 理由一:因为需求,所以学习,然后就要记笔记 理由二:同时学几种相似的语言,怕搞混,所以写 2.笔记修改日志…
项目的完整代码在 C2j-Compiler 前言 在上一篇完成了符号表的构建,下一步就是输出抽象语法树(Abstract Syntax Tree,AST) 抽象语法树(abstract syntax tree 或者缩写为 AST),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码.树上的每个节点都表示源代码中的一种结构. AST对于编译器是至关重要的,现在的编译型语言一般通过AST来生成IR,解释型语言也可以不用虚拟机而直接遍历AST来解释执行,之后要写解释器和编译器都依赖这个AS…
一个asp.net core项目,一定包含了各种的实体,在RESTful api里面,有很多的参数传递,不建立实体则大量的参数需要自定验证正确性,并且Action上面会写的密密麻麻的参数 在asp.net 2.0的时候,就推出了ModelState,顾名思义,这个是模型状态,用于验证实体对象的 如何模型验证 用法是在需要验证的地方打上继承了ValidationAttribute的特性,比如常见的RequiredAttribute,这个是验证对象是否存在 /// <summary> /// Ad…
既然是手脚架,那么肯定得明白,手脚架是有限资源的一个整合,我们尽可能完善它,并保留可扩展性才是最终目的,尽可能减少硬编码,让业务不满足的情况下,可以自行修改 我们把解决方案取名Asp.netCoreTemplate,项目取名Core.Template Core.Template顾名思义,核心的模板,并不是我们最终生成项目的手脚架 手脚架叫Core.Template.CLI 构建处理异常的中间件 我们创建一个Middleware文件夹,单击右键新建项->中间件类 取名ExceptionMiddle…
http://www.cnblogs.com/simonshi/archive/2011/02/24/1963426.html…
请尊重别人的劳动成果 转载请务必注明出处 今天在rt5350的板子上,成功将仅仅支持yuv格式的usb camera摄像头执行了.採用的是mjpeg streamer ,须要libjpeg库支持yuv. 能够执行后发现yuv格式的摄像头全然将cpu耗尽了. cpu使用情况 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHViaW5nMjAwNDQ3OTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/di…
大概思路 继承 HttpServlet,实现 DispatcherServlet,拦截所有请求: DispatchServlet 重写 init()方法,负责初始化框架: 重写 service()方法,获取 HttpServletRequest.HttpServletResponse: 通过 HttpServletRequest.HttpServletResponse,获取请求路径.请求参数,进行请求的处理,并做转发或重定向: 思维导图…
大概思路 通过读取配置文件,获取框架要加载的包路径:base-package,类似于 Spring 配置文件中的: <context:component-scan base-package="*"/> 将 base-package 路径下的所有类都加载,并保存在一个 Set<Class<?>> classSet 中: 初始化 Bean 容器,遍历 classSet,通过反射获得 Class 的实例,并保存 Class 与 Class实例的映射关系,即…
项目的完整代码在 C2j-Compiler 前言 第十一篇,终于要进入代码生成部分了,但是但是在此之前,因为我们要做的是C语言到字节码的编译,所以自然要了解一些字节码,但是由于C语言比较简单,所以只需要了解一些字节码基础 JVM的基本机制 JVM有一个执行环境叫做stack frame 这个环境有两个基本数据结构 执行堆栈:指令的执行,都会围绕这个堆栈来进行 局部变量数组,参数和局部变量就存储在这个数组. 还有一个PC指针,它指向下一条要执行的指令. 举一个例子 int f(int a, int…
项目的完整代码在 C2j-Compiler 前言 在上一篇完成对JVM指令的生成,下面就可以真正进入代码生成部分了.通常现代编译器都是先把生成IR,再经过代码优化等等,最后才编译成目标平台代码.但是时间水平有限,我们没有IR也没有代码优化,就直接利用AST生成Java字节码 入口 进行代码生成的入口在CodeGen,和之前解释器一样:先获取main函数的头节点,从这个节点开始,先进入函数定义,再进入代码块 函数定义节点 在进入函数定义节点的时候,就要生成一个函数定义对应的Java字节码,即一个静…
更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成显卡进入系统 将显示器连接到集显的VGI口, 并在BIOS中设置用集显显示, 一般来说可以成功进入系统. 2. 完全写在Nvidia驱动 (参考) 执行下列命令干干净净卸载nvidia驱动, sudo apt-get remove --purge nvidia-* sudo apt-get install ubuntu-desktop sudo rm /etc/X11…
发现如果用vim写python的时候,还是设成8好像会报错,在现有的基础上,加入下面设置就好了set shiftwidth=4…
想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能. 1,效果图如下: (在图片左上角和右下角都添加了文字.) 2,为方便使用,我们通过扩展UIImage类来实现添加水印功能 (文字大小,文字颜色,背景色,位置,边距都可以设置) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 4…
缘由(痛点) 每次在Mac上设置Web代理,都需要点开"系统偏好设置 -- 网络 -- 高级 -- 代理",然后分别设置Web代理(HTTP)和安全Web代理(HTTPS),设置完后,还要点"好 -- 应用".如果要关闭Web代理也是如此,只是点到代理设置面板后,只需要取消勾选Web代理和安全Web代理. 个人觉得这种操作很繁琐,对于一个经常需要改Web代理的人来说,这简直是灾难性的重复操作.所以这段时间学了些Linux Shell脚本编程的知识,写了两个Shell…