linux下的framebuffer的例子(转)
例子实现了直接写屏的功能,即把屏幕清空(变黑),程序的流程大致为:打开一个FrameBuffer设备;通过mmap调用把显卡的物理内存空间映射到用户空间;通过映射关系直接写内存。
头文件
////////////////////////////////////////
///////////// fbtools.h ////////////////
////////////////////////////////////////
#ifndef _FBTOOLS_H_
#define _FBTOOLS_H_
#include <linux/fb.h>
//a framebuffer device structure;
typedef struct fbdev
{
int fb;
unsigned long fb_mem_offset;
unsigned long fb_mem;
struct fb_fix_screeninfo fb_fix;
struct fb_var_screeninfo fb_var;
char dev[20];
} FBDEV, *PFBDEV;
//open & init a frame buffer
//to use this function,
//you must set FBDEV.dev="/dev/fb0"
//or "/dev/fbX"
//it's your frame buffer.
int fb_open(PFBDEV pFbdev);
//close a frame buffer
int fb_close(PFBDEV pFbdev);
//get display depth
int get_display_depth(PFBDEV pFbdev);
//full screen clear
void fb_memset(void *addr, int c, size_t len);
#endif
测试文件,其中深颜色的注释部分为在我机器上测得的结果
///////////////////////////////////////////
/////////////// fbtools.c ///////////////
///////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <asm/page.h>
#include "fbtools.h"
#define TRUE 1
#define FALSE 0
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
//open & init a frame buffer
int fb_open(PFBDEV pFbdev)
{
pFbdev->fb = open(pFbdev->dev, O_RDWR);// pFbdev->fb==3
if(pFbdev->fb < 0)
{
printf("Error opening %s: %m. Check kernel config
", pFbdev->dev);
return FALSE;
}
if (-1 == ioctl(pFbdev->fb,FBIOGET_VSCREENINFO,&(pFbdev->fb_var)))
{
printf("ioctl FBIOGET_VSCRE
相关文档:
http://www.sz800.com/haoserver/ipself.asp :
查看本机外网IP号
不同的Linux之间copy文件常用有3种
方法
,第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。第二种方法就是采用samba服务,类似
Windows
文件copy的方式来操作,比较简洁方便,第 ......
将应用程序加到文件系统中打包后一起下载方法总结如下:
假设ramdisk.gz存放在/home/cvtech/jx2410/root/下面,则操作如下:
$cd /home/cvtech/jx2410/root/
$mkdir rd
$gunzip ramdisk.gz
上述操作后已将ramdisk.gz解压成ramdisk系统映像文件。
$mount -o loop ramdisk rd/
$cd rd/
其中命令mount的-o参数loop表示 ......
http://mirrors.163.com/archlinux/ (网易,公网测试中)
http://mirror.lupaworld.com/archlinux/(LUPA,推荐公网用户使用)
ftp://public.gooth.cn/archlinux/ (Gooth,电信、教育网)
rsync://public.gooth.cn/archlinux/ (Gooth,电信、教育网)
ftp://xde.gooth.cn/archlinux/ (Gooth,网通)
http://ft ......
静态链接库是以.a结尾的文件,一般是用工具将多个.o文件合并到一起组成静态库
动态链接库是以.so结尾的文件,和windows下的dll文件类似。
静态链接库都可以在程序编译过程中用 -L参数来指定他们 -L/opt/lib/XXX.a
动态链接库一般是在LD_LIBRARY_PATH中来指定搜索路径,也可以在 -L/opt/lib 后面加一个 lXX,对应了lib中的XX. ......