免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 24461 | 回复: 8
打印 上一主题 下一主题

Android内核的简单分析(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-19 16:58 |只看该作者 |倒序浏览
Google的Android操作系统已经成功面市,因为Android操作系统是基于Linux-2.6.25内核的,并且目前所有的源代码也都全部开放,因此可以简单地加以分析以方便以后向其他平台的移植工作.

   首先需要了解的就是Android的一些基本情况,并下载Android的源代码以方便分析.

   Android的官方站点:

   http://www.android.com/

   Android Source 的官方安装方法:

   http://source.android.com/download



   Android的中文站点:

   http://www.androidin.com/

   源代码包的相应联结地址:
   http://www.androidin.com/android-2337-1-1.html



   我们可以采用Android官方站点推荐方式来下载Android的源代码,也可以从Android中文站点直接下载源代码程序包,随后再更新和同步.
  
   当采用Android官方推荐方式下载或者需要更新你的源代码时,都需要git工具支持, 当你的系统没有安装git或者git版本过低时,建议从下面的地址更新到最新的git包.(Android要求git版本必须大于1.5.4)

   http://git.or.cz/

   给git自动升级的方式:

   git clone git://git.kernel.org/pub/scm/git/git.git

     
   如果采用下载源代码包的方式,下载并展开后,在 .repo/repo 目录下有同步执行的文件repo, 你可以将其拷贝到你的PATH所在路径以备使用,例如/usr/bin等等. 或者也可以从Android站点得到最新的repo文件并复制到PATH所在路径.

   wget http://android.git.kernel.org/repo

   源代码包解开后,其主目录下存在repo_sync.sh文件, 其主要是执行repo sync以实现和Android站点同步代码包的目的, 当执行出错后将再一次运行repo sync命令直到同步正常结束,但原文件包含错误,建议改成下面的程序原文件中少了一个空格)

#!/bin/bash
echo "============start repo sync================="
repo sync
while [ $? = 1 ]; do
echo "============sync failed, re-sync again ====="
sleep 3
repo sync
done


   这样, 运行sh repo_sync.sh就可以自动实现本地代码包的同步和更新动作了.

   我在Fedora Core 6上经过同步之后, du -h ./mydroid, 占用空间大约是2.1G



   在kernel子目录下存放的就是Android的Linux Kernel了, 通过和标准的Linux 2.6.25 Kernel的对比,我们可以发现,其主要增加了以下的内容:


   1. 基于ARM架构增加Gold-Fish平台,相应增加的目录如下:

      kernel/arch/arm/mach-goldfish

      kernel/include/asm-arm/arch-goldfish

      Gold-Fish平台采用的是ARM926T CPU作为BaseBand处理器, 该CPU主频至少为200M HZ. 采用MSM7201A CPU(ARM 11)作为主CPU, 其主频为528M HZ.  


   2. 增加了yaffs2 FLASH文件系统,相应增加的目录为:

      kernel/fs/yaffs2

      实际上,Android包经过编译后生成的system.img和ramdisk.img文件就是yaffs2格式的包.
   

   3. 增加了Android的相关Driver,相应目录为:

      kernel/drivers/android  


      主要分为:

           Android IPC系统:       Binder

           Android 日志系统:       Logger

           Android 电源管理:       Power

           Android 闹钟管理:       Alarm

           Android 内存控制台:     Ram_console

           Android 时钟控制的gpio: Timed_gpio


   4. 增加了switch处理, 相应的目录为:

      kernel/drivers/switch/   


   5. 增加了一种新的共享内存处理方式, 相应增加的文件为:

      kernel/mm/ashmem.c  

         
   6.  其他为Linux-2.6.25内核所做的补丁等等,例如BlueTooth, 在此不做详细分析






  
   另外GoldFish平台相关的驱动文件如下:

   1. 字符输出设备:

      kernel/drivers/char/goldfish_tty.c   

   2. 图象显示设备: (Frame Buffer)

      kernel/drivers/video/goldfishfb.c

   3. 键盘输入设备:

      kernel/drivers/input/keyboard/goldfish_events.c

   4. RTC设备: (Real Time Clock)

      kernel/drivers/rtc/rtc-goldfish.c

   5. USB Device设备:

      kernel/drivers/usb/gadget/android_adb.c

   6. SD卡设备:

      kernel/drivers/mmc/host/goldfish.c
     
   7. FLASH设备:

      kernel/drivers/mtd/devices/goldfish_nand.c

      kernel/drivers/mtd/devices/goldfish_nand_reg.h

   8. LED设备:

      kernel/drivers/leds/ledtrig-sleep.c

   9. 电源设备:

      kernel/drivers/power/goldfish_battery.c

   10. 音频设备:

       kernel/arch/arm/mach-goldfish/audio.c

   11. 电源管理:

       kernel/arch/arm/mach-goldfish/pm.c

   12. 时钟管理:

       kernel/arch/arm/mach-goldfish/timer.c



   以上为Android内核的大致分析,希望能给有兴趣的人员以简单帮助。

[ 本帖最后由 NeilWong 于 2008-12-19 18:22 编辑 ]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2008-12-19 18:22 |只看该作者
感谢LZ分享。

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
3 [报告]
发表于 2008-12-19 18:27 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2008-12-19 18:32 |只看该作者

回复 #1 NeilWong 的帖子

因为Android操作系统是基于Linux-2.6.25内核的,
===============
原来 google 的手机上用的是 linux ,我一直以为是 google 自己开发的
长见识了

论坛徽章:
0
5 [报告]
发表于 2008-12-19 19:52 |只看该作者
感谢LZ分享。

论坛徽章:
0
6 [报告]
发表于 2008-12-19 20:25 |只看该作者
不错,,学习。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2008-12-19 21:21 |只看该作者
又一个商业版本

论坛徽章:
0
8 [报告]
发表于 2008-12-19 21:24 |只看该作者
建议开一个andorid的分论坛,以后andorid必将大行其道

论坛徽章:
0
9 [报告]
发表于 2009-07-10 22:55 |只看该作者
好资料,谢谢分享了。:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP