幻想小说网 酷文学 深夜书屋 叮当小说网 找小说网 无限小说网 红尘小说网

用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

posted on 2010-07-09 11:19  张云临  阅读(192)  评论(0编辑  收藏  举报

导航