ac3165 linux驱动_来看看Android与Linux有啥关系吧

点击上方公众号名称关注,获得更多内容

2cf2dfc63d46d345c6483967e004590e.gif ✎ 编 者 悟 语

      想得太好可以,但不要丧失接受现实的能力,也不要因为达不到预期就不去做,做,其实只是预期达成前生活与不愿接受现实的你开得玩笑而已。

文 章 导 读

    今天给大家整理了Android与Linux的关系相关的内容,希望对学习嵌入式的小伙伴有所帮助。公众号新增了“读者讨论”功能,新公众号不能留言,大家不要浪费讨论的机会哈,aa3ccc73989b91df25ea479a0a766732.png

1Android系统与Linux系统的关系

    Android系统的总体架构。

e86dd2cc99213bc537fd6c72bfa4a6f4.png

    从上图可知Android系统结构,主要由应用层、虚拟机、Linux内核+文件系统,硬件及Android设备等几部分组成。

     Android本质上是一个Linux系统,Google对它进行了裁剪和定制,这跟我们定制Linux到自己的嵌入式设备上的做法大同小异,只不过Google做的更多罢了。2Android系统做的改进

    1)它没有本地窗口系统

  什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。

    2)它没有glibc支持

  由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。

  3)它并不包括一整套标准的Linux使用程序

  Android并没有完全照搬Liunx系统的内核,除了修正部分Liunx的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统等。

  4)Android专有的驱动程序

  除了上面这些不同点之外,Android还对Linux设备驱动进行了增强,主要如下所示。

  1)进程通信。

    Android Binder基于OpenBinder框架的一个驱动,用于提供 Android平台的进程间通信(InterProcess Communication,IPC)功能。

  2)Android电源管理(PM)。

    PM是一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。

  3)低内存管理器(Low Memory Killer)。 

    它比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。

  4)匿名共享内存(Ashmem)。 

    它为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。

  5)Android PMEM(Physical)。 

    PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。

  6)Android Logger日志设备。

    Android Logger一个轻量级的日志设备,用于抓取Android系统的各种日志。

  7)Android Alarm定时器。 

    它提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。

  8)USB Gadget驱动。 

    一个基于标准 Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。

  9)Android Ram Console调试功能。

    为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。

  10)Android timed device定时控制功能。 

    它提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。

    11)Yaffs2文件系统。

  Yaffs2文件系统 Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。

    Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。

    Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储。

3 Android系统只能用Java开发吗

    再看下Android系统的总体架构。

e86dd2cc99213bc537fd6c72bfa4a6f4.png

    ① Java虚拟机(JVM)。

    很多人说Android系统的程序只能用Java开发,这么说的说明对Android系统的架构了解的还不是很深入。

    其实从图上看到,Google自己写了一个叫Dalvik的程序运行在Linux的系统上面,这个程序就是Android的Java虚拟机(JVM)。

    ② 单纯说Android系统不能用c/c++开发是不对的。

    因效率等问题Android4.4以后Dalvik改成了Android Run Time(ART),但不管是Dalvik还是ART,都是用c/c++开发的,而用Java开发出来的APP其实是运行在Dalvik/ART上面的。

    没有Dalvik/ART,那些Java开发的APP是根本没法运行的,所以说那些说Android系统不能用c/c++开发的说法是站不住脚的。

    ③ 安卓开放源码项目就是一个实例。

    用AOSP(安卓开放源码项目)里面的交叉编译器编译出来的二进制文件在Android上面照样也是可以运行的。

    它跟Dalvik/ART属于同一层次的东西,都是init进程的子进程,一般的Android系统上init进程只有一个子进程即Dalvik/ART。

    ④ 这才是真确的说法(固定了Java虚拟机就限定了开发语言)。

    如果非要说有Dalvik/ART才算Android的话,那么Android确实不能用c/c++开发,因为Java程序编译出来的是字节码,只能在Dalvik/ART上运行。

    c/c++编译出来的是二进制机器码直接在CPU中运行,应该说c/c++开发(这里不是说的JNI方式)Android程序无法调用Android的Java类库这样才是正确的。

4 Android系统与Linux发行版的关系

    Linux发行版一般是在Linux的基础上开发了一套桌面管理系统,比如基于GTK框架的gnome,比如基于Qt框架的LXQT。

    与Windows一样,一个桌面系统+N个软件的模式,用c/c++开发出来程序编译成二进制的机器码直接运行在Linux系统上,这些软件全部都是跟Dalvik/ART一个层次的东西,而Linux发行版的程序能不能用Java开发呢?

    这个问题就跟问Windows上能不能用Java开发一样没水准。毕竟Dalvik/ART本身也是运行在Linux系统上的,你只要把Dalvik/ART移植到Linux发行版甚至Windows上,你手机里的那些APP就可以运行了,不然你以为Android模拟器是怎么弄的。

     Android系统和Linux发行版的系统根本区别是Android上面仅仅跑了一个Dalvik/ART,而Linux发行版上面跑了很多“Dalvik/ART”而已。      如果你把gnome或者LXQT部署到Android上,或者把Dalvik/ART部署到Linux发行版上的话,那么二者的区别可能并没你想象的那么大。

总结

    今天给大家从Android与Linux结构上的关系,Android系统的改进,Android系统只能用Java开发吗?,Android系统与Linux发行版的关系等几个方面说明了Android与Linux的关系,说明了希望对的小伙伴有所帮助。后面还会有相关的内容,小伙伴们敬请期待哈,5eac2cabc027b84a7deda227af7f761b.png

    有问题可以后台留言交流,公众号18年后新申请的,文章后不支持留言功能的。

免责声明:本文内容来源于网络,版权归原作者所有。如涉及侵权问题,请与我联系删除。

推荐文章:

就想看看你是个啥——鸿蒙操作系统源码初探

物联网操作系统的由来——物联网操作系统产生的三大途径

物联网芯片与普通芯片有什么差别吗

物联网所涉及的核心技术及应用

人工智能的几大核心技术

浅谈社会化编程

保存微信聊天记录的几种方法

专辑推荐:

Python技能专辑

C语言专辑

IDE调试专辑

软件推荐专辑

软实力专辑

Linux专辑

扫码关注我们

45edc2bfc3c2ed9d4503f386985e4f19.png

a347c6f9ba668502a83dddba262a9329.gif Game Over!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值