Android 内核移植

Android 内核移植
Android 内核移植

Ubuntu 8.04.2环境S3C6410 移植Android 内核主要过程:

. 安装Linux 环境

. 安装编译工具

. 下载Linux kernel

. 安装Android SDK

. 获得root file system

. 修改Linux kernel 源码

. 配置Linux kernel

. 修改root file system

. 编译Linux kernel

. 下载kernel Image

1.安装linux 环境

安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,点击这里进入官方下载地址。下载ubuntu-8.04.2-desktop-i386.iso,(编者LinuxIDC注:现在已经是ubuntu-8.04.3版本了)刻录成光盘安装,安装可以在windows 系统下进行,选取有15G 空间的硬盘安装,输入用户密码开始安装

这一步结束退出光盘重启进入Ubuntu系统,完成余下系统安装。

Linux 安装完成,进入Ubuntu 系统,确保电脑连接Internet,安装一些必要软件。

打开终端输入命令框,进行下面的操作:

$ sudo apt-get install ssh

$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl

$ sudo apt-get install valgrind

$ sudo apt-get install sun-java6-jdk

$ sudo apt-get install libncurses5-dev

所有软件系统会自动从网络下载安装,完成后可以开始Android 的移植。

2.安装编译工具

下载:

$ wget

https://www.360docs.net/doc/5812265826.html,/public/gnu_toolchain/arm-none-linux-gnuea

bi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

安装:

$ tar -xjvf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

3.下载Linux kernel

从下面地址获得:

https://www.360docs.net/doc/5812265826.html,/p/Android/downloads/list?can=1&q=&colspec=File name+Summary+Uploaded+Size+DownloadCount

Kernel : linux-2.6.23-Android-m5-rc14.tar.gz

解压文件

$ tar -xf linux-2.6.23-Android-m5-rc14.tar.gz

4.安装Android SDK

从网上下载linux 版本的Android SDK,如下

https://www.360docs.net/doc/5812265826.html,/Android/android-sdk_m5-rc15_linux-x86.zip

下载后解压,获得Android-sdk_m5-rc15_linux-x86 文件

5.获得root file system

⑴下载busybox 工具从下面地址

http://benno.id.au/blog/2007/11/14/Android-busybox(linux 环境中下载)⑵运行emulator 获取root file system

$ cd <目录>/ Android-sdk_m5-rc15_linux-x86/tools

$ ./emulator&

等待emulator 启动,看到出现Android 系统画面,进入菜单ALL/Dev Tools/Development Settings 下,将Wait for debugger,Show running processes,Show screen updates 这三项打勾,回到命令输入终端。

$ ./adb push /busybox /data

$ ./adb shell

# /data/busybox tar -czf system.tar.gz /system

# /data/busybox tar -czf data.tar.gz /data

# /data/busybox tar -czf etc.tar.gz /etc

# /data/busybox tar -czf sbin.tar.gz /sbin

# exit

$ ./adb pull /system.tar.gz ./

$ ./adb pull /data.tar.gz ./

$ ./adb pull /etc.tar.gz ./

$ ./adb pull /sbin.tar.gz ./

$ ./adb pull /init ./

通过busybox 工具获得了emulator 的文件并打包,下面建立root 文件目录$ mkdir initial_ram_disk

$ cd initial_ram_disk

$ mkdir cache

$ mkdir d

$ mkdir dev

$ mkdir proc

$ mkdir root

$ mkdir sdcard

$ mkdir sys

$ mkdir tmp

$ mkdir var

$ tar -xf /system.tar.gz ./

$ tar -xf /data.tar.gz ./

$ tar -xf /etc.tar.gz ./

$ tar -xf /sbin.tar.gz ./

$ cp /init ./

包含Android root 文件系统的initial_ram_disk 做好。

6.修改Linux kernel 源码

下载的kernel 文件是不支持smdk6400 开发板的,必须加入smdk6400 的配置文件到kernel 中,同时修改Kconfig 和Makefile 文件。

修改如下:

1> 选择 /arch/arm/mach-s3c2410/Makefile.boot 改为下面内容,

zreladdr-$(CONFIG_PLAT_S3C24XX) := 0x30008000

params_phys-$(CONFIG_PLAT_S3C24XX) := 0x30000100

zreladdr-$(CONFIG_PLAT_S3C64XX) := 0x50008000

params_phys-$(CONFIG_PLAT_S3C64XX) := 0x50000100

2> 从成熟的smdk6400 平台文件中拷贝下面文件到kernel 目录

/arch/arm/mach-s3c6400

/drivers/serial/s3c6400.c

/drivers/input/touchscreen/s3c-ts.c

/drivers/usb/gadget

3> 拷贝/drivers/Android/ashmem.c 文件到相应目录下从另外的android kernel (The Android source code for 2.6.23 不包含此文件)

4> 修改相应的Kconfig 和Makefile 文件,使最终能编译到加载的smdk6400 文件。

7.配置Linux kernel

修改kernel 后进行配置,用到第2 步的编译工具

$ cd

$ make CROSS_COMPILE=/bin/arm-none-linux-gnueabi- ARCH=arm

menuconfig

这时进入kernel 配置画面,注意配置Initramfs source file 选项指定到

initial_ram_disk 文件。

8.修改root file system

配置Touchscreen 使之能正常工作,initial_ram_disk 文件下修改/etc/init.rc,加入下面内容

TSLIB_CONSOLEDEVICE none

TSLIB_FBDEVICE /dev/graphics/fb0

TSLIB_TSDEVICE /dev/input/ts0

TSLIB_CALIBFILE /etc/pointercal

TSLIB_CONFFILE /etc/ts.conf

TSLIB_PLUGINDIR /lib/ts

9. 编译Linux kernel

$ make CROSS_COMPILE=/bin/arm-none-linux-gnueabi- ARCH=arm

zImage

编译成功,在arch/arm/boot 下面是生成的zImage 文件。

10.下载kernel image

进入Windows 系统,下载过程在Windows 系统中完成。

①打开:程序附件通讯超级终端,配置COM 口,115200,8N1

②连接smdk6400 开发板和电脑通过串口线,打开开发板电源,可以在超级终端中看到输出信息,bootloader 启动,按空格键进入命令输入状态

③板子上连接USB 线到电脑,安装USB 驱动程序

④运行dnw.exe 程序,配置Configuration/Options,地址0x57e00000,确定

⑤在超级终端中输入相应命令,开始下载

$ run bootup (下载bootloader)

$ run kernelup (下载kernel Image)

$ run rootup (下载root file system)

⑥这里我们输入

$ run kernelup

等待dnw 发送文件,dnw 显示[COM1,115200bps][USB:OK][ADDR:0x57e00000]说明连接成功,选择USB Port->Transmit,选取编译成功的zImage 文件,开始下载。

下载完成,重启开发板,等待,LCD 上出现一些Android 字符,一段时间白屏,出现一个左右滚动的红色滚动条,进入主界面,Android 移植成功。

android系统开发工作介绍

android系统开发工作介绍 一、android的开发工作 Android的开发分为三个类型:移植开发移动设备系统;android系统级开发和应用程序开发。 1、移植开发移动设备系统 2、Android系统级开发,指的是扩展android的框架或者是修改bug,这方面比较少,除非有些开发移动设备的厂商,比如做gps,可以往里面加入一些自己的特定系统东西,这可能导致一些不兼容。当然也可能是简单的修复bug,详细的内容后面还有说。 3、开发应用程序,这应该是比较主流的开发,也就是给android系统写应用程序。当然我们这里主要是研究android的framework如何给这些应用程序提供服务的。 总结一下,我们可以把android分为四个层次,从底层往上依次为:linux内核、C/C++库、java 框架和java应用程序。移植开发移动设备涉及到linux内核(包括其驱动);android系统级开发涉及到C/C++库的开发及给上层java框架;android应用程序开发就是调用java的框架写应用程序。 简单的从上到下,android应用程序需要有java框架支持,比如它要发送短信,就需要java 框架,java框架其实就是将C/C++库包装成为了一个JNI,而实现具体的功能是C/C++库,最后驱动硬件完成功能,这也就是linux内核部分。 所谓framework,也就是系统级开发,这将是本文的重点,虽然android的framework 开发比较少,但是对其了解后更有利于整体开发的进行,当然很多设备厂商还是非常需这要些的。 二、android系统架构

Linux内核及驱动、C/C++框架、java框架、java应用程序。 1)、Linux内核及驱动 其中linux内核及驱动是内核层的(本人对linux内核也有过痴迷的时候,就像现在android 痴迷一样),系统总是需要操作系统的支持的,比如内存管理、进程管网理、络协议栈等。 2)、android的C/C++框架 系统C库:用的是libc,没什么好说的,C程序员都知道。多媒体库SurFace Manager:显示子系统的管理器LibWebCore:web浏览器引擎,支持android浏览器SGL:skia图形库,底层的2D图形引擎 3D库:OpenGL FreeType:字体显示Android的运行环境,这个也应该属于这个框架里面的,android的虚拟机叫做Dalvik,运行环境就是由这个虚拟机和基础的java类库组成。 3)、android应用框架 提供一系列的服务和系统,包括视图、内容提供器、资源管理器、通知管理器活、动管理器。 视图非常丰富:list、grid、text box、button等。内容提供器是使得应用程序可以访问另一个程序的数据。资源管理器是提供访问非代码的资源访问,如布局文件。通知管理器,使得程序可以在状态栏中显示自定义的提示信息。活动管理器,用来管理程序生命周期。 4)、android应用程序Android所有的应用程序都是用java写的,当然现在好像也支持一些脚本语言,如 ruby,但是不支持C开发,所谓支持C开发是指jni的形式。 。。。。。。。。。

安卓Android ROM定制、移植:第六篇:boot.img、recovery解包和打包

