热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Fedora下DirectFB开发手记

系统环境:虚拟机Fedoralive131、ls/dev/fb*查看默认启动方式没有创建/dev/fb0设备文件2、查找资料后,添加fb0设备:修改/boot/grub/menu.lst在kernel启动参数最后增加vga=788说明:fedora13中没有lilo,所以内核启动参数需要修改grub中的配置v

系统环境: 

虚拟机 Fedora live 13

1、ls /dev/fb* 查看 默认启动方式 没有创建 /dev/fb0 设备文件

2、查找资料后,添加fb0 设备:

修改 /boot/grub/menu.lst

在 kernel 启动参数 最后增加 vga=788

说明:

fedora 13 中没有 lilo ,所以内核启动参数 需要修改 grub 中的配置

vga 小写

788 的含义(网上搜 linux vga 参数)为 800*600 16位真彩色

 

# Normal VGA console
# vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769

3、控制台和图形界面的切换方法:

ctrl+alt+f1 进入图形界面

ctrl_alt+f2 进入tty2 控制台

4、切换进入图形界面

打开控制台

cat /dev/fb0 > /root/screensnap

ls -l /root/screensnap

发现 发现文件大小为 1920000 (???为什么?)

如果按照 800*600*16位真彩色算 应该是 800*600*2 = 96000

不管了,反正在图形模式下也有了 fb0 这个设备文件了

想办法打开这个位图文件看看结果吧

经过验证 ctrl+alt+f2 进入到控制台界面 cat /dev/fb0 > /root/aaa 同样生成的是 1920000

这个跟vga参数设置为 788 不相符??

5、编写基础测试程序
参考 http://www.linuxidc.com/Linux/2011-09/43799p2.htm 

  1. #include    
  2. #include    
  3. #include    
  4. #include    
  5. #include    
  6.   
  7. int main () {  
  8.     int fp=0;  
  9.     struct fb_var_screeninfo vinfo;  
  10.     struct fb_fix_screeninfo finfo;  
  11.     fp = open ("/dev/fb0",O_RDWR);  
  12.   
  13.     if (fp < 0){  
  14.         printf("Error : Can not open framebuffer device/n");  
  15.         exit(1);  
  16.     }  
  17.   
  18.     if (ioctl(fp,FBIOGET_FSCREENINFO,&finfo)){  
  19.         printf("Error reading fixed information/n");  
  20.         exit(2);  
  21.     }  
  22.       
  23.     if (ioctl(fp,FBIOGET_VSCREENINFO,&vinfo)){  
  24.         printf("Error reading variable information/n");  
  25.         exit(3);  
  26.     }  
  27.   
  28.     printf("The mem is :%d/n",finfo.smem_len);  
  29.     printf("The line_length is :%d/n",finfo.line_length);  
  30.     printf("The xres is :%d/n",vinfo.xres);  
  31.     printf("The yres is :%d/n",vinfo.yres);  
  32.     printf("bits_per_pixel is :%d/n",vinfo.bits_per_pixel);  
  33.     close (fp);  
  34. }  

执行结果如下: 

[root@fedora-xbmc share]# cd fb
[root@fedora-xbmc fb]# ls
test1.c
[root@fedora-xbmc fb]# gcc test1.c -o test1
test1.c: 在函数‘main’中:
test1.c:15: 警告:隐式声明与内建函数‘exit’不兼容
test1.c:20: 警告:隐式声明与内建函数‘exit’不兼容
test1.c:25: 警告:隐式声明与内建函数‘exit’不兼容
[root@fedora-xbmc fb]# ./test1
The mem is :1920000
The line_length is :1600
The xres is :800
The yres is :600
bits_per_pixel is :16
[root@fedora-xbmc fb]#

基本完成fb0 的配置,为后续开发及验证做好准备,可惜的是 对 cat 的结果还没搞太懂

最后:

参考http://www.linuxidc.com/Linux/2011-09/43799p2.htm ,基本可以得出 之所以 cat 的结果是整屏的2倍 是因为:

这是因为在现代的图形系统中大多有缓冲技术,显存中存有两页屏幕数据,这是方便快速的改变屏幕内容实现动画之类比较高的要求 

哪位兄台知道 vga 参数 是否可以被设置为 32 位真彩色?(偶需必须用到透明位) 参数值应该是怎样的?


推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入解析 HDFS Federation:多命名空间架构详解
    HDFS Federation 是一种扩展 HDFS 架构的方式,通过引入多个独立的 NameNode 来解决单点故障和性能瓶颈问题。本文将详细探讨 HDFS Federation 的工作原理、优势以及潜在挑战。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 掌握Linux:基础命令入门
    本章节深入浅出地介绍了Linux系统中的基本命令操作,帮助读者快速上手并理解其核心功能。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
author-avatar
猫猫爱妞_462
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有