From: shino k. <shi...@ya...> - 2002-11-26 00:49:51
|
> Could you quantify "first few bytes"? > > And maybe show some sample code? > > It's very difficult to offer any useful help when > the description is so > vague. > > JE Sorry about that. This is my DMA_WRITE function. It sets couple of registers and then write to bulk_out endpoint. fewbytes = 100 to 200 bytes. I couldn't count the exact number. that is why I wrote like that. int DMA_Write (usb_dev_handle * mydev) { //dmactl read int rc, i,flag,j; unsigned char r1val[0x1000]; unsigned char val[6] = { 0x17, 0x00, 0x30, 0x03, 0x00, 0x00 }; //to read dmactl register unsigned char val5[6]={0x1f, 0x00, 0x24, 0x03, 0x00, 0x00 }; unsigned char val6[10]= { 0x1f, 0x00, 0x24, 0x03, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00 }; //set ep_rsp unsigned char val1[10] = { 0x1f, 0x00, 0x80, 0x01, 0x00, 0x00, 0x16, 0x00, 0x28, 0x00 }; //set dma ctl unsigned char val2[10] = { 0x1f, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 }; //set dma count unsigned char val3[10] = { 0x1f, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 }; //set dma address unsigned char val4[10] = { 0x1f, 0x00, 0x84, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 }; //set dma stat to start bit for(i=0;i<=0x1000;i++){ r1val[i]=0xaa; } Write_Register (0x0d, val1, 10, mydev); //writing dmactl register Write_Register (0x0d, val2, 10, mydev); //writing dmacount register Write_Register (0x0d, val3, 10, mydev); //writing dmaaddress register Write_Register (0x0d, val6, 10, mydev);//write ep_rsp Write_Register (0x0d, val4, 10, mydev); //writing dma start register rc = usb_bulk_write (mydev, 0x01, r1val, 0x1000, 1000); if (rc < 0) { printf ("%s\n", usb_strerror ()); } return 0; } DMA_READ function reads from the same exact location. int DMA_Read (usb_dev_handle * mydev) { //dmactl read int rc, i,flag,j; unsigned char r1val[0x1000]; //I have register initilization here // printf("DMA read\n"); Write_Register (0x0d, val1, 10, mydev); //writing dmactl register Write_Register (0x0d, val2, 10, mydev); //writing dmacount register Write_Register (0x0d, val3, 10, mydev); //writing dmaaddress register Write_Register (0x0d, val6, 10, mydev);//write ep_rsp Write_Register (0x0d, val4, 10, mydev); //writing dma start register rc = usb_bulk_read (mydev, 0x82, r1val, 0x1000, 2000); if (rc < 0) { printf ("%s\n", usb_strerror ()); } for(j=0;j<=0x1000;j++){ printf("%x\n",r1val[j]); } return 0; } void Write_Register (int add, unsigned char *buf, int count, usb_dev_handle * handle) { int rc; rc = usb_bulk_write (handle, add, buf, count, 1000); //set pci to read if (rc < 0) { printf ("%s\n", usb_strerror ()); } } __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |