> >>> How can I get that pointer? Unfortunately I cannot simply use > the > >>> > >> address of the flash. Is there some magical function call that > >> gives me access to that portion of the memory space? > >> > >> $ man 2 mmap > >> > >> You want MAP_SHARED and O_SYNC. > >> > > > > > > To use that I need to have a file descriptor to a device, do I > not? However, I do not have a base flash driver to give me that > file descriptor. Am I missing something with that call? > > > > /dev/mem > Okay, I now have access to the flash memory, however when I write to it the writes do not take. I have tried calling msync() on the mapping to no avail. I have opened the fd with O_SYNC, but cannot get things to work right.
Here are the calls: int fd = open("/dev/mem", O_SYNC | O_RDWR); uint16_t * flash = (uint16_t *)mmap(NULL, NOR_FLASH_SIZE, (PROT_READ | PROT_WRITE), MAP_PRIVATE, fd, NOR_FLASH_BASE_ADRS); When I do flash[0] = 0x1234, and then check the value, they do not match. flash[0] = 0x1234; msync(flash, NOR_FLASH_SIZE, MS_SYNC | MS_INVALIDATE); printf("flash[0] = %#04x\n", flash[0]); That prints flash[0] = 0x7f45. I have verified that I am reading the correct values. I can display the flash contents in U-Boot and 7f45 is what is in the first 16 bits of flash. Why can I not write to flash? What am I doing wrong? Thanks! Jonathan _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev