搜档网
当前位置:搜档网 › 4412开发板android入门篇_制作android开机动画

4412开发板android入门篇_制作android开机动画

4412开发板android入门篇_制作android开机动画
4412开发板android入门篇_制作android开机动画

基于UT4412BV03开发板订制Android系统开机动画

我们在使用友坚恒天UT4412BV03开发板时,系统启动时可以看到三种不同的图片。但是我们看到的开机画面不一定是我们喜欢的。或者我们要使开机画面为自己公司的开机logo,这时我们可以按照下面的方式修改。

对于android系统启动过程中显示的画面,我们可以根据自己的需要而设计,但我们在设计开机logo时可能也会考虑到怎样让系统以最快的速度启动,在开发UT4412BV03开发板的过程中,我们将系统启动画面显示分为了3个阶段,不包括UBOOT部分的logo,为了让系统以最快的速度启动,所以未在在uBOOT中置入开机logo,只是从kernel开始显示开机logo。

UT4412BV03开发板系统启动时有三个显示阶段,下面将分析怎样制作这三个显示画面显示的图片。

第一阶段为:kernel中的开机logo(kernel中实现)

第二阶段为:显示Android字样(android中实现)

第三阶段为:显示动态滚动的图片(android中实现)

一.Kernel中开机动画的制作

1.首先,安装光盘中的logo目录下的gimp-

2.8.14-setup软件

2.用gimp软件打开logo目录下的logo图片,右键单击鼠标,选择图像---模式----索引

如下图将最大颜色数改为“224”点击“转换”

然后单击“Export As”

将图片命名为“logo_linux_clut224.ppm”点击“转换”

选择“ASCII”,选择“导出”

将导出的logo_linux_clut224.ppm文件复制到内核源码的kernel/driver/video/logo目录下,然后重新执行“make –j2”编译出zImage镜像下载到开发板上。重启系统将看到kernel

中制作好的开机动画。

二.将系统启动的android字样修改为urbertter

修改需要显示的文字:

将Android源码Android_source\system\core\init路径下的init.c中的如下函数中的android 字样修改为urbetter

三.android动态画面的制作

Android开机动画修改方法,android 2.0及之后,使用bootanimation程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做bootanimation.zip包,放在系统的/system/media目录中,开机画面主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt 里面的指令,屏幕上会按文件名称顺序连续的播放一张张图片,形成连贯的动画。

动画图片制作要点:

1.动画图片的尺寸大小,一般根据屏的分辨率界定,UT4412BV03开饭板LCD为1024*600的屏分辨率,所以我在做图片时,图片的分辨率只能小于此分辨率。这个大家可以用PS制作图片,或者百度下载一个动画片段,用KMPlayer软件获取动画的每一帧图片。

2.动画图片制作按照数字编号后统一放在一个文件夹下,本例中为part0和part1。(注:编号必须连贯)

动画属性描述文件。desc.txt是一个保存形式为ANSI格式的文件,用于设置这个动画像素(大小),帧数,闪烁次数,文件夹名称等。内容如下:

480 427 30

p 1 0 part0

p 0 0 part1

desc.txt文件解释:

480 427 30 ---这里的480代表图片的像素(大小)宽度,427代表图片的像素(大小)高度,30代表帧数;

p 1 0 part0 ---这里的p代表标志符,1代表循环次数为1次,0代表阶段间隔时间为0,part0代表对应的文件夹名,为第一阶段动画图片目录;

p 0 0 part1---这里的p代表标志符,0代表本阶段无限循环,0代表阶段间隔时间为0,part1代表对应的文件夹名,为第二阶段动画图片目录;

阶段切换间隔时间:单位是一个帧的持续时间,比如帧数是30,那么帧的持续时间就是1秒/30 = 33.3毫秒。阶段切换间隔时间期间开机动画进程进入休眠,把CPU时间让给初始化系统使用。也就是间隔长启动会快,但会影响动画效果。

part0和part1文件夹内包含的是两个动画的系列图片,图片为PNG格式。系列图片文件的加载刷新按文件名的名称排序。必须注意的是,在属性描述完成后要有换行符(回车跳入下一行),已确保指令都已完成。

图片和desc.txt文档都准备好后,开始打包为bootanimation.zip。选中图片文件夹part0和part1和desc.txt,然后右键选择WINRAR的"添加到压缩文件"进入自定义压缩文件设置:压缩文件格式选择:ZIP,压缩方式选择:存储,然后点击确定即可。

我们制作好的图片放在光盘中logo目录下。将目录下的bootanimation文件夹压缩成.zip 文件,然后复制到android源码的out/system/media目录下,然后执行make编译出镜像文件,将生成的文件下载到开发板,重启即可看到开机已修改的开机画

面。

android系统开机启动流程分析

一,系统引导bootloader 加电,cpu执行bootloader程序,正常启动系统,加载boot.img【其中包含内核。还有ramdisk】 二,内核kernel bootloader加载kernel,kernel自解压,初始化,载入built-in驱动程序,完成启动。 内核启动后会创建若干内核线程,在后装入并执行程序/sbin/init/,载入init process,切换至用户空间(user-space) 内核zImage解压缩 head.S【这是ARM-Linux运行的第一个文件,这些代码是一个比较独立的代码包裹器。其作用就是解压Linux内核,并将PC指针跳到内核(vmlinux)的第一条指令】首先初始化自解压相关环境(内存等),调用decompress_kernel进行解压,解压后调用start_kernel启动内核【start_kernel是任何版本linux内核的通用初始化函数,它会初始化很多东西,输出linux版本信息,设置体系结构相关的环境,页表结构初始化,设置系 统自陷入口,初始化系统IRQ,初始化核心调度器等等】,最后调用rest_init【rest_init 会调用kernel_init启动init进程(缺省是/init)。然后执行schedule开始任务调度。这个init是由android的./system/core/init下的代码编译出来的,由此进入了android的代码】。 三,Init进程启动 【init是kernel启动的第一个进程,init启动以后,整个android系统就起来了】 init进程启动后,根据init.rc 和init. .rc脚本文件建立几个基本 服务(servicemanager zygote),然后担当property service 的功能 打开.rc文件,解析文件内容。【system/core/init/init.c】将service信息放置到service.list中【system/core/init/init_parser.c】。 建立service进程。【service_start(…) execve(…)】 在init.c中,完成以下工作 1、初始化log系统【解析/init.rc和init.%hardware%.rc文件,在两个 文件解析步骤2时执行“early-init”行动】 2、初始化设备【在/dev下创建所有设备节点,下载firmwares】 3、初始化属性服务器【在两个文件解析步骤2时执行“init”行动】

安卓系统4.2开机几个画面的修改方法

开机画面的修改 1.图片说明 现在我们机器开机一共有4部分的图片显示。 第一张是bootload里面显示的图片 M3图片 M6图片 在修改此图的位置,也可以修改uboot内充电图片

第二张就是我们的绿色机器人图片。 第三张就是我们android字串滚动的动画。 2.修改图片 下面我们就开始对相应图片来进行修改。 1)对于第一张图片: M3的修改方法: 我们可以在device/amlogic/common/res/logo/ 目录下添加或者修改xxx.BMP图片 同时在device/amlogic/xxxref目录下修改BoardConfig.mk文档关于Logo部分代码,如: TARGET_AMLOGIC_AML_LOGO := device/amlogic/common/res/logo/a9.1024x600.bmp//A9 logo图片 TARGET_AMLOGIC_LOGO := device/amlogic/common/res/logo/robot.1024x600.bmp //此Logo为Recovery下机器人图片

M6的修改方法: 我们可以在device\amlogic\xxxref\res_pack\res目录下添加或者修改xxx图片 注意: 1、图片是没有后缀名的 2、必须遵循的——图片必须是16位RGB565的。 3、建议的是——图片尽可能的小,不需要做成全屏的,这样可以明显的提高启动速度; 4、图片的宽度尽量是4的整数倍。 同时在device/amlogic/xxxref目录下修改BoardConfig.mk文档关于Logo部分代码,如: TARGET_AMLOGIC_LOGO := $(PRODUCT_OUT)/res-package.img (由我们修改的图片文件编译生成的res-package.img) TARGET_AMLOGIC_RES_PACKAGE :=device/amlogic/xxxref/res_pack/res (指定图片所在目录) 2)对于第二张图片,就会稍微复杂一点。第二张图片的存放位置是在 device/amlogic/common/res/logo/xxxx.rle文件。 修改方法如下: 1.制作一张xxx.png图片,然后放到rootfs根目录下。

分析Android 开机启动慢的原因

开机启动花了40多秒,正常开机只需要28秒就能开机起来。 内核的启动我没有去分析,另一个同事分析的。我主要是分析从SystemServer启来到开机动画结束显示解锁界面的这段时间,也就是开机动画的第三个动画开始到结束这段时间,这是个比较耗时阶段,一般都在17秒左右(见过牛B的手机,只需5秒)。 SystemServer分两步执行:init1和init2。init1主要是初始化native的服务,代码在sy stem_init.cpp的system_init,初始化了SurfaceFlinger和SensorService这两个native的服务。init2启动的是java的服务,比如ActivityManagerService、WindowManagerService、PackageManagerService等,在这个过程中PackageManagerService用的时间最长,因为PackageManagerService会去扫描特定目录下的jar包和apk文件。 在开机时间需要40多秒的时,从Log上可以看到,从SurfaceFlinger初始化到动画结束,要27秒左右的时间,即从SurfaceFlinger::init的LOGI("SurfaceFlinger is starting")这句Log到void SurfaceFlinger::bootFinished()的LOGI("Boot is finished (%ld ms)", long(ns 2ms(duration)) ),需要27秒左右的时间,这显然是太长了,但到底是慢在哪了呢?应该在个中间的点,二分一下,于是想到了以启动服务前后作为分隔:是服务启动慢了,还是在服务启动后的这段时间慢?以ActivityManagerService的Slog.i(TAG, "System now ready")的这句Log为分割点,对比了一下,在从SurfaceFlinger is starting到System now read y多了7秒左右的时间,这说明SystemServer在init1和init2过程中启动慢了,通过排查,发现在init1启动的时候,花了7秒多的时间,也就是system_init的LOGI("Entered system _init()")到LOGI("System server: starting Android runtime.\n")这段时间用了7秒多,而正常情况是400毫秒便可以初始化完,通过添加Log看到,在SensorService启动时,用了比较长的时间。 不断的添加Log发现,在启动SensorService时候,关闭设备文件变慢了,每次关闭一个/dev/input/下的设备文件需要100ms左右,而SensorService有60~70次的关闭文件,大概有7s左右的时间。 调用流程是: frameworks/base/cmds/system_server/library/system_init.cpp: system_init->SensorServi ce::instantiate frameworks/native/services/sensorservice/SensorService.cpp: void SensorService::onFi rstRef()->SensorDevice& dev(SensorDevice::getInstance()) hardware/libsensors/SensorDevice.cpp: SensorDevice::SensorDevice()->sensors_open hardware/libsensors/sensors.cpp: open_sensors->sensors_poll_context_t sensors_poll_context_t执行打开每个传感器设备时,遍历/dev/input/目录下的设备文件,以匹配当前需要打开的设备,遍历文件是在 hardware/libsensors/SensorBase.cpp的openInput下实现,如果打开的设备文件不是正在打开的设备文件,会执行下面语句的else部分: if (!strcmp(name, inputName)) { strcpy(input_name, filename); break;

Android 开机启动流程

Android的开机流程 1. 系统引导bootloader 1) 源码:bootable/bootloader/* 2) 说明:加电后,CPU将先执行bootloader程序,此处有三种选择 a) 开机按Camera+Power启动到fastboot,即命令或SD卡烧写模式,不加载内核及文件系统,此处可以进行工厂模式的烧写 b) 开机按Home+Power启动到recovery模式,加载recovery.img,recovery.i mg包含内核,基本的文件系统,用于工程模式的烧写 c) 开机按Power,正常启动系统,加载boot.img,boot.img包含内核,基本文件系统,用于正常启动手机(以下只分析正常启动的情况) 2. 内核kernel 1) 源码:kernel/* 2) 说明:kernel由bootloader加载 3. 文件系统及应用init 1) 源码:system/core/init/* 2) 配置文件:system/rootdir/init.rc, 3) 说明:init是一个由内核启动的用户级进程,它按照init.rc中的设置执行:启动服务(这里的服务指linux底层服务,如adbd提供adb支持,vold提供SD卡挂载等),执行命令和按其中的配置语句执行相应功能 4. 重要的后台程序zygote 1)源码:frameworks/base/cmds/app_main.cpp等 2) 说明:zygote是一个在init.rc中被指定启动的服务,该服务对应的命令是/system/bin/app_process a)建立Java Runtime,建立虚拟机 b) 建立Socket接收ActivityManangerService的请求,用于Fork应用程序 c) 启动System Server 5. 系统服务system server 1)源码:frameworks/base/services/java/com/android/server/SystemServer.jav a 2) 说明:被zygote启动,通过SystemManager管理android的服务(这里的服务指frameworks/base/services下的服务,如卫星定位服务,剪切板服务等) 6. 桌面launcher 1)源码:ActivityManagerService.java为入口,packages/apps/launcher*实现 2) 说明:系统启动成功后SystemServer使用xxx.systemReady()通知各个服务,系统已经就绪,桌面程序Home就是在ActivityManagerService.systemReady()通知的过程中建立的,最终调用()启launcher 7. 解锁 1) 源码: frameworks/policies/base/phone/com/android/internal/policy/impl/*lock* 2) 说明:系统启动成功后SystemServer调用wm.systemReady()通知WindowManagerService,进而调用PhoneWindowManager,最终通过LockPatternKeyguardView显示解锁界面,跟踪代码可以看到解锁界面并不是一个Activity,这是只是向特定层上绘图,其代码了存放在特殊的位置

修改android启动logo(动态图片-静态图片)经典.doc

修改和制作Android开机Logo(完整版) 日期:2012-02-15 作者:zhh 以下在Telechips tcc8923上,用Android4.0的源码编译通过 1.bootloader图片修改 bootable\bootloader\lk\platform\tcc_shared\include\lcd\logo.h替换就行了 logo.h的制作:准备一张图片,然后用Img2Lcd工具把图片转成C语言数组 注意:在使用Img2Lcd工具转换的图片最左边会有一条白边,把数组中前8个数值删除就不会有这样的情况。仅仅支持.bmp格式的文件 2.kernel图片(linux logo)原来是没有的,需要先在menuconfig中加入配置Device Driver---Graphic support---Bootup Logo中选中224 color

然后把自己的LOGO(png-8格式)转换成ppm格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o文件,重新编译。(/drivers/video/logo/logo_linux_clut224.ppm 是默认的启动LOGO 图片格式为ppm) ppm图片的生成: # pngtopnm logo_linux_clut224.png > logo_linux_clut224.pnm # pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224.pnm(如果执行出错,可以省略) # pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm 注意:使用pngtopnm ,pnmquant ,pnmtoplainpnm 工具前要先安装,在虚拟机下sudo apt-get install netpbm 这三个工具会安装好。 设置图片居中显示: 修改drivers/video/fbmem.c /*modified by creatory*/ // image.dx=0; // image.dy=y; image.dx=(info->var.xres/2)-(logo->width/2); image.dy=(info->var.yres/2)-(logo->height/2); 在drivers/video/console/fbcon.c文件中的 logo_height=fb_prepare_logo(info,ops->rotate); 下面加入 logo_height += (info->var.yres/2)-(logo_height/2); 第三张图片:

基于MT6752的 android 系统启动流程分析报告

基于MT6752的Android系统启动流程分析报告 1、Bootloader引导 (2) 2、Linux内核启动 (23) 3、Android系统启动 (23) 报告人: 日期:2016.09.03

对于Android整个启动过程来说,基本可以划分成三个阶段:Bootloader引导、Linux kernel启动、Android启动。但根据芯片架构和平台的不同,在启动的Bootloader阶段会有所差异。 本文以MTK的MT6752平台为例,分析一下基于该平台的Android系统启动流程。 1、Bootloader引导 1.1、Bootloader基本介绍 BootLoader是在操作系统运行之前运行的一段程序,它可以将系统的软硬件环境带到一个合适状态,为运行操作系统做好准备,目的就是引导linux操作系统及Android框架(framework)。 它的主要功能包括设置处理器和内存的频率、调试信息端口、可引导的存储设备等等。在可执行环境创建好之后,接下来把software装载到内存并执行。除了装载software,一个外部工具也能和bootloader握手(handshake),可指示设备进入不同的操作模式,比如USB下载模式和META模式。就算没有外部工具的握手,通过外部任何组合或是客户自定义按键,bootloader也能够进入这些模式。 由于不同处理器芯片厂商对arm core的封装差异比较大,所以不同的arm处理器,对于上电引导都是由特定处理器芯片厂商自己开发的程序,这个上电引导程序通常比较简单,会初始化硬件,提供下载模式等,然后才会加载通常的bootloader。 下面是几个arm平台的bootloader方案: marvell(pxa935) : bootROM + OBM + BLOB informax(im9815) : bootROM + barbox + U-boot mediatek(mt6517) : bootROM + pre-loader + U-boot broadcom(bcm2157) : bootROM + boot1/boot2 + U-boot 而对MT6752平台,MTK对bootloader引导方案又进行了调整,它将bootloader分为以下两个部分: (1) 第1部分bootloader,是MTK内部(in-house)的pre-loader,这部分依赖平台。 (2) 第2部分bootloader,是LK(little kernel的缩写,作用同常见的u-boot差不多),这部分依赖操作系统,负责引导linux操作系统和Android框架。 1.2、bootloader的工作流程 1.2.1 bootloader正常的启动流程 先来看启动流程图:

linux内核启动 Android系统启动过程详解

linux内核启动+Android系统启动过程详解 第一部分:汇编部分 Linux启动之 linux-rk3288-tchip/kernel/arch/arm/boot/compressed/ head.S分析这段代码是linux boot后执行的第一个程序,完成的主要工作是解压内核,然后跳转到相关执行地址。这部分代码在做驱动开发时不需要改动,但分析其执行流程对是理解android的第一步 开头有一段宏定义这是gnu arm汇编的宏定义。关于GUN 的汇编和其他编译器,在指令语法上有很大差别,具体可查询相关GUN汇编语法了解 另外此段代码必须不能包括重定位部分。因为这时一开始必须要立即运行的。所谓重定位,比如当编译时某个文件用到外部符号是用动态链接库的方式,那么该文件生成的目标文件将包含重定位信息,在加载时需要重定位该符号,否则执行时将因找不到地址而出错 #ifdef DEBUG//开始是调试用,主要是一些打印输出函数,不用关心 #if defined(CONFIG_DEBUG_ICEDCC)

……具体代码略 #endif 宏定义结束之后定义了一个段, .section ".start", #alloc, #execinstr 这个段的段名是 .start,#alloc表示Section contains allocated data, #execinstr表示Section contains executable instructions. 生成最终映像时,这段代码会放在最开头 .align start: .type start,#function /*.type指定start这个符号是函数类型*/ .rept 8 mov r0, r0 //将此命令重复8次,相当于nop,这里是为中断向量保存空间 .endr b 1f .word 0x016f2818 @ Magic numbers to help the loader

Android修改开关机动画声音教程文件

A n d r o i d修改开关机 动画声音

开机画面,按照国际惯例,一般是分为2屏,当然也有3屏的说法,不管怎样,我这里说得就是最后的一屏,按照bootanimation的字面意思翻译,大概也就是开机动画的意思,那这就不说第几屏了,直接用“开机动画”这词。 首先,开机动画的地址:system\media\bootanimation.zip。。。要修改开机动画就是修改bootanimation这个文件。如果说你的手机里没有这个文件,那就是说明你用的是官方原始版本的rom,开机动画没有被修改过,但这不碍事,没有就放一个进去,到时候想换回最原始的开机画面,也可以把bootanimation这个文件删了。官方最原始的开机动画在system\ framework\framework- res.apk\assets\images里面,里面主要是2张图片,高手面可以去研究一下,说不定通过这个文件可以用代码实现动画的过程。 接下来,说说bootanimation.zip这个文件的结构。bootanimation里面主要包含一个desc.txt以及N 个文件夹。而文件夹里面放着的就是你要的开机动画的图片。decs.txt的作用就是指导系统如何去执行你的开机画面。 下面继续说说desc.txt这个文档要怎么写。 先看例子,如果我的开机动画要用到2个文件夹,分别是part1和part2,。。。。我希望开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part2里面的文件,直到进入系统。那么decs.txt文档的内容应该如下: 302 480 5 p 1 0 part1 p 0 0 part2 就这么多,现在解释一下这些命令吧。 第一行,320 480是代表你屏幕的分辨率,因为我们的胖6是320*480的,这就不多说了。后面的5是说,5帧每秒,不懂的可以这么理解,5是代表一秒钟播放5张图片。就这么简单。 第二行,p 1 0 part1。p应该是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什么都不做。part1就是说,这条指令是针对part1这个文件夹的。整条指令的意思就是,播放part1里面的图片1次,然后什么都不做,马上进入下一条指令。 第三行,p 0 0 part2。p依然是播放。第一个0这里是代表循环播放,第二个0和上面第二条指令一样,代表什么也不做。part2也就不多说了。 至于为什么第一个0为什么是代表循环,只能这么说,这事国际惯例,就像用迅雷的时候,0代表不限制速度一样,系统规定的,你知道就好,别纠结。 总结公式如下 第一条指令:屏幕的分辨率(空格)播放频率 第二条指令:p(空格)播放次数(空格)后续操作(空格)作用文件夹 第三条指令:同上 第N条指令:同上 屏幕分辨率的格式是:宽(空格)高,胖6的就是320 480。。。播放频率,上面已经说清楚了,至于到底要用多大的数字,视你开机动画的张数而定,比如说,一共有100张图片,开机时间是20秒,那么100/20就是5。 播放次数,1是代表一次,0代表循环播放。如果要播放2次的话,就是就是打个2上去,应该是这样吧,反正我是没试过,只试过0和1. 后续操作,0代表什么都不做,直接进入下一条指令。10是代表稍作停顿。

安卓开机动画以及制作(课程设计)

