现在位置: 首页 > techbulo发表的所有文章
  • 04月
  • 15日
FPGA开发 ⁄ 共 406字 YUV格式数据接收,显示灰度图像到VGA已关闭评论
改了下ov7670的配置,改为YUV422输出,改了之后对于capture模块来说改动不是很大,像素时钟和RGB565的频率是一样的,现在亮度和速度信号分离开了,可以只把亮度信息显示出来,并在屏幕上叠加上了帧频: yuv 可以看出图像是黑白的,左下角绿色的是帧频,同时写了个uart串口模块,通过串口把帧频也打印了出来,1S打印一次: com 仔细一看串口打印的和屏幕叠加的数对不起来,串口打印的(0X1F 十进制是31),屏幕得加的是32,应该串口打印的是准确的,屏幕叠加的可能取余计算上有些问题,暂且这样吧。 下一步学些图像处理算法方面的东西。
阅读全文
  • 04月
  • 09日
FPGA开发 ⁄ 共 272字 简单字符叠加测试,画框及十字线、中英文显示已关闭评论
抽空在原来程序基础上,简单写了一个OSD模块,使用代码简单画了一个框及十字线,更复杂OSD功能还需要再深入学习: osd osd osd
阅读全文
  • 04月
  • 03日
FPGA开发 ⁄ 共 718字 终于出图像了,记录一下已关闭评论
调试了快半个月,终于出图像了,其中碰到了一些问题也查了好久,下面把碰到的一些现象贴出来大题说一下: 刚开始出的图像是花的,红红绿绿,但是基本物体的形状还是可以看清,推测不可能是sdram数据存取问题,可能色彩空间编码有问题: pic1 查看了7670数据捕获输出模块,推测可能是采集的时候,多采了一个像元,或少采了一个像元,造成色彩编码错位(主要是每一行的第一个和最后一个像元),这样两个8位拼成的16位RGB数据就有问题了,调整了如下图部分代码: code 图像竟然好了,但是还有些虚影部分: pic2 很明显可以看出竖着分了......
阅读全文
  • 03月
  • 30日
FPGA开发 ⁄ 共 14082字 sdram 控制器代码(使用VHDL编写)已关闭评论
最近一直想着学学视频处理方面的知识,选定的平台是altera的一款FPGA,摄像头用的OV7670,输出显示为VGA,打算目前不先跑软核,完全使用FPGA处理,首先面临的问题就是ov7670的初始化,0v7670的通讯是IIC的,先写了一个IIC Master控制器,见前面一篇文章《IIC总线—-iic master使用VHDL的FPGA实现》 ,这篇文章只是实现了标准的IIC通信接口,ov7670的寄存器配置还需要另写文件控制,这部分就是一直循环的写7670的寄存器,没有什么可说的,摄像头初始化完成之后,接下来就是考虑摄像头的数据怎么存储的问题了,只有先存下来才能对数据进......
阅读全文
  • 03月
  • 10日
FPGA开发 ⁄ 共 7004字 IIC总线—-iic master使用VHDL的FPGA实现已关闭评论
代码参考网上大神程序,加了一些修改 贴出代码: 写了个testbench测试了一下这个模块,仿真时许如下: iic-tb iic_tb library ieee; use ieee.std_logic_1164.all; entity iic_master is generic ( clock_frequency : positive := 100000000; baud : positive := 100000 ); port ( i_clk : in std_logic; i_rst_n : in std_logic; i_addr : in std_logic_vector(6 downto 0); --目标地址 i_rw : in std_logic; --'0' 写, '1' 读 i_data_wr : in std_logic_vector(7 downto 0); --要写到slave的数据 o_data_r......
阅读全文
  • 03月
  • 08日
基础知识 ⁄ 共 3392字 IIC总线—-介绍已关闭评论
近期要使用IIC总线控制OV7670摄像头,使用FPGA做一些图像处理,所以打算自己使用VHDL写一个IIC控制器,下面先看一下详细时序介绍:   概述 I²C 是Inter-Integrated Circuit的缩写,发音为"eye-squared cee" or "eye-two-cee" , 它是一种两线接口。 I²C 只是用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系。 输出级 IIC 每一个I2C总线器件内......
阅读全文
  • 02月
  • 02日
基础知识 ⁄ 共 3385字 Linux中list_head结构体相关已关闭评论
在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制。 下面就是kernel中的list_head结构定义: struct list_head { struct list_head *next, *prev; }; list_head是linux kernel中非常重要的一个结构体,是双向链表的数据结构体,为了减少浪费,众多链表都是用list_head以及其相关原语操作,list_head这个结构看起来怪怪......
阅读全文
  • 01月
  • 27日
基础知识 ⁄ 共 1535字 elf转化成bin后,bin文件变大的问题 <转>已关闭评论
在上一篇文章《位置无关代码(PIC)的思考》 中提到,在elf文件转化成bin文件的过程中,输出段与段之间如果有空隙的话,objcopy会用0来填充段与段之间的空隙,也可以通过objcopy 的选项--gap-fill= val来制定填充值的内容为val,这将会导致bin文件比elf文件大很多的问题,在很多嵌入式设备上将是无法接受的,因为嵌入式设备通常会将程序转化 成bin烧写到FLASH中,这样做的目的就是为了省空间,但结果确实大大的浪费了空间。 下面先通过一个简单的例子来说明下这个问题。 1. boot.s文件,模拟bootloader,代码如下: .extern _en......
阅读全文
  • 01月
  • 24日
基础知识 ⁄ 共 2308字 位置无关代码(PIC)的思考<转>已关闭评论
应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有目标文件进行重定位(relocation),建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重定位过程由操作系统自动完成。  在设计Bootloader程序时,必须在裸机环境中进行,这时Bootloader映像文件的运行地址必须由程序员设定。通常情况下,将Bootloader程序下载到ROM的0x0地址进行启动,而在大......
阅读全文
  • 12月
  • 29日
生活点滴 ⁄ 共 73字 2017年最后一篇文章,再见,迎接2018已关闭评论
2018
阅读全文
  • 12月
  • 06日
驱动开发 ⁄ 共 1313字 Linux IIC 总线驱动开发相关问题总结(转)已关闭评论
前面几片文章介绍了IIC裸机及Linux下驱动开发内容: 《Exynos4412 裸机开发 —— IIC总线(转)》 《Linux IIC总线驱动开发(一) — IIC 基础概念及驱动架构分析(转)》 《Linux IIC总线驱动开发(二)—— IIC 驱动开发(转)》   现在归纳总结一下IIC相关知识点: 一 、问题 1、IIC总线上的设备是怎么描述的? struct i2c_client { struct device dev; ... }; 2、IIC总线上的驱动是怎么描述的? struct i2c_driver { struct device_driver driver; }; 3、IIC总线上的设备和驱动是怎么匹配的 1)、对于 Cortex......
阅读全文
  • 12月
  • 04日
驱动开发 ⁄ 共 7497字 Linux IIC总线驱动开发(二)—— IIC 驱动开发(转)已关闭评论
前面在《Linux IIC总线驱动开发(一) — IIC 基础概念及驱动架构分析(转)》中学习了IIC驱动的架构,下面进入我们的驱动开发过程: -------------------------------开发环境----------------------------- 开发板:Exynos4412 Linux 内核版本:Linux 3.14 IIC 从机对象:陀螺仪MPU6050 -------------------------------开发环境----------------------------- 首先看一张代码层次图,有助于我们的理解: iic-struct 上面这些代码的展示是告诉我们:linux内核和芯片提供商为我们的的驱动程序提供了 i2c驱动的框架,以及框架底层与硬......
阅读全文
×