How do I access nvRAM from user space?

David Hawkins dwh at ovro.caltech.edu
Fri Sep 26 04:14:10 EST 2008


Hi Bruce,

> Thanks for the reply.  So if my nvSRAM device is located at 0xb0000000 in 
> physical memory, what would the mmap() call look like?  Also, do I need to 
> have a device tree entry for the kernel to know about the memory?  I can 
> access the device in uboot so I know it works, but I can't figure out the 
> mmap to get it from linux

Its pretty much:

	/* Open /dev/mem and map it */
	printf(" * open /dev/mem\n");
	fd = open("/dev/mem", O_RDWR | O_SYNC);
	if (fd < 0) {
		printf("Open /dev/mem failed - %s\n",
			strerror(errno));
		return -1;
	}
	printf(" * map %d page(s) (%d-bytes) at address 0x%.8X\n",
			mem_pages, mem_size, mem_phys);
	mem_addr = (char *)mmap(
		0,
		mem_size,
		PROT_READ|PROT_WRITE,
		MAP_SHARED,
		fd,
		mem_phys);
	if (mem_addr == (char *)MAP_FAILED) {
		printf("Error: mmap failed\n");
		close(fd);
		return -1;
	}

I'll send you the code I ripped that from, and another
example from the Busybox code.

Cheers,
Dave





More information about the Linuxppc-embedded mailing list