Toybrick

标题: TB-RK3399ProX Debian10系统与内存映射FrameBuffer出错 [打印本页]

作者: wtmelen    时间: 2022-9-5 21:05
标题: TB-RK3399ProX Debian10系统与内存映射FrameBuffer出错
本帖最后由 wtmelen 于 2022-9-6 09:34 编辑

已经解决
请教大神,运行mmap出错,查不出原因。
报错:
toybrick@debian10:~/03mycode/dispaly$ sudo ./display
screen_size:8294400
mmap error: Invalid argument



  1. static int width; //LCD X 分辨率
  2. static int height; //LCD Y 分辨率
  3. static unsigned short *screen_base = NULL; //映射后的显存基地址
  4. int main(int argc, char *argv[])
  5. {
  6.     struct fb_fix_screeninfo fb_fix;
  7.     struct fb_var_screeninfo fb_var;
  8.     unsigned int screen_size;
  9.     int fd;
  10.     /* 打开 framebuffer 设备 */
  11.     if (0 > (fd = open("/dev/fb0", O_RDWR))) {
  12.         perror("open error");
  13.     exit(EXIT_FAILURE);
  14.     }
  15.     /* 获取参数信息 */
  16.     ioctl(fd, FBIOGET_VSCREENINFO, &fb_var);
  17.     ioctl(fd, FBIOGET_FSCREENINFO, &fb_fix);
  18.     screen_size = fb_fix.line_length * fb_var.yres;
  19.     printf("screen_size:%d\r\n",screen_size);
  20.     width = fb_var.xres;
  21.     height = fb_var.yres;
  22.     /* 将显示缓冲区映射到进程地址空间 */
  23.     screen_base = mmap(NULL, screen_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
  24.     if (MAP_FAILED == (void *)screen_base) {
  25.         perror("mmap error");
  26.         close(fd);
  27.         exit(EXIT_FAILURE);
  28.     }
  29.     memset(screen_base, 0xFF, screen_size);
  30.     munmap(screen_base, screen_size); //取消映射
  31.     close(fd); //关闭文件
  32.     exit(EXIT_SUCCESS); //退出进
  33. }
复制代码



作者: jefferyzhang    时间: 2022-9-6 11:25
都2202年了,现在OS都只支持drm框架了
作者: wtmelen    时间: 2022-9-7 10:25
jefferyzhang 发表于 2022-9-6 11:25
都2202年了,现在OS都只支持drm框架了

哈哈哈,最近才知道。诶rockchip-linux怎么没drm与rga的lib了




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3