zoukankan      html  css  js  c++  java
  • 用Android模拟器运行嵌入式GUI FTK


    用Android模拟器运行 FTK
    96 views| 2010-07-05| 李先静| Uncategorized| 编辑| 发表评论

    转载时请注明出处和作者联系方式
    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli@gmail.com>

    用Android模拟器运行FTK

    以前写过一篇文章介绍如何在Androidr模拟器上运行FTK(http://www.limodev.cn/blog/archives /1400),那种方法有点别扭,而且要下载Android 的源代码才能编译。最近几个开发板都坏了,所以上周末研究了一下Android模拟器,自己生成文件系统,只是利用Android的模拟器来运行FTK。

    Android的模拟器是基于qemu的,个人感觉qemu不好用,除了用Openmoko做的模拟器外,我还没成功用qemu来模拟运行过arm linux。Android在qemu做了不少人性化的工作,用起来比较方便。

    0.请参考网上的方法安装Android SDK。

    1.生成自己的init程序。

    创建几个基本目录。

    int init_dirs(void)
    {
        umask(0);
        mkdir("/dev", 0755);
        mkdir("/system", 0777);
        mkdir("/dev/block", 0755);
     
        return 0;
    }

    创建MTD设备的结点。

    int init_dev_nodes(void)
    {
        int ret = 0;
        ret = mknod("/dev/block/mtdblock0", 0755|S_IFBLK, makedev(31, 0));
        printf("mknod /dev/block/mtdblock0 ret = %d errno=%d/n", ret, errno);
     
        return 0;
    }

    加载system.img 分区。

    int mount_filesystem(void)
    {
        int ret = 0;
        ret = mount("/dev/block/mtdblock0", "/system", "yaffs2", 0, NULL);
        printf("mount /dev/block/mtdblock0 ret = %d errno=%d/n", ret, errno);
     
        return 0;
    }

    运行FTK的桌面。

    int startup_desktop(const char* name)
    {
        struct stat st = {0};
        int ret = stat(name, &st);
     
        if(ret != 0)
        {
           return -1;
        }
     
        printf("starting the second init: %s./n", name);
     
        if(fork() == 0)
        {
           ret = execl(name, name);
        }
     
        return ret;
    }
     
    int switch_root(void)
    {
        int ret = chroot("/system");
        ret = startup_desktop("/opt/bin/desktop");
     
        return ret;
    }

    2.生成ramdisk.img

    rm -rf ramdisk
    mkdir ramdisk
     
    cd init && make; cd - >/dev/null
     
    echo "Generating ramdisk..."
     
    cd ramdisk && find . | cpio -c -o > ../initrd; cd - >/dev/null
    gzip initrd && mv initrd.gz ramdisk.img

    3.生成system.img

    if [ ! -d rootfs ]
    then
        tar xf rootfs.tar.gz
    fi

    (在这里解压编译好的FTK(ftk-dist.tar.gz)到rootfsrts)

    ./mkyaffs2image rootfs system.img

    4.拷贝生成的ramdisk.img system.img到SDK目录里。

    echo "Copying files..."
    for f in ramdisk.img system.img
    do
        echo "  $f --> $ADNROID_SDK_IMAGES_DIR"
        mv -f $f $ADNROID_SDK_IMAGES_DIR
    done


    完整源代码和脚本请到这里下载:
    svn checkout http://ftke.googlecode.com/svn/trunk/android-ftk-emu android-ftk-emu

  • 相关阅读:
    SharePoint 2013 开启訪问请求
    鸟哥Linux私房菜知识点总结3到5章
    火狐浏览器中加入httprequest的方法
    xhprof安装&amp;&amp;使用
    第一篇、Android Supersu 权限管理定制,隐藏过滤权限,指定APP最高权限
    Android 推断程序在手机中是否是活动状态或者正在执行状态
    【Java并发编程实战】—–synchronized
    24岁菜鸟,能一个人撑起App开发吗
    技术与经济之八:关于优惠与红包
    关于notepad++如何自动补全标签的问题
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167391.html
Copyright © 2011-2022 走看看