洛阳理工学院 课程设计报告 课程名称嵌入式系统课程设计 设计题目 Android开机动画及声音制作专业 班级 学号 姓名 完成日期 2017年月日

课程设计任务书 设计题目:Android开机动画与声音制作 设计内容与要求: 修改Android开机动画和声音的是建立自定义Android系统的入门课程和基本功。Android系统的开机动画需要修改和设定bootanimation.zip文件,修改开机声音需要自定义OGG文件并导入系统指定位置。 题目的基本要求如下: 1. 寻找并下载合适的开机视频; 2. 将视频转换成连续的PNG图像文件; 3. 修改desc.txt文件并打包bootanimation.zip文件; 4. 获取合适的开机声音并利用格式工厂工具转换为OGG格式; 5. 通过adb shell指令,进入控制板系统内并修改android系统文件只读属性; 6. 点击开发板的“复位”进行复位,重启开发板查看修改结果。 指导教师: 年6月日 课程设计评语 成绩: 指导教师:_______________ 年月日

目录 第1章概述 (2) 1.1 Android应用平台简介 (2) 1.2 RK2928开发板介绍 (2) 第2章 Android开机动画及声音制作 (5) 2.1 基本操作流程 (5) 2.2 开机动画的制作与添加 (6) 2.3 开机声音的制作与添加 (11) 2.4 开机动画及声音结果 (12) 第3章心得体会 (13)

第1章概述 1.1 Android应用平台简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。 1.2 RK2928开发板介绍 图1-1 实验板外观 作为RK292系列里较为高级的芯片之一,RK2928提供了比较不错的性能。较RK2926,RK2928集成了HDMI 1.4a控制器及GPS基带的支持,为300元价

android开机logo制作方法

在定制产品时,常需要制作logo logo开机时共分两部分: 准备图片 1)、(内核部分)第一阶段静态显示,要求一张png格式图片(满足机器要求分辨率),单张图片不大于100kb。静态显示时间5秒左右。 2)、(android部分)第二阶段静态显示,要求一张png格式图片(满足机器要求分辨率),单张图片不大于100kb。静态显示时间15-20秒左右。 3)、(android部分)第三阶段动态显示,要求多张png格式图片(满足机器要求分辨率),单张图片不大于100kb,动态显示时间15s秒左右。(总大小小于4M,越小越好) 一、内核部分。 android系统默认为小企鹅。如需修改: 1.替换内核小企鹅 根据在bootup logo里面配置的选项,替换掉kernel25_A7_281x\drivers\video\logo\下面的logo_linux_clut224.ppm 或者其他的.ppm文件,同时删除logo_linux_clut224.c 。使用附件脚本png2ppm.sh ,放入虚拟机,在同一个目录下存放 logo.png(你想转换的),然后敲入./png2ppm.sh 即可生成logo.ppm,再重命名为logo_linux_clut224.ppm即可用, 若原来没有安装netpbm工具,使用sudo apt-get install netpbm 命令安装 --- Bootup logo x x x x [ ] Standard black and white Linux logo x x x x [ ] Standard 16-color Linux logo x x x x [*] Standard 224-color Linux logo x x x x [ ] 224-color Macintosh Linux logo x x x x [ ] 16-color SuperH Linux logo 二.android部分 1、替换android_小字 制作initlogo.rle文件,替换out\target\product\sdkDemo\root\下原文件 将png2rle.sh ,rgb2565 放入虚拟机,同一个目录放入logo.png 安装imagemagick工具,使用命令sudo apt-get install imagemagick 再执行./png2rle.sh,即生成Initlogo.rle 2.替换android闪光动画 vendor\....\sdkDemo\bootanimation.zip 或者替换out\target\product\sdkDemo\system\media\bootanimation.zip

Android开机启动流程样本

