linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* mmap problem in device driver and application program.
@ 2008-05-08 15:33 MingLiu
  2008-05-08 17:01 ` Dave Cogley
  0 siblings, 1 reply; 8+ messages in thread
From: MingLiu @ 2008-05-08 15:33 UTC (permalink / raw)
  To: linuxppc-embedded

[-- Attachment #1: Type: text/plain, Size: 2127 bytes --]


Dear all,
I had some problem when I use mmap() file operation in the device driver file operation. My situation can be described as:
 
1. I reserve 2MB DDR memory as a look-up-table (LUT) for my customized device. The physical start address in the memory is 0x03000000 and the size is 2MB. 
 
2. In the device driver, I use mmap file operation to make this memory area directly accessible by application programs. In the mmap file operation, it looks like:
 
  if(remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, vma->vm_end - vma->vm_start, vma->vm_page_prot)){     return -EAGAIN;   }
 
3. In the application program, I read from a file and initialize the LUT area. I use the following sentence to mmap the physical address into a virtual one which could be accessed by the application:
 
  // the physical address is from 0x03000000 with a size of LUT_SIZE_IN_BYTE equal to 2MB
  lut_mem_base = (unsigned int *) mmap(0, LUT_SIZE_IN_BYTE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x03000000);
 
Then, I initialize the LUT area with the virtual address specified by lut_mem_base. 
 
  for(i=0;;i++){
    fread(&buf, sizeof(unsigned int), 1, fp);
    *(lut_mem_base + i) = buf;
    if(feop(fp)){
       break;
    }
  }
 
4. After the initialization of the LUT memory area, in the device driver, DMA transfer will be enabled using the physical address of 0x03000000 as the source address. The destination is a register in my customized device. The data is fed from the memory to my device register. 
 
HOWEVER, I found that the data fed to the device register is not the same as the one used to initialize the LUT memory. Maybe the DMA fetches wrong data from different addresses and feeds to my device. Since this is my first time to use mmap, I am not self-confident to my program, both in the device driver and in the application. Is there anything wrong with my mmap part? I will appreciate so much if some experts could give me some hints. Thanks in advance.
 
BR
Ming
 
 
 
 
 
 
_________________________________________________________________
用手机MSN聊天写邮件看空间,无限沟通,分享精彩!
http://mobile.msn.com.cn/

[-- Attachment #2: Type: text/html, Size: 2717 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-05-26 10:08 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-08 15:33 mmap problem in device driver and application program MingLiu
2008-05-08 17:01 ` Dave Cogley
2008-05-08 18:42   ` MingLiu
2008-05-09 20:55     ` Dave Cogley
2008-05-13  9:11       ` MingLiu
2008-05-13 17:51         ` Howard, Marc
2008-05-14  6:18         ` Johan Borkhuis
2008-05-26 10:08         ` Misbah khan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).