上一篇博客主要是讲解了关于需要配置的重要寄存器,那么接下来就是要通过SCCB接口实现对OV7725的配置.参考<OmniVision Serial Camera Control Bus (SCCB)Functional Specification>这篇技术手册,内部讲解了相关的SCCB时序的要求,实际上,完全可以按照I2C的时序来进行编写程序. SCCB接口时序 双总线的起始和停止信号如下图所示.其中SCCB_E是针对多个slave device设定的一个使能信号,这里只针对一个sensor进…
OV(豪威科技)已经被中国财团收购.这个昔日的大佬,最终走下神坛. 关于OVsensor的资料包括,OV7725的简介(OmniVsion_OV7725),OV7725的数据手册(OV7725_Datasheet),OV7725 SCCB的接口时序(OmniVision Serial Camera Control Bus (SCCB) Functional Specification),OV7725 寄存器配置手册(OV7725 Camera Module Software Applicatio…
上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接.输出一帧图像与输出时钟PCLK有关. 上图是OV7725实现的整体框架,有点丑.FPGA描述SCCB时序,完成OV7725的配置,配置完成之后,OV7725 sensor输出PCLK和href,vsync以及cmos_data信号.经过格式的转换单元,将格式转换后的数据送给SDRAM单元,最终实现VGA/LCD/上位机显示. 之前已经提及过,SCCB接口主要实现sensor内部各种寄存器的配置,…
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) 文档里写道: Uboot.lds文件中起始地址是0x00,但是config.mk中的TEXT_BASE是0x57e00000,但是生成的uboot反汇编文件中,为什么start.s的第一条指令地址也是0x57e00000?不应该是0x00么?因为start.s的加载地址和运行地址都是0x00啊!? 答:Ubo…
由于公司项目需要,需要学习Aurora协议,才有了这样的连载学习笔记,也算是对自己学习的一份记录吧. 对于Aurora是什么,大家自行百度. 当然,Kevin也在此先提醒大家,本套学习笔记不是你想学就能学的哦,毕竟Aurora还是属于FPGA的一种高速协议了. 如果你还是FPGA小白,建议你还是踏踏实实的看Kevin的SDRAM视频教程吧,别没学会走就想着跑了. SDRAM视频相关资料链接在博客的微课堂页面:FPGA微课堂 好了,不多说,直接步入正题. 这套连载学习笔记,以 ISE 14.7 为…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十八章:立方体贴图 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习什么是立方体贴图,并且如何在HLSL中对它们采样: 如何使用DX的纹理工具创建立方体贴图: 学习如何用立方体贴图来模仿反射: 学习如何使用立方体贴图对球体采样来模拟一个天空和远处的山. 1 立方体纹理映射 在D…
前几篇博客已经把如何更改固件程序和更改USB驱动名称,那么接下来就要把之前生成的 .iic 文件烧录到EEPROM里面去,实现USB的C2启动(笔者使用的是此类型,C2启动). 打开Cypress USB Console软件,EERPOM里面若是没有固件程序,则显示结果如下图所示. 选择options ---EZ-USB ,再选择lg EEPROM(笔者使用的EEPROM是24LC64,64KB,关于EPROM的介绍如下所示: 然后找到之前博客生成的 bulkloop.iic文件,然后会显示如下…
驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB video class 或USB video device class.是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一. UVC linux driver: UVC linux 驱动 需要在编译内核的时候选上 配置内核 Device…
驱动开发读书笔记. 0.04  linux 2.6 platform device register 平台设备注册  1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentation/driver-model/platform.txt Device Enumeration 82 ~~~~~~~~~~~~~~~~~~ 83 As a rule, platform specific (and often board-specific) setup code will 84 reg…
驱动开发读书笔记. 0.02 基于EASYARM-IMX283 怎么烧写自己裁剪的linux内核?(非所有arm9通用) 手上有一块tq2440,但是不知道什么原因,没有办法烧boot进norflash或者nandflash:只好用另一块arm9(i.mx283a)来继续学习: 从开发教程上面可知,烧写uboot和Linux是通过各种批处理脚本和exe程序来执行的,称之为固件烧写,然而并没有需要我们选择uboot路径.Linux内核和文件系统的地方.这样的话是不是意味着只能烧写官方默认提供的文件…
驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Documentation/driver-model/platform.txt找到一篇译文:http://blog.csdn.net/yili_xie/article/details/5193609 Device Enumeration 82 ~~~~~~~~~~~~~~~~~~ 83 As a rule…
驱动开发读书笔记. 0.01 配置arm-linux-gcc 交叉编译器 什么是gcc: 就像windows上的VS 工具,用来编译代码,具体请自己搜索相关资料 怎么用PC机的gcc 和 arm-linux-gcc工具都是在PC上运行,有什么不一样? PC上的gcc生成的文件是给PC机执行的,arm-linux-gcc生成的文件是给arm板上的linux执行的. arm-linux-gcc 版本 :我还没搞清楚版本不用会导致什么不一样 网上的建议是使用现成的arm-linux-gcc编译器 自己…
本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5827714.html 在前面我们曾经实现过简单的地形(Directx11学习笔记[十三] 实现一个简单地形),只不过原来使用一个固定的函数获得地形高度,这样跟真实的地形差距比较大.接下来让我们学习使用高度图来进行三维地形模拟. 1.高度图 高度图其实就是一组连续的数组,这个数组中的元素与地形网格中的顶点一一对应,且每一个元素都指定了地形网格的某个顶点的高度值.高度…
在之前的博客中已经讲过,驱动程序最核心的两个文件,一个是xxx.sys文件,一个是xxx.inf文件,主机是寻找xxx.inf文件. 在下面的文件中有相关关于USB驱动的说明.对于用户来说,xxx.sys文件 可以不用修改,用户可以对xxx.inf文件的内容进行相应的修改即可. 下图是<cy_usb>应用手册的名字,可以找到下图手册,查看关于USB驱动相关的内容 下图是当前驱动支持的系统. 下图是支持的VID&PID对,且注意,如果用户修改cyUSB3.inf文件,并加入自己的VID&…
在第一次插入USB设备时(笔者用的是自己做的USB最小系统来测试),插入电脑后,在设备管理器中会显示 未知设备,如下图所示: 点击右键,选择属性,在详细信息中可以看到硬件ID以及PID等,如下图所示. 根据手册中的内容,和上述的描述是一致的,如下图所示: 那么先默认安装cypress官网上面的驱动,如下图所示: 打开cyusb3.inf文件,如下图所示: 文件中的各个内容的含义,请参考之前的博客<通用USB驱动程序解析>.保持文中的值,即是安装官方提供默认的驱动文件.   由于CY7C6801…
上一篇博客已经给出了整个视频板卡架构,那么对于USB接口部分需要着重理解和学习. 对于目前来说,若是利用FPGA去模拟USB2.0内核,难度还是挺大的,整个状态的收发都不好控制.现在目前都在使用桥接芯片作为一个核心控制器,内部集成USB驱动.状态控制.GPIF.FIFO等,可以轻松实现相应功能.USB2.0桥接芯片有台湾的FT232H,FT2232H,还有南京沁恒的CH372B或者CH375等,还有Cypress公司的CY7C68013,笔者打算采用CY7C68013来进行USB2.0的开发.…
官方手册中给出了bulkloop参考例程,此例程是PC从端口2发送出数据,然后从端口6接收到数据,那么根据这个思想,可以进行修改,使得PC机接收到的数据不是从EP2发送过来的,而是从外部逻辑,比如FPGA处送来的数据.那么如何进行修改呢? //============================================= void TD_Init(void)             // Called once at startup {    BYTE dum;           …
    TRM手册中给出了所有的寄存器配置,在 slave fifo模式或者 GPIF模式等,所以对于用到的各种寄存器配置需要查看此手册,当然还可以配合着应用手册<AN61345>.   1.主机操作   对于USB2.0的设备来说,是不能作为主机,主动发送数据或者接收数据的,如下面的描述. 2. 方向控制    OUT意味着 主机到设备,IN是设备到主机,这里注意以下,若是工作在slave fifo模式下,FPGA与 EZ-USB通信,最后传递给上位机,应该是工作在IN模式(输入模式).  …
USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.HID描述符,这里主要讲解USB描述符. USB标准设备描述符包括:设备描述符,端点描述符,接口描述符,配置描述符,设备限定描述符,其他描述符.这些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!   1.设备描述符 一共18个字节,14个字段.在官方给的固件程序中的描述如下图…
   上述的应用笔记中有介绍FX2LP的启动选项,主要包括I2C启动和USB启动. 说白了I2C启动需要使用外部的EEPROM,USB启动,只是使用上位机控制软件将配置程序FX2LP中,不用EEPROM,但是这会掉电易失,固件从USB主机加载到FX2LP内.从外部并行存储器启动的方法,不常用,且支持128引脚,未免受限制,所以使用前两种方法. 1.I2C启动 若是外部有EEPROM,里面包含CY7C68013所用的VID,PID,DID的EEPROM,那么上电后,CY7C会自动从EEPROM中加…
对于使用FX2的用户,可以升级到FX2LP,上述的应用笔记<AN4078-C>中就讲解了在升级中的注意事项.   必要的修改:   1.晶振的匹配电容需要更改,FX2LP是12pF,不过笔者最近做的最小系统板,用的晶振匹配电容是22pF,没问题,反而用12pF晶振不能稳定的工作.   2.reset引脚,确认是能够保持5mS(可以参考笔者之前的博客,连载六中有提及).   3.VCC上升沿时间至少200us.   4.AVCC和AGND的改变.    手册中也列举出了对于FX2和FX2LP的不…
本篇博客主要讲解EZ-USB一些重要寄存器的配置,首先对于本篇博客所讲的内容,读者应该到官网上去下载相关的手册,其中包括<EZ-USB Technical Reference Manual>,<Dvk Users Guide>,<CY7C68013A中英文数据手册>,此外还应去Cypress官网下载一个应用笔记,如下图所示:   上面资料中<EZ-USB Technical Reference Manual>包含了需要配置的寄存器信息和一些配置信息,比较重要…
1.关于目录    /lib/modules/2.6.9-42.ELsmp/build/   这个是内核源码所在的目录    一般使用这样的命令进入这个目录:cd /lib/modules/$(uname -r)/build/   这个目录实际上指向了:/usr/src/kernels/2.6.9-42.EL-smp-i686 2.编译驱动所使用的makefile    实际上编译驱动的时候是使用预先提供的一个makefile的,位置在:/lib/modules/$(uname -r)/buil…
FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号,分配结构体 3,注册设备 卸载驱动: 1,释放内存 2,释放结构体,返还设备号 3,注销设备 platform总线方式添加驱动(主流方式): 1.编写设备链 struct platform_device { const chat *name; u32 id; struct device dev;…
Introduction the naive "scull" 首先.什么是scull? scull (Simple Character Utility for Loading Localities). scull is a char driver that acts on a memory area as though it were a device. 和第一个C程序Hello world一样.他什么都不能干,却能非常好的阐释怎么一步步进阶的去写驱动 blog的最后,我会给出这对于s…
其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题.做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作. 作为一个常用查询手册吧!!!! 注意一点:在应用手册中<AN65209>中提及到,full和empty标志是针对所有缓冲区而言的,比如双缓冲区,out模式时,只发送一个数据包过来,这是不会使能full信号,只有当第二个数据包过来时,才会使能full信号. 还有一点需要注意的是,对于缓冲区若是设置为自动模…
在对USB设备的驱动名字进行更改时,需要利用keil软件对固件进行修改,并生成 .iic 文件烧录到CY7C68013A所带的外部EEPROM中,keil生成的 .hex文件只能烧录到 Cypress的RAM中. 这个配置也是非常的简单,首先找到安装套件中的bin文件夹,找到hex2bin软件.如下图:   找到此应用软件之后,粘贴其路径,然后在工程文件夹下右键或者选择Project—>Options for Target 'Targer 1',选择Output选项,选中Run User Pro…
笔者上一篇博客讲解了关于驱动的安装,笔者使用的系统是win8.1系统,那么对于win8系统及以上系统,会对外部设备,没有在windows系统中进行签名过的,都是不允许在windows系统中进行安装的,以保证windows系统安全.如下图所示: 出现这个问题是由于cypress的芯片未经过签名,显示安装不成功.那么解决上述的办法,需要关闭win8及以上系统的禁用强制驱动签名.如下图所示: 链接:http://zhidao.baidu.com/question/1366740923411875539…
最近一直在调试视频 采集卡,和PC端连接的是USB接口,使用的是cypress的CY7C68013A-56PVXC. //============================================================================== //调试初期,先来几篇出现问题的总结 现列举一下对于CY7C68013无法识别的可能存在原因.在设备管理器里面显示的VID/PID为全0. 上图是CY7C68013A-56PVXC和EEPROM的最小系统. 若是按照上图…
上一篇博客大概讲了一下USB通用驱动程序的解析.笔者使用Cypress官网给定的资料去完成USB驱动开发.官网资料地址:http://www.cypress.com/?rID=14321 下载如下图的文件,GPIF没有用到,所以最后一个文件可以不选择. 下载完成之后,找到CY3684Setup控件进行安装. 双击出现下个界面,点击next 上图安装类型可选,笔者选择默认,点击next. 上图必须接受,点击next. 等吧... 安装完之后的样子. 继续研究中...待续....…