Android平台Bootloader的刷屏功能扩展设计

发布者:人妙果华最新更新时间:2013-01-14 来源: 电子科技 关键字:Bootloader  LCD控制器  驱动设计 手机看文章 扫描二维码
随时随地手机看文章

引言
    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位用作命令、数据切换位。
[page]

2.2 LCD控制器和LCD驱动嚣的硬件连接
    ILI9481是一个单芯片TFT液晶显示驱动器,通常LCD控制器和LCD驱动器之间有并口、串口、RGB三种接口。采用RGB接口时,控制信息(行同步、场同步等)由主控制器发送;采用并口、串口时,控制信息包含在发送的图像数据中,该项目采用的是C6310 LCD控制器和ILI9481驱动器,它们采用并口连接,图2描述了LCD主控制器和ILI9481的连接。


    驱动中针对硬件的操作主要为主控制器寄存器的配置,命令和图像的传输由LCD主控制器完成。

3 LCD控制器操作流程设计
    C6310采用L3层作为背景层、L4为命令层。当缓冲区的图像数据准备好以后,通过B_LCD_BmpOntoScreen16Bpp_ILI9481()函数启动LCD控制器,并将图像数据搬移到LCD驱动器。B_LCD_BmlpOntoScreen16Bpp_ILI9481()启动控制器后,启动一个等待队列,等待图像数据传输完毕。
    图像搬移过程中会产生中断,这里用到L4_EOF、L3_EOF、和L1_EOF中断,其中L4_EOF为命令传输完成中断,L3_EOF和L1_EOF分别为L3层和L1层数据传输完成中断。首先,C6310_LCDC向LCD驱动器发送一组数据,命令发送完毕后产生L4_EOF中断。然后,C6310_LCDC向LCD驱动器发送图像数据,发送完毕后产生L3_EOF和L1_EOF中断。
    在LCD进行数据显示前,首先要对LCD控制器的相关寄存器进行正确的设置。表1是C6310中的主要寄存器及其说明。


    连接16位RGB并行接口屏,其寄存器的操作流程如下;
    ①将命令index和命令数据写入存储器,如果命令是16位,则每一个字对应15:0是命令。如果命令为8位,则每一个字对应7:0是命令,通过每一个字中的第17位、WR_RD和第16位A0控制命令属性,如果该命令是最后一个命令,命令的第19位设置为1。
    ②配置LCD寄存器。配置第4层的起始地址为命令存储地址,配置LCD_PCONF控制读写时序,配置LCD_L1_SIZE的屏幕大小,配置LCD_PCONF控制读写时序,配置LCD_LCONF控制每层的开关和透明覆盖使能等。
    ③使能LCD控制位LCD_SEL,LCD控制器自动读取存储器中数据传输到接口。
    ④等待L1_SOF中断产生后,可以写下一帧所需要的命令和修改其他层起始地址等。
    ⑤等待BOF中断可以配置下一帧的LCD_CTRL寄存器或者每一层起始地址。
    ⑥如果连接的是并口或者串口LCD屏,在图像数据写入存储器的同时将命令写到第4层图像对应地址,LCD控制器会自动读取这些命令输出。LCD控制器操作流程如图3所示。


    从流程图可以看出,当EOF中断产生之后,就可以配置LCD控制器下一帧数据的起始地址。此时,这些配置不会在当前帧起效,而是在下一帧起效,如果需要当前命令发送完毕之后发送图像数据,L4_WINTH需配置为大于实际命令发送个数。本驱动为了让LCD控制器传送一帧图像后停止工作,当L4_EOF中断到来后,配置下一帧发送的命令为0x30003。

[page]

4 LCD驱动程序设计
    LCD驱动程序开发过程中,主要需要实现的是底层驱动程序,底层驱动大体分为两个部分:硬件初始化部分和实现splash_screen函数。
4.1 硬件初始化实现
    硬件初始化部分主要由display_init函数来实现,主要包括初始化LCD控制器、初始化LCD处理器、Frame-buffer设备的配置等工作,主要实现的函数如下:
   
    fb_config首先使能I2S写函数,对ILI9481进行复位操作,fbcon_setup函数记录了LCD屏幕参数,包括屏幕分辨率、时序参数、像素比特数(bpp)等参数,B_LCD_Init_ILI9481函数肩负着向framebuffer驱动程序传递数据的任务。初始化LCD控制器的寄存器主要是对LCD的PCD、ARM_INYEN、PBUS_WIDTH、OUT_BPP、LCD_TYPE等寄存器进行配置。LCD控制寄存器主要是对屏幕参数、ARM中断使能、并口LCD中片选信号极性、LCD屏类型、时序特性进行配置。主要寄存器如下:
    PCD,配置像素时钟分屏。
    ARM_INTEN,配置ARM中断使能信号。当信号为0时,达到中断产生条件后,不产生送到ARM的中断信号;当信号为1时,达到中断产生条件后,产生送到ARM的中断。
    PBUS_WIDTH,输出数据线位宽,当配置为并口显示屏时有效。
    OUT_BPP,配置BPP位宽。
    LCD_TYPE,配置LCD屏类型选择。00为普通RGB接口TFT显示屏,01为Sharp接口TFT显示屏,10为并口LCD显示屏,11为串口LCD显示屏。
