转自http://www.linuxidc.com/Linux/2011-02/32328.htm

目标:将fbdump-0.4.2放到andrioid中运行,能够抓framebuff中的桌面。

方法:

1 下载http://linux.softpedia.com/progDownload/fbdump-Download-24576.html

将fbdump解压缩到externel目录,创建编译文件:external/fbdump-0.4.2/Android .mk

内容如下:

LOCAL_PATH :=$(call my-dir)

include $(CLEAR_VARS)

charge_local_path := $(LOCAL_PATH)

LOCAL_SRC_FILES := src/main.c /

src/cmap.c /

src/surface.c /

src/convert.c /

src/fb.c /

src/vga.c /

src/vt.c /

src/options.c

LOCAL_MODULE := fbdump

LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_CFLAGS += -DPACKAGE='"fbdump"' /

-DVERSION='"0.4.2"' /

-DDEBUG

LOCAL_MODULE_TAGS := eng

LOCAL_STATIC_LIBRARIES := libminzip libunz libminui libpixelflinger_static libpng libcutils libstdc++ libc

include $(BUILD_EXECUTABLE)

修改文件fbdump-0.4.2/src/config.h

加入#undef SUPPORT_VGA16FB

fbdump-0.4.2/src/vt.c加入

#include <fcntl.h>


上面的Android .mk是我从其他工程复制过来的,粗略调整一下,有些冗余。

2 编译并打包到系统中。

3 运行测试:fbdump -fb /dev/graphics/fb0 >test.ppm


3 附注说明:有些嵌入式linux厂家的提供的linux 中的framebuff驱动不完成,导致fbdump运行直接出错。根据我目前经验(至少两种cpu)一般都是没有填充pseudo_palette,方法为:

修改probe函数,在register_framebuffer前加入这样几句:


//shuaiwen added begin

#define MAX_PALETTES 16

fbinfo->pseudo_palette = kmalloc(sizeof (u32) * MAX_PALETTES, GFP_KERNEL);

if (fb_alloc_cmap(&fbinfo->cmap, 256, 0) < 0) {

printk(KERN_ERR " Can't allocate color map/n");

goto free_video_memory;

}


//shuaiwen added end

当然是否真的是这个原因造成的还得靠你自己分析。

更多相关文章

  1. 开发环境的搭建(Eclipse SDK jdk ADT)
  2. Android系统架构简介
  3. android studio添加第三方.os库
  4. Android(安卓)- adb - Linux - 程序“adb”尚未安装
  5. react native 相关资料
  6. Android(安卓)8.1.0 SystemUI 修改之 - 系统锁屏状态下点击用户
  7. Android(安卓)JNI/NDK开发之基本姿势
  8. Android视频采集+H264编码
  9. Android(安卓)ubuntu10.04 源码下载和编译

随机推荐

  1. Android之Handler
  2. Kivy A to Z -- Kivycatalog例子无法在An
  3. android Handler
  4. Android(安卓)WebView 和 手机后退按钮
  5. Activity的启动模式
  6. Android中的控件
  7. Android(安卓)Handler机制理解
  8. Android(安卓)滑动手势侦测方法介绍
  9. win7下修改AVD默认路径
  10. Android工程中R.java文件的重新生成——