阅读:1876回复:10
视频采集卡问题(7146+7111)
年前发过一帖子。。。没想到。。出了那么大一件事。。都整没了。。
这几个芯片的确有点老。。但对我这个初学者还是不错的。。打算将来整明白了。。驱动也会了。。操作系统也明白了。。图像处理也懂点。。就可以告别老学生时代了。。 许玮伦走了。。太可惜了。。多漂亮的一个姑娘。。 |
|
沙发#
发布于:2007-01-29 21:08
正式提问题,各位大虾搜索一下记忆中的东西,帮帮兄弟。。初学太不易了。。我的计划是先从前端器件开始
先配制好7111的寄存器,然后7146,最后处理driver中的东西。。卡是现成的。黑白图像就可以,用CVBS口。 硬件:电路图里面是VPO8-15接了出去到7146的D1_A端。LLC,HS,HREF,CREF接到了7146的相应pin. 1、现在不知道应该是选取CCIR-601 (选取高8位)还是CCIR-656 8bit的。 2、pin太小了,本想用示波器测试一下输出怎么样,但是只能勉强测到VPO8的值,跳来跳去的,即使把camera的输入拔掉,也还是那样。请问呢如何能知道VPO的输出呢? 3、测试了一下LLC,CREF,HREF即使没有输入,也一样,看来是根据LLC自己出来的信号,而不是检测到输入信号的同步信号。 4、可不可以先不用 HPS BRS,如何给7146来一个最基本的配置,让它采集VPO的信号,然后让FIFO满。。 5、DMA那块比较头疼,但我认为也是最重要的一块。涉及到的东西好多呀。 在网上查了好久都没有查到比较详细的资料,一个初学者太难了。。明天把7111的配置贴一下,请各位大虾点评 |
|
板凳#
发布于:2007-01-30 22:38
自己胡乱写的。7111配置那一块。。
void _7111fifoconfig(void) { IICWrite(0x02,0xc0);//analog input control 1,amplifier plus anti-alias filter active IICWrite(0x03,0x33); IICWrite(0x06,0xeb); IICWrite(0x07,0xe0); IICWrite(0x08,0x88);//sync control,important.automaticfielddetection IICWrite(0x09,0x01); IICWrite(0x0a,0x80); IICWrite(0x0b,0x47); IICWrite(0x0c,0x40); IICWrite(0x0e,0x01); //IICWrite(0x10,0x60);//ofts0=0,ofts1=1,position of HS 2?? //IICWrite(0x11,0x1c);//output control,Output enable horizontal/vertical sync IICWrite(0x10,0x40); IICWrite(0x11,0x08);//vref is vertical reference IICWrite(0x12,0x01); } |
|
地板#
发布于:2007-01-30 22:41
void _7146fifoconfig(void)
{ int * pro; int oddbase; while((oddbase=(int)malloc(0x100000))==NULL) //allot 1M memory buffer { printf(" allocted ram is failed %x\n"); } //oddbase=pro; printf("base address of alloted ram is ...%x\n",oddbase); WriteReg(0xdc,0xe0000200);//primary status;enble fifo flow WriteReg(0x00,oddbase);//BaseOdd1 WriteReg(0x04,oddbase+0xb0);//BaseEven1 WriteReg(0x08,oddbase+0x100);//ProtAddr1 WriteReg(0x0c,0);//pitch1, why WriteReg(0x10,0xf0);//BasePage1 WriteReg(0x14,0x009000b0);//Num_Line_Byte1 WriteReg(0x48,0x10);//video DMA 1 2 or 3 upload WriteReg(0x50,0x18c00000);//initial settings DD1 port WriteReg(0x54,0x20000000);//video DATA stream handling at port DD1 WriteReg(0x100,0x02000200);//Upload ‘BRS Control Register (58H)’;this is not brs by jeff /////////////////////////*** set HPS***///////////////////// WriteReg(0x5c,0x00fff000); WriteReg(0x68,0x00020000); WriteReg(0x6c,0x0fff0fff); WriteReg(0x60,0); WriteReg(0x64,0); WriteReg(0x70,0x80400040); WriteReg(0x74,0x7f007f00); WriteReg(0x78,0x80000000); ///////////////////////*** end of hps*********///////////////// WriteReg(0x100,0x00640064);//main control 2,upload HPS.. WriteReg(0xfc,0x00400040);//main control TR_E } 运行完前面两段程序。。什么反应都没有。。根本没有fifo的中断形成。。 极度不解 |
|
地下室#
发布于:2007-01-30 22:45
会出现protection error.但是。应该fifo满先来呀。。奇怪了
|
|
5楼#
发布于:2007-02-26 22:21
回到黑龙江过了一个年。。。都忘记的差不错了。。还要重新开始。。
已经两个月了。。。 |
|
6楼#
发布于:2007-02-27 22:29
现在的第一步就是想让fifo满一次,也就是产生一次fifo overflow中断。。
我的理解: 设定threshold:一旦采集到的数据达到这个数量,就产生fifo中断。。 但是总是没有中断产生。。 希望大虾可以提供一组最基本的配置方案。。rps,hps mmu的什么都不用,先让我弄出个图像虚荣一下,然后才进一步做下去。。 |
|
7楼#
发布于:2007-03-02 23:48
又过去了几天。。问题越来越多。。
原来地址就没整明白。。 |
|
8楼#
发布于:2007-03-08 21:04
现在卡在MMU的配置上面:是否必须用它,如果用base odd, base even 如何配置
1、我现在的理解是base odd应该填写物理地址(对应于分页过的虚拟地址),我在driver里面用allocatecommonbuffer分配了一段连续的未分页 空间。并且此函数返回这段空间的虚拟地址和物理地址。但是这个地址如果传给app却无法使用,提示说:不在一个地址空间里面。 我的理解是:每个Progress独立映射地址,同一个虚拟地址在不同progress中代表不同的物理地址。 2、如果用MMU的话,我理解base odd里面应该填一个虚拟地址,而page table应该填什么呢。。从哪里得到系统分配内存的页表呢? 我想是系统分配内存。用某个方式得到那个page table传递虚拟地址给MMU但是如何做呢 如果不用MMU的话,base odd里面肯定是一个物理地址,那么pagetable里面要空这么(0)? 走过路过不要错过 |
|
9楼#
发布于:2007-03-13 09:30
using mdl
|
|
|
10楼#
发布于:2007-03-13 22:37
hey man,would plz more specific.?
|
|