CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 4897|回复: 0

关于android内核版本类型问题

[复制链接]
发表于 2013-9-25 09:39:33 | 显示全部楼层 |阅读模式
最近纠结linux 内核和andorid内核以及对应平台的关系,查了好多资料,得出一下所谓的结论,因为不知道正确与否,恳请大家指正。
----------------------------------------------------------------------------------------------
一些名词定义,以免混淆下面结论:
andorid系统:特指内核以上的那部分,包括HAL层。
android系统版本:特指android系统的版本,如android2.3,android4.2.2。不包括kernel部分,但包括HAL层。
android内核/android kernel:特指内核部分。
android内核版本,指其linux内核的版本,如andorid4.2使用linux3.4。
android:包括android系统和android内核。

将android分为系统和内核两类的原因:因为我们下载源码的时候,往往是分开下载的,android系统单独下载(https://android.googlesource.com/platform/manifest),android内核源码则要到处找地方下载。分不同的cpu类型的。
-------------------------------------------------------------------------------------------------——————————————
-------------------以下就是所谓的结论,希望大家指正-------------------------------——————————————————
目前linux内核有如下几类(如下分类仅仅针对关于android内核和linux内核之间,那些ubuntu内核等不包含进去对比)

A.Linux offical kernel :
linux官方内核,可以使用各个平台。可以直接从www.kernel.org下载。
和andorid的关系:其实,只有间接的关系。android使用linux作为内核。

B.特定 CPU(platform) linux kernel:
      特定cpu的linux内核,由于支持某厂商CPU芯片的可运行代码并不在linux官方内核中,为此,这些cpu厂商为了其cpu能运行linux并且让其他人可以基于这些芯片开发关于linux内核的系统/程序,其自行发布了自己的Linux 内核版本或者patch。实际上就是基于某个linux官方内核,添加相关的cpu代码,当然,一些SOC的外设接口也添加上去和修改。例如A20 SDK2.0的lichee,可以从linux-sunxi下载。(http://dl.linux-sunxi.org/users/amery/A20-SDK-2.0/)
      不过某些cpu的代码可能已经在linux 官方内核中了,如S3C2440。开发者不需要到三星的官网下载对应的patch或特定Linux 内核源码。

和android的关系:

我们可以到该googlesource.com下载msm、common等芯片平台的android kernel source。
例如,我们下载msm的android内核代码:https://android.googlesource.com/kernel/msm/

不过,googlesource.com并没有allwinner芯片的branch。。。额。。。。其实,关于A20与android的linux branch不知道在哪里下载。。。为此,我做出如下猜想,可能是错的,与了解android程度低有关:
    1.A20 的android kernel souce仅合作伙伴才获得。
    2.由于linux官方已经从新接纳android的驱动。linux3.4的内核源码已经包含关于android的驱动。而A20 SDK2.0使用linux3.4为基低,所以,只要你下载了A20 SDK2.0,然后在配置选项enable android就可以了。
        3.A20官方只给出A20 SDK2.0,只负责cpu和与SOC相关外设的驱动,与android/android内核没关系,就算有关系,也就是linux 官方的内核包含了android的相关代码而已。与A20没关系的。如果想基于A20开发android自己修改对应的代码吧。
       
   以上是我的三种猜测,如果版主知道的话,直接指出我的错误并通知我修改编辑吧~~~

C.目标平台linux kernel:
      该种linux内核,由于目标平台已经确定,所以,网卡芯片,flash,ts等各种固有的外设已经确定,因此,在linux内核上编写对应的驱动。该内核可能是直接基于linux官方内核修改/添加驱动而成,例如当cpu为S3C2440可以这样子做,如果cpu的支持代码,linux官方并没有,则需要到特定cpu厂商拿相关的SDK,如A20 SDK2.0。不过,仅仅得到这些SDK还不行的,目标平台的linux内核代码还需要添加对应的外设驱动。cubieboard2的平台代码就是这种类型(https://github.com/cubieboard2/linux-sunxi)。
          
          不过,这些平台类型,似乎和android有些关系,因为,我看到了关于cb2的一些下载链接:
          cubieboard2_android_SDK_v1.03.tgz 包括android系统4.2.2以及kernel source code
          http://cubiebook.org/index.php?t ... r_own_Android_image
          
     该类SDK的内核部分:由A20 SDK2.0,添加/修改/优化外设驱动制成,android系统部分,从android官网下载。(我猜测的,呵呵,这个SDK正在下载中。。。)
         
好了,写了一大堆,只是总结一下这么多SDK类型的区别。有错误,希望大家指正哇。。。。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-23 16:44 , Processed in 0.021197 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部