I have an SSD 1306 OLED display on my Beaglebone that is configured as a framebuffer in LInux (3.8.13). I want to use mmap to get its framebuffer so I can draw on it. The mmap call does return a pointer, but subsequent operations will segfault. This is the C code:
#include <stdio.h> > #include <sys/mman.h> > #include <sys/types.h> > #include <sys/stat.h> > #include <fcntl.h> > #include <unistd.h> > #include <linux/fb.h> > #include <sys/ioctl.h> > #include <wakkomononormalh.h> > #include <string.h> > #include <time.h> > > static char b[1024]; /* Local image buffer */ > static struct timespec displaydelay; > > > int main() > { > struct fb_fix_screeninfo fb_fixed_info; /* Framebuffer information */ > > int fbfd = 0; > char *fbp = 0; > > //Open the file for reading and writing > fbfd = open("/dev/fb0", O_RDWR); > > //Map the device to memory > > fbp = (char *)mmap(0, fb_fixed_info.smem_len, PROT_READ | > PROT_WRITE,MAP_SHARED > , > fbfd, 0); > > if ((int)fbp == -1) { printf("Error: failed to map framebuffer device > to memory./n"); > return 4; > } > > printf("The framebuffer device was mapped to memory successfully./n"); > > > // Clear screen > > memset(b,0,fb_fixed_info.smem_len); > memcpy(fbp,b,screensize); > > The code fails at memcpy. I knew I would have a learning curve, but I > have been in circles on this. I thought I dodged a bullet not having to > write kernel drivers for my project, but... > Thanks. -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.