4.2 读取图像信息
    splash_screen函数主要是定义图像的地址,通过framebuffer对图像进行显示。这里将显示的图像放在了U盘文件中,当LK启动时,直接从SDRAM中读取图像信息,并定义bmp图像的地址为0x14000000。图像显示函数如下:
   
    
    
    LCD显示数据大小是由显示模式和显示屏尺寸大小共同决定的。根据设计要求,使用的是320X480个像素、16bpp的256色LCD,显示一屏图像所需的显示缓冲为320×480×16位。在显示缓冲器中,每一个像素都占一个字节,且每个字节又要区分RGB格式。在显示图像时,需要配置相应的寄存器,这些工作在初始化LCD控制器已经完成。其次,确定图像缓冲区的首地址,这个地址在4字节对齐的边界上,而且要在SDRAM的4 MB空间之间,显示缓冲区的数据会直接显示到显示屏上。LCD上显示的不同图像信息就是显示缓冲区内不同数据的输出。

5 LK的测试与调试
    在该模块下编写了一个Makefile文件,在调试LK模块时,可以单独编译LK模块,这样就节约了开发的时间。编译LK模块,得到1k.bin文件。开发板上电后,进入U盘模式,用最新生成的1k. bin文件替换掉U盘中原始的文件,通过超级终端连接串口,启动LK。LK启动打印信息如图4所示,LK能正常工作,并能执行LCD显示驱动。

结语
    本文通过对Bootloader的研究,提出了一种Android详细给出了LCD控制器操作流程和LCD的驱动设计。系统启动正常,运行稳定,达到了设计的要求。尽管LCD手机在LK启动过程中实现LCD显示的设计方案,并且的种类很多,但驱动程序的设计都可以遵循一定的模式,可以根据自己设计的需求选择合适的方法。该方法对Android系统开发具有一定的借鉴意义和参考价值。

关键字:Bootloader  LCD控制器  驱动设计 引用地址:Android平台Bootloader的刷屏功能扩展设计

上一篇:德州仪器推出完整的全新实时操作系统 TI-RTOS
下一篇:Raspbian:最小的操作系统是怎样炼成的?

推荐阅读最新更新时间:2024-05-02 22:31

高频电源模块的驱动电路的设计与研究
 一个理想的IGBT驱动电路应具有以下基本性能:   (1)动态驱动能力强,能为IGBT栅极提供具有陡峭前后沿的驱动电压脉冲;   (2)IGBT导通后,栅极驱动电路提供给IGBT的驱动电压和电流要有足够的幅度,使IGBT的功率输出级总处于饱和状态,瞬时过载时,栅极驱动电路提供的驱动功率要足以保证IGBT不退出饱和区而损坏;   (3)能向IGBT提供适当的正向栅压,一般取+15V为宜;   (4)能向IGBT提供足够的反向栅压,利于IGBT的快速关断,幅值一般为5V-15V;   (5)由于IGBT多用于高压场合,驱动电路必需有足够的输入输出电隔离能力且不影响驱动信号的正常传输;   (6)具有栅压限幅电路,保护栅极不被
[电源管理]
高频电源模块的<font color='red'>驱动</font>电路的<font color='red'>设计</font>与研究
PowerintLNK458KG4.3WPFCLED驱动参考设计(DER297)
    LED驱动器采用LinkSwitchTM-PL系列LNK458KG,主要用于B10替代灯. 115 VAC输入48V输出时的效率大于86%,115 VAC输入96V输出时的效率大于87%,功率因素大于0.95,THD小于15%,起动时间小于300ms.本文介绍了LED驱动参考设计主要优势以及输出48 V/90 mA, 48 V/ 60 mA和96 V/ 45 mA参考设计主要指标,电路图和相应的材料清单.      4.3 W Power Factor Corrected LED Driver (Non-Isolated Buck Boost) Using LinkSwitchTM-PL LNK458KG     This