Android的开机流程 1. 系统引导bootloader 1) 源码: bootable/bootloader/* 2) 说明: 加电后, CPU将先执行bootloader程序, 此处有三种选择 a) 开机按Camera+Power启动到fastboot, 即命令或SD卡烧写模式, 不加载内核及文件系统, 此处能够进行工厂模式的烧写 b) 开机按Home+Power启动到recovery模式, 加载recovery.img, recovery.img包含内核, 基本的文件系统, 用于工程模式的烧写 c) 开机按Power, 正常启动系统, 加载boot.img, boot.img包含内核, 基本文件系统, 用于正常启动手机( 以下只分析正常启动的情况) 2. 内核kernel 1) 源码: kernel/* 2) 说明: kernel由bootloader加载 3. 文件系统及应用init 1) 源码: system/core/init/* 2) 配置文件: system/rootdir/init.rc, 3) 说明: init是一个由内核启动的用户级进程, 它按照init.rc中的设置执行: 启动服务( 这里的服务指linux底层服务, 如adbd提供adb支持, vold提供SD卡挂载等) , 执行命令和按其中的配置语句执行相应功能 4. 重要的后台程序zygote 1) 源码: frameworks/base/cmds/app_main.cpp等 2) 说明: zygote是一个在init.rc中被指定启动的服务, 该服务对应的命令是/system/bin/app_process

MIUI ROM制作教程——认识Android手机

MIUI ROM适配之旅第一天——认识Android手机 写这篇文章时想起我的第一部Android手机HTC Hero。买回来后,同事告诉我可以去刷机玩玩。刷机,怎么刷?同事说,你个土人,刷机都不知道,很多刷机论坛的,你去逛逛,挺简单的。我去逛了逛机锋论坛(那时还不知道MIUI),打开一看,什么recovery, radio, root 各种词汇扑面而来,oh my lady gaga,这么复杂。但是为了不被鄙视,而且闲着也是闲着,还是刷着玩玩吧。后来就结识MIUI来到了小米。这是题外话,咱们言归正传。 在这纷纷扰扰的Android世界里,如何找到那条刷机大道呢,或许它只是个传说,我们只是一直在探索。让我们从零开始来看一看,看能发现点什么。 1. bootloader 当我们拿到一款手机,第一件事应该就是按下电源键开机,那么从开机到进入到桌面程序这中间发生了些什么呢,我们从下面这张简化了的手机结构图开始: 注意:该结构图并不反映手机的实际分区顺序和位置,只是一个逻辑结构图。 大家可以简单的把手机的ROM存储类比为我们电脑上的硬盘,这个硬盘被分成了几个分区:bootloader分区,boot分区,system分区等等。后面我们会逐渐介绍各个分区的用途。所谓的刷机我们可以简单的理解成把软件安装在手机的某些分区中,类似于我们在电脑上安装Windows系统。 当按下电源键手机上电启动后,首先从bootloader分区中一个固定的地址开始执行指令,如图所示,bootloader分区分成两个部分,分别叫做primary bootloader和secondary stage bootloader。Primary bootloader主要执行硬件检测,确保硬件能正常工作后将secondary stage bootloader拷贝到内存(RAM)开始执行。Secondary stage bootloader 会进行一些硬件初始化工作,获取内存大小信息等,然后根据用户的按键进入到某种启动模

Android系统启动过程详解

Android系统启动过程详解 Android系统启动过程 首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。 启动的过程如下图所示:(图片来自网上,后面有地址)

下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结, 以下学习过程中代码片段中均有省略不完整,请参照源码。

一Init进程的启动 init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行, 并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。 启动过程就是代码init.c中main函数执行过程:system\core\init\init. c 在函数中执行了:文件夹建立,挂载,rc文件解析,属性设置,启动服务,执行动作,socket监听…… 下面看两个重要的过程:rc文件解析和服务启动。 1 rc文件解析 .rc文件是Android使用的初始化脚本文件(System/Core/Init/readm e.txt中有描述: four broad classes of statements which are Actions, Commands, Services, and Options.) 其中Command 就是系统支持的一系列命令,如:export,hostname,mkdir,mount,等等,其中一部分是linux 命令, 还有一些是android 添加的,如:class_start :启动服务,class_stop :关闭服务,等等。 其中Options是针对Service 的选项的。 系统初始化要触发的动作和要启动的服务及其各自属性都在rc脚本文件中定义。具体看一下启动脚本:\system\core\rootdir\init.rc 在解析rc脚本文件时,将相应的类型放入各自的List中: \system\core\init\Init_parser.c :init_parse_config_file( )存入到 action_queue、action_list、service_list中,解析过程可以看一下parse_config函数,类似状态机形式挺有意思。 这其中包含了服务:adbd、servicemanager、vold、ril-daemon、deb uggerd、surfaceflinger、zygote、media…… 2 服务启动 文件解析完成之后将service放入到service_list中。 文件解析完成之后将service放入到service_list中。 \system\core\init\builtins.c

RK系统启动流程

RK29机型之Android系统启动流程 分类:瑞芯微RK 2012-02-12 14:50 4439人阅读评论(0) 收藏举报/******************************************************************************************** * author:conowen@大钟 * E-mail:conowen@https://www.sodocs.net/doc/7c1499346.html, * https://www.sodocs.net/doc/7c1499346.html,/conowen * 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。 ********************************************************************************************/ 第一步:系统引导bootloader,即RK29xxLoaderXXX.bin文件 加电后,CPU将先执行 bootloader程序,然后bootloader首先会读寄存器地址base + APP_DATA1的内容,根据这个地址的值决定是否进入recovery模式或者其它模式。bootloader还会读取MISC分区第一块的内容,决定进入recovery模式还是升级基带Baseband Processor(BP)或做其它事情 而上述寄存器与分区的值是有按键触发或者软件触发的。 a) 开机按reset+返回键,系统进入recovery模式,加载recovery.img,recovery.img 包含内核,基本的文件系统,用于工程模式的烧写 b) 开机按Power,正常启动系统,加载boot.img,boot.img包含内核,基本文件系统,用于正常启动机器(以下只分析正常启动的情况) 第二步:启动内核kernel 1) 源码:kernel/* 2) 说明:kernel由bootloader加载 第三步:文件系统(rootfs)及应用初始化(init) 1) 源码:system/core/init/* 2) 配置文件:system/rootdir/init.rc, 3) 说明:init是一个由内核启动的用户级进程,它按照init.rc中的设置执行:启动服务(这里的服务指linux底层服务,如adbd提供adb支持,vold提供SD卡挂载等),执行 命令和按其中的配置语句执行相应功能 第四步:重要的后台程序zygote 1) 源码:frameworks/base/cmds/app_main.cpp等 2) 说明:zygote是一个在init.rc中被指定启动的服务,该服务对应的命令是 /system/bin/app_process a) 建立Java Runtime,建立虚拟机

Android SystemBar启动流程分析

Android SystemBar启动流程分析 SystemBars的服务被start时,最终会调用该类的onNoService()方法。 @Override public void start() { if (DEBUG) Log.d(TAG, "start"); ServiceMonitor mServiceMonitor = new ServiceMonitor(TAG, DEBUG, mContext, Settings.Secure.BAR_SERVICE_COMPONENT, this); mServiceMonitor.start(); // will call onNoService if no remote service is found } @Override public void onNoService() { if (DEBUG) Log.d(TAG, "onNoService"); createStatusBarFromConfig(); // fallback to using an in-process implementation } private void createStatusBarFromConfig() { … mStatusBar = (BaseStatusBar) cls.newInstance(); … mStatusBar.start(); } BaseStatusBar是一个抽象类,故调用其子类的PhoneStatusBar的start 函数。 @Override public void start() { … super.start(); … } 子类的start又调用了父类的start public void start() { … createAndAddWindows(); … }

AndroidL系统启动及加载流程分析

Android L系统启动及加载流程分析 1、概述 Android L的启动可以分为几个步骤:Linux内核启动、init进程启动、native系统服务及java系统服务启动、Home启动,主要过程如下图: 图1 整个启动流程跟4.4及之前的版本相差不多,只是有个别不同之处,本文我们主要分析Linux内核启动之后的过程。

2、启动过程分析 2.1 init进程启动 当系统内核加载完成之后,会启动init守护进程,它是内核启动的第一个用户级进程,是Android的一个进程,进程号为1,init进程启动后执行入口函数main(),主要操作为: 图2 AndroidL上将selinux的安全等级提高了,设为了enforcing模式,4.4上是permissive模式。 解析rc脚本文件,即init.rc脚本,该文件是Android初始化脚本,定义了一系列的动作和执行这些动作的时间阶段e aryl-init、init、early-boot、boot、post-fs等阶段。init进程main 函数中会根据这些阶段进行解析执行。AndroidL上为了流程更清晰,增加了charger(充电开机)、ffbm(工厂模式)、以及late-init阶段,实际上这些阶段是对其他阶段的组合执行,比如late-init:

2.2 ServiceManager的启动 servicemanager的启动就是init进程通过init.rc脚本启动的: 源码在frameworks/native/cmds/servicemanager/service_manager.c中,servicemanager是服务管理器,它本身也是一个服务(handle=0),通过binder调用,为native和Java系统服务提供注册和查询服务的,即某个服务启动后,需要将自己注册到servicemanager中,供其他服务或者应用查询使用。AndroidL上servicemanger中在处理注册和查询动作之前添加了selinux安全检测相关的处理。 2.3 SurfaceFinger、MediaServer进程启动 Android4.4以前,surfacefinger的启动根据属性system_init.startsurfaceflinger,决定是通过init.rc启动还是systemserver进程启动,之后的版本包括AndoridL都是通过init.rc启动的: 启动后会向servicemanager进程注册服务中,该服务启动时主要功能是初始化整个显

相关主题