dongyupeng
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-04-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1509回复:4

VXWORKS下7146的视频dma50分求助!!

楼主#
更多 发布于:2004-03-19 17:25
软件:vxworks操作系统集成开发环境tornado2.0
硬件:7111+7146的视频采集卡,sbs产品,pc104结构,pci总线
问题:目前没有用到7146的rps和hps,brs,在程序中使用7146的dma通道1,感觉应该数据经7111AD后进入7146,fifo满后进入dma通道存入主存缓冲区,然后在硬盘存成文件。目前程序运行第一次时无法进入中断,运行第2次时才能进入中断,在服务程序里读出中断状态寄存器的值为0x600,即FIFO overflow/underflow中断和pci保护地址中断。如果dma通道正确开启的话就应该不停地采集数据进入中断,但是现在进入中断的速度快的反常,大概15秒种进入1000次中断,而且不论是fifo的大小还是缓冲区的大小对进入中断的速度都没什么影响。有没有做过7146的同仁帮助分析分析问题在哪儿?
程序大概过程
上电找7146基地址-----软复位7146-----通过iic总线初始化7111---静态分配内存缓冲区----设置dma相关寄存器---中断允许---dma通道允许----upload dma寄存器--end
不知道对7146编程是否必须要用到RPS?对于7146的两个转换器HPS,BRS我也不太会用,请同仁指点一二。





 
dongyupeng
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-04-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-22 14:47
..........................................
void  interruptfunction()  //interrupt server function
      {
        
 sysOutByte(0x20,0x20);
 sysOutByte(0xa0,0x20);
         
 logMsg("enter the interrupt\n",0,0,0,0,0,0);
       }
.......................
.......................
while((pro=(int*)malloc(0x100000))==NULL)  //allot 1M memory buffer
{
printf(" allocted ram  is failed  %x\n");
}
printf("base address of alloted ram  is ...%x\n",pro);
oddbase=pro;

   int lock=intLock();
      
  pciIntConnect((VOIDFUNCPTR*)INUM_TO_IVEC(irqNo+0x20),(VOIDFUNCPTR)interruptfunction,0);// connect interrupt

intUnlock(lock);
pPdata=(int*)(pData1+0xdc); //enable video interrupt
       *(pPdata)=0xe0000600;//700, 0224:400 0225 0X30500

pPdata=(int*)(pData1+0x00);   //baseodd1,  pData1 is base address of saa7146
       *(pPdata)=oddbase;  
pPdata=(int*)(pData1+0x04);   //baseeven1
       *(pPdata)=(oddbase+0xb0);
pPdata=(int*)(pData1+0x08);    //protection address
       *(pPdata)=(oddbase+0x10000);  
pPdata=(int*)(pData1+0x0c);   //pitch
       *(pPdata)=0x00000000;
pPdata=(int*)(pData1+0x10);   //do not use MMU
       *(pPdata)=0x000000f0;
pPdata=(int*)(pData1+0x14);
       *(pPdata)=0x009000b0;  //   176*144,
pPdata=(int*)(pData1+0x48);
       *(pPdata)=0x00000011; //11


pPdata=(int*)(pData1+0x52);
       *(pPdata)=0x18c0;   //  0x67c0
pPdata=(int*)(pData1+0x56);//0x56
       *(pPdata)=0x2000;   //  0xa000
pPdata=(int*)(pData1+0x100);   //upload d1a registers
   *(pPdata)=0x02000200;
printf("value of 0x100 after write 1 is ...%x\n",*pPdata);

/*set HPS  */
pPdata=(int*)(pData1+0x5c);
       *(pPdata)=0x00fff000;//0fff0000
       pPdata=(int*)(pData1+0x68);
       *(pPdata)=0x00020000;
       pPdata=(int*)(pData1+0x6c);
       *(pPdata)=0x0fff0fff;
       pPdata=(int*)(pData1+0x60);
       *(pPdata)=0x00000000;  
       pPdata=(int*)(pData1+0x64);
       *(pPdata)=0x00000000;
pPdata=(int*)(pData1+0x70);
       *(pPdata)=0x80400040;
       pPdata=(int*)(pData1+0x74);
       *(pPdata)=0x7f007f00;//0x7f007f00
       pPdata=(int*)(pData1+0x78);
       *(pPdata)=0x80000000;

pPdata=(int*)(pData1+0x100);   //upload hps and dma1 registers
       *(pPdata)=0x00640064;



pPdata=(int*)(pData1+0xfc);
        *(pPdata)=0x00400040; //start dma
dongyupeng
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-04-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-22 14:49
1。对7146编程的话RPS是否一定要用到哪?
2。我用的是7111+7146的结构,想把采集的视频数据经过hps处理后通过 dma1写到主存缓冲区然后存在硬盘上。我的程序设计是主存缓冲区满后产生中断,在中断服务程序中置标志位通知程序将主存缓冲区中数据转移到硬盘。现在我的程序流程图如下
1.soft reset 7146 through mc1
2.initialize 7111 through iic bus
3.allocte ram as memory buffer(the data through dma channel should be sent here first and then to harddisk)
4.set the corresponding registers of dma1,HPS and D1A
5.enable video interrupt at IER(0xdc)
6.upload the video DMA1 and HPS and D1A registers
7.set the TR_E_1 bit in mc1
现在我的程序无法进入中断,如果去掉upload hps,d1a的部分就能够连续进入中断,我估计可能是我的寄存器设置的先后顺序有问题.



 
dongyupeng
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-04-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-26 18:43
给点意见啊
dongyupeng
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-04-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-16 09:33
还是自己搞定的
游客

返回顶部