Android平台Bootloader的刷屏功能扩展设计 01
- UID
- 872238
|
Android平台Bootloader的刷屏功能扩展设计 01
引言
Android自2011年以来实现了计算机诞生以来最快速度的用户群体增长,目前Android以每天85万新激活数的速度快速征服世界,在世界范围内成为占有率最高的智能手机操作系统。根据赛诺的调研报告,Android系统在中国的市场份额高达74.7%。然而很多硬件制造商在旧设备的升级问题上动作缓慢。Android 4.0的配置要求比起之前的Android系统有较大的提高,导致很多厂商在中低端市场的新机型和主推机型都无法达到最低配置要求。根据市场的需求,低端Android手机存在着巨大商机。在低价格的情况下,如何实现高配置的要求,成为手机开发商研究的重点。
对于Android系统,Bootloader是基于特定平台来实现的。Booloader是否解锁关系到各方的利益,解锁Bootloader将会给用户带来很大的好处,Android用户将能够自行根据需要刷写固件,去掉可能导致扣费的运营商服务,得到更加多样的Android体验。因此,本文根据定制的实际平台,提出了一种面向客户需求的实现Bootloader扩展功能的设计方案。
1 Bootloador的基本原理及功能介绍
Bootloader(系统启动加载器),其实就是在系统启动之前运行的一段程序。Bootloader的作用是对硬件设备初始化,建立内存空间映像图,从而把系统的软件环境带到一个合适的状态。这样,系统在调用内核时就准备好真正的环境,最终引导系统正常启动。对于Android系统,通常并没有PC机那样的周件程序BIOS,因此Bootloader必须完成整个系统的加载任务。而且对于嵌入式系统,其硬件的差别也是很大的,在操作系统启动之前,必须完成这些硬件的初始化工作,这就导致嵌入式系统Bootloader的功能和具体实现都比PC系统复杂得多。
LK(Linux Kernel)是小内核小操作系统,是AndroidBootloader的核心。在高通代码中,Android Bootloader位于bootable\bootloader\1k目录下,Bootloader的功能性设计主要在app\aboot.c下,aboot_init函数是LK的功能入口点。aboot_init的执行过程如下:
①设置NAND/EMMC读取信息页面大小;
②读取按健信息。判断是正常开机、进入fastboot,还是进入recovery模式;
③从NAND中加载内核;
④启动内核。实现刷屏功能可以在读取按键之前,所以Bootloader扩展功能的设计流程如图1所示。
2 LCD控制器及外围设备连接
2.1 LCD控制器介绍
LCD控制器是Android手机开发项目中C6310芯片的必备模块,它负责将需要显示的数据,如操作界面、图像等送给LCD显示设备。在手机的应用中,LCD显示设备主要有以下几类:被动显示模式STN屏、主动显示模式TFT屏,以及主动模式OLED屏。根据显示颜色不同,又可以分为单色屏和彩色屏。LCD控制器不直接和LCD显示屏相连,而是和LCD驱动器相连,这样简化了接口信号数量和显示控制过程。LCD控制器时序由控制信号和图像数据两部分组成,其中控制信号包括VCLK、HSYNC、VSYNC,分别为像素时钟信号、行同步信号、帧同步信号。作为帧同步信号的VSYNC,每发出一个脉冲,都意味着新的一屏图像数据开始发送。而作为行同步信号的HSYNC,每发出一个脉冲,都意味着新的一行图像资料开始发送。在帧同步以及行同步的头尾都必须保留回扫时间。这样的时序安排起源于CRT显示器电子枪偏转所需的时间,但后来成为实际上的工业标准,因此TFT屏也包含了回扫时间。
C6310芯片内部集成了一个LCD控制器,通常配置寄存器来控制其工作,命令和图像数据的传输由LCD主控制器自动完成。C6310的LCD控制器采用并行或串行接口工作时,最多支持3层图像合并(L1、L2、L3),L4层用作命令存储空间。命令存储空间中一个命令有20位,占用32位空间。第一个0~17位对应LCD_CMD寄存器中0~17位;第19位用作命令、数据切换位。
2.2 LCD控制器和LCD驱动嚣的硬件连接
ILI9481是一个单芯片TFT液晶显示驱动器,通常LCD控制器和LCD驱动器之间有并口、串口、RGB三种接口。采用RGB接口时,控制信息(行同步、场同步等)由主控制器发送;采用并口、串口时,控制信息包含在发送的图像数据中,该项目采用的是C6310 LCD控制器和ILI9481驱动器,它们采用并口连接,图2描述了LCD主控制器和ILI9481的连接。
驱动中针对硬件的操作主要为主控制器寄存器的配置,命令和图像的传输由LCD主控制器完成。 |
|
|
|
|
|