#include <stdio.h>
#include <stdlib.h>
#include<sys/mman.h>
#include<fcntl.h>
#include <asm/page.h>

//#define LEN (64*1024)


int main(void)
{
	int mem_fd,i=0;
	unsigned *led;

	mem_fd=open("/dev/uio0",O_RDWR|O_SYNC);
	if (mem_fd <0) 
	{
		printf("open device error\n");
		return;
	}
	led=mmap(NULL,24, PROT_READ | PROT_WRITE, MAP_SHARED,mem_fd, 0); 
  if (led == MAP_FAILED)
  {
          perror("mmap");
          close(mem_fd);
          exit(-1);
  }
  //led+=4;
  printf("led mem %p content %d\n",led,*(unsigned *)led);
  printf("led mem %p content %d\n",led+1,*(unsigned *)(led+1));
  printf("led mem %p content %d\n",led+2,*(unsigned *)(led+2));
  printf("led mem %p content %d\n",led+3,*(unsigned *)(led+3));
  printf("led mem %p content %d\n",led+4,*(unsigned *)(led+4));
  printf("led mem %p content %d\n",led+5,*(unsigned *)(led+5));
  printf("led mem %p content %d\n",led+6,*(unsigned *)(led+6));
  led+=5;
  while(i<3)
  {
		(*(volatile unsigned *)led)|=0x00000002;
		printf("led mem %p content %d\n",led,*(unsigned *)led);
		sleep(3);
		(*(volatile unsigned *)led)&=~(0x00000002);
		printf("led mem %p content %d\n",led,*(unsigned *)led);
		i++;
		sleep(3);
  }
  close(mem_fd);
}

