资源简介

Zedboard ov7725板端Linux下tcp视频发送

资源截图

代码片段和文件信息

////////////////////////////////////////////////////////////////////////
//
// opencv_hello_world.c
//
// This is a simple introductory OpenCV program. The program reads an
// image from a file inverts it and saves the result.
//
////////////////////////////////////////////////////////////////////////
#include 
#include 
#include 
#include 
#include 
#include 




void start_my_dma(unsigned long phy_addr)
{
//return;
int fd = open(“/dev/mem“ O_RDWR);
unsigned char* virtual_addr;
unsigned long size = 32;
virtual_addr = (unsigned char*)mmap(NULL size PROT_READ | PROT_WRITE MAP_SHARED fd (off_t)phy_addr);
if(virtual_addr == MAP_FAILED)
{
perror(“virtual_addr_in mapping for absolute memory access failed.\n“);
return;
}
unsigned int *dma_sta_reg = (volatile unsigned int *)virtual_addr;
*dma_sta_reg = 3;
printf(“dma_sta_reg is 0x%x\n“*dma_sta_reg);
while(*dma_sta_reg & 1 == 1); //printf(“busy\n“);
munmap((void *)virtual_addr size);
close(fd);

}

void send_rgb_tcp(char * ip)
{
int sockfd;
unsigned long vdma_apb_addr = 0x70000000;
unsigned long src_phy_addr1 = 0x1c000000;
unsigned long src_phy_addr2 = 0x1c200000;
unsigned long src_phy_addr3 = 0x1c400000;

sockfd = Socket_Init(ip“8181“);

unsigned char *buffer = (unsigned char *)malloc(640*480*4);
if(NULL == buffer)
printf(“malloc error\n“);
int fd = open(“/dev/mem“ O_RDWR);
volatile unsigned char* virtual_src_addr1*virtual_src_addr2*virtual_src_addr3;
unsigned long size = 640*480*4;
virtual_src_addr1 = (volatile unsigned char*)mmap(NULL size PROT_READ | PROT_WRITE MAP_SHARED fd (off_t)src_phy_addr1);
if(virtual_src_addr1 == MAP_FAILED)
{
perror(“virtual_addr1 mapping for absolute memory access failed.\n“);
return;
}
virtual_src_addr2 = (volatile unsigned char*)mmap(NULL size PROT_READ | PROT_WRITE MAP_SHARED fd (off_t)src_phy_addr2);
if(virtual_src_addr2 == MAP_FAILED)
{
perror(“virtual_addr2 mapping for absolute memory access failed.\n“);
return;
}
virtual_src_addr3 = (volatile unsigned char*)mmap(NULL size PROT_READ | PROT_WRITE MAP_SHARED fd (off_t)src_phy_addr3);
if(virtual_src_addr3 == MAP_FAILED)
{
perror(“virtual_addr3 mapping for absolute memory access failed.\n“);
return;
}
unsigned char *virtual_apb_addr;
virtual_apb_addr = (unsigned char*)mmap(NULL 32 PROT_READ | PROT_WRITE MAP_SHARED fd (off_t)vdma_apb_addr);
if(virtual_apb_addr == MAP_FAILED)
{
perror(“virtual_apb_addr mapping for absolute memory access failed.\n“);
return;
}
volatile int *vdma_reg = (volatile int *)virtual_apb_addr;
printf(“vdma_reg is %x\n“*vdma_reg);
unsigned char * image_addr[3];
image_addr[0] = virtual_src_addr1;
image_addr[1] = virtual_src_addr2;
image_addr[2] = virtual_src_addr3;
int cnt = 0;
while(1)
{
if(*vdma_reg == 0x02)
{
*vdma_reg = 0x02;
memcpy(bufferimage_addr[(cnt++)%3]size);

Socket_Send(sockfdbuffersize);
}
}

}

int ma

评论

共有 条评论