太抱歉了,因为教程实在是有点粗浅了,其实很多东西都不知道怎么去写,这不是复制粘贴,当然很多只是一步步的走的,不过也许我自己觉得已经阐述的很清楚了,可是一旦别人看起来,还是感觉很深奥,没办法,本人就这点能力了,呵呵! 大家都知道安卓的核心更换呢,那是在boot.img里面,那么如何在WINDOWS下去解开它呢,LINUX的自己略过。。。。 首先百度BOOTIMG.EXE,然后你懂的,会出来一大堆,这得感谢制作bootimg.exe的作者,本来是为华为的机器做的分解工具,不过我们也可以拿来分解boot.img、recovery.img等,OK!先来谈谈这两个文件的基础,部分来自网络。 boot和recovery映像的文件结构 boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk 内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。此类文件的定义可以从源代码android-src/system/core/mkbootimg找到一个叫做bootimg.h的文件。 (译者的话,原文是一个叫做mkbootimg.h的文件,但从Android 2.1的代码来看,该文件名应该是改为bootimg.h了)。 /* ** +-----------------+ ** | boot header | 1 page ** +-----------------+ ** | kernel | n pages ** +-----------------+ ** | ramdisk | m pages ** +-----------------+ ** | second stage | o pages ** +-----------------+

S3C6410 移植Android 内核移植经验

主要过程: . 安装lunux 环境 . 安装编译工具 . 下载Linux kernel . 安装Android SDK . 获得root file system . 修改Linux kernel 源码 . 配置Linux kernel . 修改root file system . 编译Linux kernel . 下载kernel Image 1.安装linux 环境 安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,地址: https://www.360docs.net/doc/5812265826.html,/ubuntu/releases/8.04/ 下载ubuntu-8.04.2-desktop-i386.iso,刻录成光盘安装,安装可以在windows 系统下进行, 选取有15G 空间的硬盘安装,输入用户密码开始安装 这一步结束退出光盘重启进入Ubuntu 系统,完成余下系统安装。 Linux 安装完成,进入Ubuntu 系统,确保电脑连接Internet,安装一些必要软件。 打开终端输入命令框,进行下面的操作: $ sudo apt-get install ssh $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl

$ sudo apt-get install valgrind $ sudo apt-get install sun-java6-jdk $ sudo apt-get install libncurses5-dev 所有软件系统会自动从网络下载安装,完成后可以开始Android 的移植。 2.安装编译工具 下载: $ wget https://www.360docs.net/doc/5812265826.html,/public/gnu_toolchain/arm-none-linux-gnuea bi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 安装: $ tar -xjvf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 3.下载Linux kernel 从下面地址获得: https://www.360docs.net/doc/5812265826.html,/p/android/downloads/list?can=1&q=&colspec=File name Summary Uploaded Size DownloadCount Kernel : linux-2.6.23-android-m5-rc14.tar.gz 解压文件 $ tar -xf linux-2.6.23-android-m5-rc14.tar.gz 4.安装Android SDK 从网上下载linux 版本的Android SDK,如下 https://www.360docs.net/doc/5812265826.html,/android/android-sdk_m5-rc15_linux-x86.zip 下载后解压,获得android-sdk_m5-rc15_linux-x86 文件 5.获得root file system ⑴下载busybox 工具从下面地址 http://benno.id.au/blog/2007/11/14/android-busybox(linux 环境中下载)⑵运行emulator 获取root file system $ cd <目录>/ android-sdk_m5-rc15_linux-x86/tools $ ./emulator& 等待emulator 启动,看到出现Android 系统画面,进入菜单ALL/Dev Tools/Development Settings 下,将Wait for debugger,Show running processes,Show screen updates 这三项打勾,回到命令输入终端。 $ ./adb push /busybox /data $ ./adb shell # /data/busybox tar -czf system.tar.gz /system # /data/busybox tar -czf data.tar.gz /data # /data/busybox tar -czf etc.tar.gz /etc # /data/busybox tar -czf sbin.tar.gz /sbin # exit $ ./adb pull /system.tar.gz ./ $ ./adb pull /data.tar.gz ./

【IT专家】yolo模型移植到android手机端

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 yolo模型移植到android手机端 2017/08/18 665 之前写了android demo在手机上的运用,但是模型都是官方给的,想要替换成自己的模型,因此尝试了下将自己训练的yolo模型来替换demo给的模型。首先,darknet的训练和.weight文件到.pb文件的转化,以及android demo 的实现见之前的博客。在此不再叙述sdk,nkd等配置问题,且直接使用.pb文件。其次,默认已安装android studio。 (1)终端进入(android安装目录)/bin,输入./stuodio.sh开启android studio ?(2)点击new,import project导入(tensorflow所在路径)/tensorflow/examples/android文件夹(可连接手机先run,保证demo能够正常运行后再行修改) ?(3)将build.gradle中68行的bazelLocation改为自己bazel的路径:def bazelLocation = ‘/home/seven/bin/bazel’185行apply from: “download-models.gradle”注释掉,并在第112行,增加//*/(不然后面的内容都被当做注释了): ?if (nativeBuildSystem == ‘bazel’ || nativeBuildSystem == ‘makefile’) { // TensorFlow Java API sources. java { srcDir ‘../../java/src/main/java’ exclude ‘**/examples/**’//*/ } // Android TensorFlow wrappers, etc. java { 最后,将第76行开始的内容改为自己需要的版本号: android { compileSdkVersion 25 buildToolsVersion “26.0.1” if (nativeBuildSystem == ‘cmake’) { defaultConfig { applicationId = ‘org.tensorflow.demo’ minSdkVersion 21 targetSdkVersion 25 ndk { abiFilters “${cpuType}” } (4)将转化得到的.pb文件放在(tensorflow所在路径)/tensorflow/examples/android/assets文件夹内,为方便起见,可将此.pb重命名为graph-tiny-yolo-voc.pb。若文件夹中已存在此文件名的文件,删除之。 ?(5)该项目将一次性生成三个app,因为我只需要detect一个,在AndroidManifest.xml中删除关于另外的两个activity,修改后的文件如图 ?

Android_ROM制作移植及精简教程

Android_ROM制作,精简及移植教程 本教程主要内容有:Android系统文件夹结构解析、应用软件说明、定制精简、ROM签名把包等内容。刷机有风险,出问题自负。其实这个教程一早就想写的,但由于时间及本人的懒惰,一直拖着。今晚终于静下心来写好本文,本文有部份内容来自于网络。 速度与华丽,你喜欢那个。是不是想要一个又够速度又华丽的ROM呢?我是一个追求新鲜的人,对于手机的ROM,我又追求稳定、精简、美观、省电。现在Hero ROM有很多,最新的有第三方Android 2.1版本,但这些ROM的制作者都会跟据自已的个人喜欢会增加和增少相应的功能或是界面,但我们往往不喜欢这些ROM的某些小方面,所以随着而来面对的问题就是怎样把这个ROM修改成为一个自已真正需要的ROM呢?以往一直是依靠“大杀器”来解决,但觉得还是过于麻烦,所以寻求办法自己动手修改ROM。于是有了本文。废话少说,进入题。 一、Android系统文件夹结构 一个完整的ROM根目录会有以下几个文件夹及文件: data META-IN system boot.img 系统目录说明 1. 应用程序安装目录 1) 系统应用程序所在目录 /system/app/*.apk 2)用户安装应用程序所在目录 /data/app/*.apk 3) 注意: a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除 b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动 2.用户数据所在目录 /data/data/应用包名/shared_prefs 配置文件 /data/data/应用包名/databases/* 库文件所在目录 3. SD卡对应目录 /sdcard/

安卓系统移植经验之谈,教你三分钟移植

每当我闲下来时不发Rom时,就会整理一下思路,发发教程啥的,我觉得能带动机油们自己打造、改造Rom,共同提升,才是Romer的追求。 发Rom也好,教程也好,我的宗旨是不设回复可见,如果你觉得好,回复或者评分鼓励一下,我就很开心了。 不过这样做的一个遗憾就是,我的帖子通常回复率不够高,沉得快。 好了,闲话少说,上教程。 注:可能你会觉得文字教程比较干枯,不够形象生动,但是请精心看,我会尽量讲得具体、清晰。 首先,我并不算是移植高手,这个教程只是我在自己移植过程中的的一些收获体会,一些经验之谈。 如果你觉得有什么不对或值得改进的地方,欢迎和我交流,我们一起来完善这个教程。 因为移植所涉及的机型、配置相当多变和复杂,所以我无法讲具体细节,只能讲大致的原则。 可以结合我移植U8800+的JoyOS到U8860的例子作为参考进行理解。 我把这些原则抽象出来,命名为Rom移植5步法,具有一定的通用性。 Rom移植的方向有正向和逆向之分: 正向的做法通常就是,找个目标机型的底包,然后把要移植的包的app和framework提取出来替换进去。 这样的优点是改动无需太大,非常快捷;缺点是经常因为一些bin下的程序或者

库文件的差异而导致成功率不够高。 逆向的做法是,拿要移植的包作为底包,把目标机型的内核、wifi驱动、传感器库文件、配置文件等替换进去。 这样做要复杂一些,需要准确两个包的差异,知道应该改哪里; 优点自然是不成则已,一旦移植成功能最大限度地发挥Rom性能,因为框架、程序与底层的契合度要比正向法好。 我这个教程以逆向法为例。 另外,Rom移植有风险,刷机测试需谨慎,如有本人操作不当导致出现任何问题,本人概不负责。 Rom移植5步法: 1.Rom移植涉及的东西比较偏底层,所以在移植之前必须清楚目标机型的硬件配置,分区结构。 这里的配置不是说主频多少、内存多少,这两个参数基本上不会影响移植的进行。对于移植,最关键的因素是主板平台,通常采用同一系列的cpu的不同机型的Rom移植的成功率要高很多。 比如,U8800+和U8860均是高通8255处理器,虽然主频不一样,但它们却同属于同样的MSM7x30平台。 他们之间的互相移植,绝对要比与MSM7K平台的中兴V880互相移植来的容易得多。 至于为什么要弄清分区结构,会在下面讲到。

ANDROID Platform GT818 驱动移植说明书

Android平台GT818驱动移植说明书 【程序总揽】 本程序针对Android2.1系统,移植的硬件平台为华天正科技开发的Real6410(基于S3C6410)。本驱动支持多指,能够在系统支持的情况下在主控进入关屏状态时自动调整GT818工作状态,达到省电的目的。 1.1系统资源使用 1.2系统运行流程 为了便于移植,程序中采用了中断和定时查询两种方式,并建议使用中断方式。以中断方式为例,系统的主运行流程如下所示: 1.创建Guitar对应的i2c_client对象,其中完成了该适配器的相关信息设置; 2.加载触摸屏驱动,注意该驱动必须在I2C总线驱动已经加载的情况下才能进行,否则I2C通信将 出错。程序中将其加载优先级设为最低; 3.创建驱动结构体,探测Guitar设备,并将其挂载到I2C总线驱动上;测试I2C通信,注册input 设备,申请IO口和中断资源,完成Guitar初始化工作(如有需要,烧录升级在此进行); 4.开启触摸屏中断,等待数据接收; 5.收到触摸屏数据中断,关中断; 6.通过I2C传输数据,分析手指信息,; 7.更新按键信息,上报手指坐标、按键等信息,开中断; 8.重复4-7之间的循环。

【移植指南】 4.准备工作 本驱动采用GPL许可证,代码没有采用模块方式,所以使用本驱动前需要重新编译内核。在编译内核前,

我们需要做好以下准备工作: 1、在硬盘上或使用虚拟机(如VmWare)安装Linux系统,推荐使用Ubuntu9.10; 2、安装gcc及arm-linux-gcc和其他编译工具,将CC和LD指定为arm-linux-gcc; 3、获取平台对应的Android源码,解压到自己的工作目录。 4、了解移植平台的IO口、中断、I2C总线的使用方式。 5.内核编译配置 在编译代码前我们需要进行内核编译配置,可以使用下面命令中的一个: #make xconfig (基于QT的图形配置界面,非常直观,推荐使用) #make menuconfig (基于文本菜单的配置界面) 下面我们以make xconfig为例,将我们的驱动增加到内核中去。假定我们源代码目录为: ~/android/kernel/ 将编写的源代码复制到Linux内核源代码的相应目录: ~/android/kernel/driver/input/touchscreen/goodix_touch.c ~/android/kernel/include/linux/goodix_touch.h ~/android/kernel/include/linux/goodix_update.h //如果不做烧录则可以不加 1.在目录touchscreen的Kconfig文件中增加新源代码对应项目的编译配置选项: #----------------------------------------------------------------- config TOUCHSCREEN_GOODIX_GT818 # 配置项名称 tristate "S3C6410 TouchScreen Driver" #选择项,选择Y标识要将其编译进内核 default y #默认编译选项 depends on I2C #依赖项,本驱动必须工作在I2C总线驱动的基础上 help #帮助信息 It is a android driver to support Gooidx's touchscreen whose name is guitar on s3c6410 platform. The touchscreen can support multi-touch not more than two fingers. Say Y here to enable the driver for the touchscreen on the S3C SMDK board. If unsure, say N.To compile this driver as a module, choose M here: the module will be called goodix_touch.ko. #----------------------------------------------------------------- 注意: 当将编译选项设置为M时,编译生成的驱动需要我们手动挂载。如需要系统启动时自动挂载,需要将模块goodix_touch.ko拷贝到系统模块加载目录,并修改对应的启动过程的rc脚本。 2.在目录touchscreen的makefile文件中增加对新源代码的编译条目; #这里的二进制文件名必须与源文件名移植,如goodix_touch

任意安卓移植ROM教程,超详细ROM技术学习

任意安卓移植ROM教程,超详细ROM技术学习 相信有过刷机经历的都知道安卓系统的构造,我们讲述一下安卓的几大组成:从内核基于linux开始,整个系统就运行在一个虚拟机上,这是安卓的一大特征!! 那么我们移植的时候要修改哪一部分?这就是我们这个帖子的重点了。在刷机时,我们大多使用zip格式的升级包进行刷机,那zip格式的升级包是怎么样的一个组成呢?一个zip升级包的完整构造,其中我们要移植所需要修改的就是META-INF里的刷机脚本。 对于这个构造,有必要完整的解释一次。 META-INF 这里面主要是签名文名和刷机时执行的脚本(updater-script),移植时,我们主要要更改的就是刷机的脚本。system 这里面就是android的系统部分app 这里存放的是系统的app,每个app都有两个文件,一个*.apk,一个*.odex,我们在移植时,要将这个文件合并到对应的*.apk里面去,apk文件其实就是一个zip文件,可以用WinRAR或7zip打开的,当然,合并odex文件不是把它改名直接放到apk里去这么简单的,后面具体介绍一下。还有,这个文件夹里面的程序,刷完以后是不能通过程序管理来卸载的。bin 这里面存放的是native程序,不好意思,一下子忘掉中文怎么说了。简单来说,apk是JAVA 程序,而这个是C/C++的程序。etc 这里面存放的是系统默认的配置文件,GPS的配置也在这里J。fonts 这个是字体文件夹,一般很少改动,除非要做美化framework 这里存放的是android框架,移植MIUI,很多改动在这个文件夹里,美化ROM的话,主要改framework-res.apk就可以了。当然,MIUI本身就有主题机制了,不用这么麻烦去改。这个文件夹里也会有对应的odex文件。lib 一些通过的类库,一般是由app/bin里面的程序调用的。media 媒体文件,要添加系统默认的铃声就在这里了。如果是别的ROM的话,壁纸也会放在这里面。

android系统移植emmc记录(2)--u-boot烧写emmc方式

android系统移植emmc记录(2)--u-boot烧写emmc方式 U-boot 支持2种方式烧写 emmc设备: Fastboot命令:通过usb接口烧写。 步骤: 1.编写u-boot支持从sd卡启动,里面涉及到文件的修改,下面讲解。 2.按照上述方法,把u-boot烧录到sd上,使开发板从sd卡启动。 3.进入开发板命令终端 # : 4.首先格式emmc,目的是分配4个分区。分别为vfat分区, system 分区, userdata分区, Cache分区. # : fdisk -c 0 -c :表示格式当前设备 0:表示初始化的emmc设备节点,mmc/sd设备加载顺序,分配的节点从0开始到3结束。不管你从哪个通道指定起始设备,多从0开始分配。如:emmc占用通道0口, 分配的节点是 0,sd卡占用通道2口,分配的节点是 1. 如果不初始化emmc,只使用sd卡模式,在sd卡占用通道2口时,分配的节点是 0.这点请了解源代码,后续会修改。 所以,如果想给板子上SD分区的话,使用如下命令(在emmc也初始化成功的情况下) #: fdisk -c 1 查看设备分区情况: #:fdisk -p 0 5.格式化分区,vfat分区为fat32格式。其它都为 ext3文件系统格式. 格式vfat分区: #:fatformat mmc 0:1 0:同上意思,表示的已经加载的emmc设备节点。 1:表示第1个分区,注意。程序默认第一个分区必须为fat分区, 只能指定为 1,程序会比较是否为分区1,不是就不会格式化。 格式ext3分区: #:ext3format mmc 0:2 //system #:ext3format mmc 0:3 //userdata #:ext3format mmc 0:4 //cache 6:烧写文件: #:fastboot 给开发板通过usb线跟pc连接。 下载工具:fastboot到windows下,把要烧录的文件 zImage system userdata放到fastboot 文件里面。 点windows下开始 ---->运行 :输入:cmd 在控制行下进入fastboot所在的路径如: 输入命令: fastboot flash bootloader u-boot.bin fastboot flash kernel zImage fastboot flash ramdisk ramdisk-uboot.img

安卓Android ROM定制、移植教程。

CyanogenMOD移植教程 转自秋叶随风Ivan;乐蛙论坛等。 第一章:环境的搭建 一.系统选择和安装 建议使用ubuntu LTS 10.04 X64 新手朋友推荐Deepin Linux 基于ubuntu定制的,适合新手使用https://www.360docs.net/doc/5812265826.html,/download 系统安装教程,以下方法通用于UBUNTU官方版本 U盘安装:https://www.360docs.net/doc/5812265826.html,/index.php/Unetbootin 光盘安装:https://www.360docs.net/doc/5812265826.html,/index.php/光盘安装 搭建android编译环境: 英文好的请猛击这里:WIKI: https://www.360docs.net/doc/5812265826.html,/index.php?title=Building_from

_source 1.安装JDK 因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK 打开终端按照如下命令输入或者直接复制粘贴: 编译android 2.3 或者更新的版本请使用jdk 6 $ sudo add-apt-repository "deb https://www.360docs.net/doc/5812265826.html,/ lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk如果你需要编译的是2.2以下的版本请使用JDK 5,因为现在大家都是使用Gingerbread 以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google 2.安装各种依赖包 64位环境:依然是终端中输入 $ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \

Android系统分析

Android操作系统分析 穆英华 基于Linux内核的Android操作系统尽管非常年轻,却已经占领了智能手机9%的市场,而且还在向其它移动平台及嵌入式领域迅速扩张着。下图为2010年一季度的智能手机操作系统占有率统计。在国内外制造商纷纷推出基于Android的产品、Android Market中的应用程序飞速增长的背景下,有必要对Android操作系统的情况进行调研,对比其与Midinux的优劣势、估计其机遇或威胁。本文将从以下几个方面分析Android:目标用户群、支持硬件架构、平台技术架构、应用程序数量、未来发展方向。 一.目标用户群 覆盖高、中、低端智能手机用户是Android的主要目标,尤其是市场上基于ARM11处理器的智能手机已经降到1000元人民币的价格,让低成本的硬件配置也可以运行Android系统,更使得Android从中高端扩展到低端成为可能。除智能手机外,Android已经渗透到了平板电脑、上网本,乃至汽车电子、机顶盒、电子相册、无绳电话等各移动平台和嵌入式产品领域。 对于Android的智能手机和平板电脑用户,Android Market中种类丰富和数量众多的应用程序是其选择Android的重要原因,没有众多可选择的第三方应用程序,操作系统就是再性能优异,也不会对用户有任何杀伤力。这一点类似于苹果的iOS,但总体来说,Android 的用户不会像苹果用户那样忠诚、他们中的很大一部分也不会像苹果用户那样为数码产品花费那么多金钱,可以说Android更大众一些。 二. 支持硬件架构 1.支持的硬件架构 目前Android已经移植到了ARM、X86、M IP S各体系架构中的很多处理器核、处理器芯片、以及更多的板级结构上,对PPC等体系架构的移植也早已开始。如高通、三星等芯片制造商推出的基于ARM C ortex-A8处理器核及P o w er V R显示核心的处理器芯片早已移植Android成功,并被联想的Le Ph one、魅族的M9等许多手机采用,多核的C ortex-A9也蓄势待发。随着

基于android平台的移动查询系统设计与实现

xx大学 毕业设计(论文)开题报告 题目:基于android平台的移动查询系统设计与实现学院:软件学院 专业:软件工程 班级: 学号: 姓名: 指导教师: 填表日期:2012 年3月5日

一、选题的依据及意义: 2012年是移动互联网高速发展的一年。市场分析机构Informa数据显示,2012年全球销售的Android智能手机约达4.61亿台,其中三分之一的Android智能手机在中国销售,Android智能机的普及大大推动了Android市场的发展。而移动查询系统是一款非常实用的APP,该应用程序拥有手机号码归属地查询、城市天气查询、IP地址信息查询等模块。 智能手机的移动查询系统,越来越多的融入到人们的生活当中,现代的人们的生活越来越的信息化和规范化。人们对于自己的行为都开始有比较规范的计划。出门查看天气,旅游查看火车路线、时间信息,休闲时查看陌生手机号码归属地、上网IP地址信息等。所有的方便都无时无刻的存在大家身边。所以现代的人们都会青睐这些方便小软件的存在。这些小软件存在我们大家的手机中,首先它可以随时随地的查询,而且非常的方便携带,对于大家在应急方面有着不可替代的作用。 一款专业的移动查询软件是手机中必不可少的要素,几乎市场上所有的手机用户都会下载一个移动查询软件,通过软件可以对页面中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机移动查询软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的移动查询软件也是各不相同,而现在最流行的手机平台就是google的android手机平台,所以本课题就致力于开发出一款基于android手机平台的移动查询系统,来满足用户的使用需求。 二、国内外研究现状及发展趋势(含文献综述): 2012年第三季度,Google 的Android 系统拿下全球75% 的市场份额,而2009年同期Android市场份额只有3.5%。移动互联网的蓬勃发展促使手机终端产业链变化,应用和服务逐渐成为竞争的焦点。无论是电信运营商,终端厂商还是应用开发商,目前都在向操作系统领域进军,试图对内容的聚拢和对应用体系的把控,稳固或加强自己在产业链中的影响力。在这一过程中Android系统因多方面因素逐渐受到各方的青睐。,Android手机在中国市场的销量在未来还将有较大发展空间。 随着智能手机的快速普及,智能手机操作系统市场风生水起。为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。不论身在何地,查询当时当地的天气,出差旅行查询火车车次信息等都是比不可少的工具。随着社会的发展,人们更不肯离开便捷的查询工具,甚至会对其产生依赖。 三、本课题研究内容 主要内容 根据需求分析与系统功能设计目标,结合实际情况本系统功能模块设计分为如 下几个模块: 1.应用主页:在这里我们可以选择要进行的信息查询。 2.手机号码归属地查询:在手机号码归属地查询窗口,输入待查询手机号,系统弹出提示框显示手机号码归属地、手机卡类型。

MIUI移植基本教程

首先介绍制作rom的环境使用的工具: 1.制作环境 必须要有一个Linux操作系统,我用的是ubuntu 10.4,JDK6,当然如果你能建立一个完整的编译Android系统的环境更好,如何建立这样的系统,网上有很多文章,这里就不多讲了。可以在物理硬盘分区上安装Linux,也可以向我一样在VirualBox虚拟机上安装。 2.厨房 虽然它只是个在终端下由脚本驱动的程序集,但对我们提高制作rom的效率作用是巨大的完全掌握这个厨房的使用方法,需要写一篇单独的教程,本贴只针对移植所需的相关方法作出说明。 1)解包和打包 解包:把要打磨的rom包放到original_update目录中,rom包的类型一般是zip压缩包,也可以是img镜像文件;运行厨房(menu脚本),输入1(Set up working folder from ROM),根据提示选择你要解包的那个文件号,厨房解包并创建工作目录(WORKING_xxx),如果已存在一个WORKING_xxx的工作目录,厨房会自动把它移到到OLD_WORKING目录中。打包:输入99(Build ROM from working folder),厨房自动打包工作目录然后签名并把rom 文件放到OUTPUT_ZIP目录中。 2)deodex 官方发布的rom一般都会把apk中的dex文件抽出并优化修改为同名的odex文件,为了修改它们,需要将这些odex文件打回到各自的apk文件中,在厨房中输入0(ADV ANCED OPTIONS)->11(Deodex files in your ROM),厨房自动搜索工作目录下所有odex文件,根据提示输入即可。 3)文件签名 在(ADV ANCED OPTIONS)屏输入21(Sign APK file(s)),厨房搜索工作目录下所有apk 文件,根据提示输入,这里要注意,无论你选择哪一项,厨房都不会自动签名framework目录下的apk文件,需要你输入s(自定义签名文件)。 4)处理boot.img 此厨房一个非常强大的功能,你可以更换核心,修改init进程配置文件。 在(ADV ANCED OPTIONS)屏输入20(Unpack or re-pack a boot.img)->输入w(Extract kernel and ramdisk from boot.img in working folder)厨房将boot.img解包到目录BOOT-EXTRACTED,其中文件boot.img-kernel为android的Linux核心,你可以用其他的核心文件替换它,可以编辑这些文件,但不能改名。完成后输入b(Build boot.img from BOOT-EXTRACTED folder (for working folder)),重新打包创建新的boot.img文件并自动替换掉工作目录下的旧文件。 提示:如果更换了核心,还需要更换system/lib/modules/*为相应的文件! 3.编译和反编译classes.dex 要用到两个工具,smali和baksmali,来自开源项目访客无法浏览链接,请先注册或者登陆。,创建者是Jesus Freke(勘误),这两个工具可以在厨房/tools/deodex_files目录下找到。

将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现

-9- 新桌面映像、管理用户数据,并监控其创建的虚拟桌面。客户端使用VMware View Client程序,通过PCoIP显示协议回传运行结果。该协议是一种高性能自适应显示协议,可应用在3D 图形设计、Flash领域,即使在低带宽下,也能保持稳定的显示。由于它的优异性能,被许多远程显示方案所采用,包括其他桌面虚拟化产品供应商。 我公司可以先采取试点方式应用桌面虚拟化技术,可以选择教育培训中心试点,学校的应用场景非常适合这一技术。根据试点效果,再逐步推广。 目前,桌面虚拟化技术大规模应用是所谓的“桌面云”,在华为上海研究所有1万名员工在使用华为自身研制的这种运用云计算平台的虚拟桌面。上海联通和浙江移动也在批量使用这种桌面云。 当前虚拟化应用中的另一个热点,是数据中心虚拟化,这是全新的数据中心部署和管理方式,有以下优势。 1.能够实现一定程度的自动化运行,降低人工干预频率,同时提供简单强大的管理界面,使管理员摆脱繁重的与物理服务器、操作系统、中间件等的配置和管理工作,专注于应 用管理。 2.实现动态调度资源。对于管理员而言,虚拟化的数据中心不再是一台台隔离的服务器,而是一个统一的资源池,而且具备伸缩性。管理程序能够根据应用的负载情况自动调整分配资源,提升资源利用率。 3.加速应用的部署,提高业务响应速度。 4.通过虚拟化整合,可以将应用集中,提高服务器的利用率,减少服务器,从而降低制冷、通风等耗电量,达到绿色减排目的。 这些优势非常有现实意义。2009年中化集团升级ERP系统,当时他们的ERP系统是SAP R/3 4.7版,计划升级到6.0版。由于中化的业务中,当时已有93%通过ERP来执行。如何不中断业务,实现平稳升级成为中化集团面对的难题。经过研究,他们最终采用IBM的私有云方案。他们对3个数据中心实施虚拟化改造,将所有资源池化,由IBM的数据中心管理软件统一管理,将动态的、分散的资源集中调度和灵活分配,跨越2个数据中心的云环境得以实现。私有云使得中化集团在ERP系统不停机,没有增加新服务器的限制下,实现平稳升级。中化实现私有云,还能实现未来包括ERP在内的各种IT应用的灵活运行。中化私有云对我们 公司的IT运维有很好的示范作用。 应用虚拟化技术,实现PC桌面、交换、数据中心的虚拟化乃至建设私有云能够让企业拥有统一的、可管理的、具备弹性伸缩的IT基础架构。这对企业IT应用有重要意义,这能大幅提升运维效率,提高资源利用率,降低系统运营成本,还能灵活应对新业务需求。在必要的时候可以对接公有云,直接租用公有云计算供应商的资源,弥补不足。未来,随着虚拟化和云计算技术的进一步发展和应用,采用虚拟化技术的面向云计算的企业IT基础设施在运维时会有更大优势。我们作为企业的IT部门应当及早研究和应用虚拟化和云计算技术,助力公司信息化建设。 参考文献 [1]《虚拟化与云计算》小组.虚拟化与云计算[M].电子工业出版社,2009. [2]樊勇兵,丁圣勇,陈天,等.解惑云计算[M].人民邮电出版社. [3]张为民,唐剑峰,罗治国,等.云计算深刻改变未来[M].科学出版社. [4]雷万云.云计算——企业信息化建设策略与实践[M].清华大学出版社. 将Android平台的RIL层 移植到基于LINUX的通用平台的研究与实现 重庆邮电大学 赵国强 彭大芹 【摘要】本文通过对Android RIL层代码分析,将android RIL层功能在纯LINUX平台上实现,完全脱离了Android系统。为基于LINUX的通用平台实现一套成熟的RIL层代码,并开发出相应的框架层,以便基于LINUX的平台能快速成熟的向3G网络发起相关业务。在OpenWrt系统上验证了移植后的RIL层代码正常工作。【关键词】Android RIL;LINUX;移植;Parcel;验证 1.课题研究的背景和意义1.1 Android RIL简介 Android RIL(Radio Interface Layer)提供了无线基带Modem与电话应用之间的抽象层。在Android RIL层中,完善的考虑了电话应用的各种情况,如:双SIM卡;电话,短信,彩信,PS DATA业务,PIN/PUK码等各种3G网络业务。 RIL层在Android系统中,处于硬件抽象层,运行在一个独立的守护进程中,主要为框架层和基带接口提供适配,具有良好的独立性。其中的通信机制,与框架层接口主要使用Socket通信,内部线程主要使用管道,与基带接口默认使用AT命令。且其代码均由C和C++来完成,依赖第三方库较少,所以,Android RIL 层具有良好的移植性。 1.2 移植Android RIL的意义 目前很多基于LINUX平台的系统,如:PC(LINUX操作系统),QT,路由器平台(如OpenWrt系统)等等,都对连接3G网络有需求,但在这些平台原生的功能中,没有独立的RIL接口层,所以开发一套基于LINUX的独立应用,用来支持与基带发起各种3G网络相关业务是很有意义的。Android RIL具有良好的稳定性,独立性,以及对3G网络业务的完整性,所以将其移植成一个独立的,供LINUX通用平台使用的RIL层,可方便所有的基于LINUX的平台完成各种电话应用的开发。 2.Android系统中RIL层分析 2.1 RIL层在Android系统中的位置 RIL在Android系统中,处于硬件抽象层位置。主要通过SOCKET通信连接框架层,将框架层下发的消息解析后,向基带下发相应的AT指令,并将从基带返回的AT指令的响应,封装成消息,返回给框架层。位置如图1所示。 2.2 Android RIL工作原理2.2.1 Android RIL代码说明 RIL主要由RILD(radio interface layer daemon)守护进程和两个动态库:librefrence_ril.so和libril.so组成。Android工程源代码目录中,RIL代码包含于hardware/ril目录中,主要文件说明如表1所示。 2.2.2 Android RIL工作原理 rild以一个main函数作为整个RIL层的入口点,负责完成初始化。libril.so库包含了主要的消息循环流程,主要负责与框架层进行交互,在接收框架层命令后,调用相应函数处理,然后将命令响应结果传回客户进程。librefrence_ril.so主要提供各个具体业务的AT指令的封装和解析接口,供libril调用,向下通过AT_COM和基带进行交互。具体工作线程如图2所示。 3.移植Android RIL层功能 通过对A n d r o i d R I L 层代码分析,在RIL层主要使用了基于linux的POSIX Thread (pthread)多线程编程和socket IPC通信,这些在移植过程中是无须考虑的。需要移植的是RIL层依赖于Android系统的功能。 3.1 移植Android系统属性 表1 RIL主要文件说明(./表示处于hardware/ril目录下) 文件路径 文件名文件说明./include/telephony ril.h 框架层和RIL层接口和数据结构定义./libril ril_commands.h 请求命令描述列表ril_unsol_commands.h 主动上报时间描述列表 ril.cpp 主要负责与框架层交互ril_event.h 数据结构和函数声明ril_event.cpp 处理event loop事件./reference-ril atchannel.h 数据结构和函数声明atchannel.c 主要负责与modem通信reference-ril.c 主要负责应用与基带间的数据通信 at_tok.h AT指令解析处理函数声明at_tok.c AT指令解析处理函数misc.h AT指令解析处理函数声明misc.c AT指令解析处理函数./rild rild.c rild守护进程

相关主题
相关文档
最新文档