- There are limits on the starting address for mmap, It must be page aligned.
- You need to pass an argument to MMAP that makes sure the memory is not
buffered, and not cached
- You need to check the return value from MMAP, to see if it failed (which it
did in your case)
- You need to check the return value for OPEN to make sure it didn't fail. It
will fail if non-root tries to open /dev/mem
Search old posts for more on all these issues, keyword "MMAP"
-Curtis.
On October 14, 2006 06:44 pm, David Kadjo wrote:
> Hi all,
>
> I'm new to the TS7200 board.I have written the program below to turn
> on the LED on the boards. I get a "segmentation
> fault" error every time I run it. Could any body help ?
>
> thanks
>
> #include<unistd.h>
> #include<sys/types.h>
> #include<sys/mman.h>
> #include<stdio.h>
> #include<fcntl.h>
> #include<string.h>
>
> int main(void)
> {
> volatile unsigned char *LED, *start;
> int fd=open("/dev/mem",O_RDWR);
>
> start=mmap(0,getpagesize(),PROT_READ|PROT_WRITE,
> MAP_SHARED,fd,0x80840020);
> LED=(unsigned char *)(start +0x00);
>
>
> *LED = 0x01; //turn on led
>
> close(fd);
> return 0;
> }
>
>
>
>
>
>
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|