[电源管理]
PowerintLNK458KG4.3WPFCLED<font color='red'>驱动</font>参考<font color='red'>设计</font>(DER297)
电机驱动电路的两种设计方案解析
针对不同的电机,我们应该选择与之相对应的驱动。简单地来说,功率大的电机应该选用内阻小、电流容许大的驱动,功率小的电机就可以选用较低功率的驱动。电机驱动较常规的方法是采用 PWM 控制。 常见的电机驱动有两种方式: 采用集成电机驱动芯片; 采用MOSFET和专用栅极驱动芯片。 方案一 采用集成电机驱动芯片 通过电机驱动模块控制驱动电机两端电压来对电机进行制动,我们可以采用飞思卡尔半导体公司的集成桥式驱动芯片 MC33886。MC33886 最大驱动电流为 5A,导通电阻为 140 毫欧姆,PWM 频率小于 10KHz,具有短路保护、欠压保护、过温保护等功能。体积小巧,使用简单,但由于是贴片的封装,散热面积比较小,长时间大电流
[嵌入式]
电机<font color='red'>驱动</font>电路的两种<font color='red'>设计</font>方案解析
2440的flash、linux、bootloader
开始拿到2440板的时候不知道norflash ,nandflash等等干什么的,还有SDRAM有是什么,还有linux系统装在哪里,怎么装,supervivi有是什么等等很多的问题,今天大概简单的理清楚这里关系。 首先分开flash与SDRAM,这俩个其实我们都使用过,flash,U盘就是一块flash,主要是掉电不易失,至于norflash和nandflash都是flash只是工艺,读写速度,性能,造价等等不同,一般说nandflash可以做的很大,现在大的可以有几G了,好多开发板上面都是1G的了,而且造价便宜,但是nandflash容易产生坏块。而norflash一般比较小,几M,造价比较贵,但是不容易产生坏块,性能较好
[单片机]
STM32单片机的PSAM卡驱动模块设计
引言 刷卡消费随着人们生活水平的提高已经成为常用的支付方式之一。为了保证刷卡消费的安全性,将PSAM卡内嵌于各种终端刷卡设备中。PSAM(Purchase SecureAccess Module,销售点终端安全存取模块),由IC卡发行主管部门或者应用主管机构发行,是可以用于对IC卡进行脱机消费交易认证的安全认证卡,主要应用于商用POS、网点终端、直连终端等设备上,支持多级发卡机制,适用于多应用的环境,符合识别卡、带触点的集成电路卡标准、ISO/IEC 7816—1/2/3/4以及《中国人民银行PSAM卡规范》。 1 PSAM卡简介 PSAM卡是接触式CPU卡的一种。CPU卡也称智能卡,卡内集成电路带有微处理CPU,存储
[单片机]
STM32单片机的PSAM卡<font color='red'>驱动</font>模块<font color='red'>设计</font>
LM3S9B96的μDMA高速网络驱动程序设计
引言 LM3S9B96是德州仪器针对工业应用设计的Cortex—M3核的微控制器,应用领域包括远程监控、电子贩售机、测试和测量设备、网络设备和交换机、工厂自动化以及火警安防等。LM3S9B96的主频最高为80 MHz,性能可达100 DMIPS,其以太网控制器集成了媒体访问控制器和物理层接口,以太网控制器遵循IEEE 802.3规范,完全支持10BASE—T和100BASE—TX标准。 德州仪器为微控制器LM3S9B96提供了轻量级TCP/IP协议lwIP下的网络驱动程序,该驱动程序使用数据拷贝方式实现网络层与发送FIFO(TX FIFO)和接收FIFO(RX FIFO)之间的数据交换,效率低,无法满足高速网络通信的要求。文中
[单片机]
LM3S9B96的μDMA高速网络<font color='red'>驱动</font>程序<font color='red'>设计</font>
TFT-LCD驱动芯片测试平台的设计和实现
   1 引言   近年来,随着手机和MP4等视频播放器等产品数量迅猛增长,据估计,今年手机的产量就达到10亿台,竞争趋于白热化。对于屏幕显示效果,消费者也提出了更高的要求。显示效果很大的部分取决于驱动IC的质量。显示屏的驱动IC成了很多厂家争夺的焦点。目前国内就有超过二十家的设计公司从事小屏幕显示屏的驱动IC的设计。在每一款的IC量产之前,必须经过反复的调试,以保证各项设置符合设计的要求,并且达到较好的显示效果。设计高速度,调试方便,并且美观的测试平台可以方便的调试出较好的效果,减少调试时间,而且可以给客户耳目一新的感觉,提高产品竞争力度。本论文是针对Focaltech-systems公司开发的TFT_LCD驱动芯片FT150
[安防电子]
TFT-<font color='red'>LCD</font><font color='red'>驱动</font>芯片测试平台的<font color='red'>设计</font>和实现
基于CPLD的数字式大功率激光驱动电源设计
  激光加工主要是利用CO:激光束聚焦在材料表 面使材料熔化,同时用与激光束同轴的压缩气体吹 走被熔化的材料,来完成所需轨迹图形的切割或者相应工艺品表面的雕刻。激光加工属于非接触加工, 具有加工方法多、适应性强、加工精度高、质量好和加工效率高等优点。激光驱动电源作为激光器的 直接控制单元,其光开关响应的最高频率和出光功率稳定和可靠性会直接影响最终的加工效果。基于快速响应和出光稳定的需求,乐创自动化技术有限公司研发了一种基于CPLD的数字式大功率激光驱动电源。    2 、系统组成及其工作原理   2.1 系统组成   基于 CPLD的数字式大功率CO:激光驱动电源 的系统结构如图1所示。该系统主要由主电源、稳压电源、辅助电源、
[电源管理]
基于CPLD的数字式大功率激光<font color='red'>驱动</font>电源<font color='red'>设计</font>
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved