Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1092300
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: 嵌入式

2010-12-28 21:43:54

   老是做应用,都做腻了,所以买了一个android的pad,借这个机会玩玩系统,毕竟自己没有这方面的经验,所以看了看网上的资料,决定从简单的东西入手,先做到能够修改官方下载的固件再说吧。
   参考了这个网页的内容:
   首先,下载需要的固件,并对机器进行下载的测试,确认固件没有问题。
   然后,安装了linux的虚拟机,根据网上的资料,编译解压工具——tccutil.rar,
  
文件: tccutil.rar
大小: 8KB
下载: 下载

   源代码很简单,tccpack用于打包,tccunpack用于解包,需要编译时,只要在linux环境下,执行下面的命令即可:

cc -o tccpack tccpack.c
cc -o tccunpack tccunpack.c


    使用下面的命令就可以解压tcc_mtd.img

tccunpack tcc_mtd.img


     解压后,生成三个文件:boot.img,system.img,recovery.img,具体三个文件做什么用途,我就不一一介绍了,转贴的网页说的也算详细,可以参考上面的说明。

    接着我对system.img继续解压,解压工具为unyaffs:

文件: unyaffs.rar
大小: 7KB
下载: 下载

     同样,需要进行编译,   

cc -o unyaffs unyaffs.c

     之后执行解压命令

unyaffs system.img

      这里需要说明,就是unyaffs这个软件我从网上下载后,执行报了段错误。查看了网上好多同志的帖子,似乎都有这个问题,但是没有什么人进行解答。没有办法,只能依靠自己,通过ue查看16进制的img文件,使用gdb单步调试unyaffs的代码,最后发现,原来img里面的某个结构的长度跟程序里面的不一样,不知道是不是厂家做了特别的处理。总之,修改代码长度后,我的img被解开了。这里鼓励下自己,不管遇到多大的困难,只要花心思去研究就一定能克服。这里挂出的链接是我自己修改过的程序。

      解压system.img后,得到android的系统目录:

/system/app 系统应用程序存放目录
/system/bin 系统的本地程序,是binary二进制的程序,里面主要是Linux系统自带的组件。
/system/etc 系统的配置文件,比如APN接入点设置等核心配置。
/system/fonts 字体文件夹。
/system/framework 主要是一些核心的文件,从后缀名为jar可以看出是系统平台框架。
/system/lib 存放的主要是系统底层库,如平台运行时库。
/system/media 铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音
/system/usr 用户文件夹,包含共享、键盘布局、时间区域文件等。
/system/xbin 存放系统管理工具,他们都是为系统管理员准备的,是一些系统管理和配置工具。
/system/build.prop 属性文件,“关于MID”中所显示的软件版本、内核、机型等信息。


       修改需要的东西,然后对system进行打包,同样打包也需要使用工具,有现成的工具可以使用:

   

文件: yaffs2.rar
大小: 113KB
下载: 下载

       在utils目录下,编译mkffs2imge

cc -o mkffs2imge mkffs2imge.c

       执行程序进行打包:

mkffs2imge system system.img

       再通过tccpack 形成最终镜像:

tccpack boot.img system.img recovery.img tcc_mtd.img

      整个过程完成
阅读(2411) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

cj_gameboy2011-02-26 22:20:33

diaoopad: 我的和你的问题一样,我不是很懂开发,只是DIY自己的机器,可就是解不开system.img.用论坛里面的unyaffs报ObjectID 3887684418 out of range.用系统的unyaffs报.....
你和我遇到的问题是一样的,网上没找到现成的解决方案,所以,我自己用uedit查看了二进制的img文件,才确定下来是代码里面长度处理的问题。你可以用我提供的下载先试一试,如果不行,可以把img文件传给我,我来解解看,我的邮箱是caijie_china@163.com

diaoopad2011-02-26 11:04:59

"原来img里面的某个结构的长度跟程序里面的不一样,不知道是不是厂家做了特别的处理。总之,修改代码长度后,我的img被解开了。"这些我就不懂了,麻烦你教教我,谢谢

diaoopad2011-02-26 11:02:55

我的和你的问题一样,我不是很懂开发,只是DIY自己的机器,可就是解不开system.img.用论坛里面的unyaffs报ObjectID 3887684418 out of range.用系统的unyaffs报段错误,你能帮一下我吗,谢谢