Toybrick

TB-RK3399ProX Debian10系统与内存映射FrameBuffer出错

wtmelen

注册会员

积分
81
发表于 2022-9-5 21:05:13    查看: 2935|回复: 2 | [复制链接]    打印 | 显示全部楼层
本帖最后由 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

版主

积分
13610
发表于 2022-9-6 11:25:46 | 显示全部楼层
都2202年了,现在OS都只支持drm框架了
回复

使用道具 举报

wtmelen

注册会员

积分
81
 楼主| 发表于 2022-9-7 10:25:24 | 显示全部楼层
jefferyzhang 发表于 2022-9-6 11:25
都2202年了,现在OS都只支持drm框架了

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表