android有关内核的几个问题

来源:互联网 发布:电子书包的软件 编辑:程序博客网 时间:2024/04/30 04:27

背景:
http://ticktick.blog.51cto.com/823160/d-11

解决问题:内核是什么??   https://www.zhihu.com/question/22463820怎么烧录到设备??

一:内核开发是否需要选购开发板?

内核是操作系统最基本的部分。 它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。

android开发

应用开发 网易云音乐 高德地图
底层开发,定制设备(机顶盒,智能电视和手表)。协议(蓝牙,wifi,p2p) 底层驱动

ps:之前买过树莓派,根本没时间玩

推荐选购nexus5
优点:兼容性
缺点:接口太少(串口,有线网口,GPIO等)

二:理解repo

是python封装的脚本
mainfest仓库+mainfest清单 配置文件

三.理解源码和内核间的关系

版本与android各个分支对应的关系 见http://source.android.com/source/build-numbers.html

Android对标准的Linux内核做了哪些修改?
Android对标准的Linux内核代码做了大量的剪裁和优化,并且添加了许多特有的代码,主要包括:自定义UI系统,采用Bionic Libc库代替glibc库,添加Gold-Fish平台,编写专有的驱动程序,如Binder、Logger、PowerManager等等。
eg:
aosp+patch补丁包==360os
低版本系统+高版本内核(继承适配内核的特性)==可执行

四,编译完成后输出镜像

前提{
bootloader==bios|grub 通常用于嵌入式设备=u-boot(MLo+u-boot.img—》boot分区)+rom引导代码
作用:检测硬件+引导指定位置加载并执行操作系统内核
linux内核源码编译–镜像

编译完成后会出现三个关键的img 文件
boot.img=uIngae+ramsidk.img打包生成
–uImage
Linux内核编译成功后,会在arch/arm/boot/目录下生成zImage文件,通过mkimage命令,给zImage文件加上了64个字节的数据头得到uImage文件,这样才能被u-boot识别并正确引导。
–ramdisk.img
Android内核系统启动时会首先加载ramdisk.img作为根文件系统,然后再执行init程序,解析init.rc脚本,挂载系统其他分区、开启各个进程和服务等。
system.img
/system分区
系统核心文件区 它包含了Android系统的firmware、用户界面、一系列的预编译应用等等
userdata.img
/data分区 用户数据 回复出厂设置

and.. 用来缓存最频繁访问的数据和应用的cache.img,用来恢复系统时使用的recovery.img等

五:系统分区与镜像文件的烧写

之前刷机的时候用过fastboot 它是Android SDK中提供的一种开发工具,支持通过USB线将手头的镜像文件更新/烧录到Android设备中,常用的fastboot烧录过程如下

fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash cache cache.img
fastboot flash recovery recovery.img
fastboot reboot

fastboot协议详见https://github.com/Jhuster/AOSP/blob/master/documents/fastboot_protocol.txt
有些开发板的并不支持fastboot怎么办??
这就需要我们采用其他方式烧录,或者修改bootloader/u-boot源码,让其支持fastboot协议。
其实也就是在指定区域烧写镜像的过程如果系统是从外接的SDCard启动就更简单了,只需要把SDCard连接到电脑上,覆盖对应分区里面的镜像文件就可以了。

0 0