Accessing flash directly from User Space
Jonathan.Haws at sdl.usu.edu
Wed Oct 28 06:59:31 EST 2009
I know this is probably a really dumb question, but a wise man once said that the only stupid question is the one that is not asked.
So, I have written a flash driver in VxWorks that simply addresses the flash directly and handles all the hardware accesses just fine. I am porting that to Linux and need it to run in user space (mainly to simplify the interface with the user - I want to keep it the same as in VxWorks). Here is a snippet of what my question is:
static uint8_t bflashEraseSector(int sa, int verbose)
uint16_t * flash = (uint16_t *) NOR_FLASH_BASE_ADRS;
/* We divide by 2 here to adjust for the 16-bit offset into the address */
offset = sa * NOR_FLASH_SECTOR_SIZE / 2;
flash[BFLASH_SECTOR_ERASE_ADDR1] = BFLASH_SECTOR_ERASE_BYTE1;
I am trying to get a pointer to NOR_FLASH_BASE_ADRS which is defined to be 0xFC000000. I then dereference that directly to write to the flash.
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?
Thanks for the help!
PS - I know that I could simply use the MTD driver provided by the kernel, but I need to be able to keep the interface the same so we can use previously written code.
More information about the Linuxppc-dev