"本文主要介绍了手机映像的组成和开机上电流程,特别是针对MTK(MediaTek)手机平台。内容涵盖了映像的各个部分及其功能,以及从启动到操作系统运行的关键步骤。"
手机映像的构成是手机开机过程中至关重要的部分。在MTK手机平台上,映像主要包括以下几个关键组件:
1. Contentlist映像的烧写:这部分涉及到手机映像的实际烧录过程,Contentlist映像是指手机系统中的所有文件和数据,它们会被烧写到特定的存储区域,如NAND Flash。
2. PRELOADER(预加载器):预加载器是启动流程中的第一步,它负责处理下载和安全启动的过程。它的任务包括初始化平台依赖的硬件,如内存控制器(EMI)、锁相环(PLL)、GPIO等,以及加载UBOOT到SDRAM中。
3. DSP_BL(DSP引导加载器):手机中通常包含两种类型的DSP,应用DSP(用于音频和视频编码解码)和mDSP(用于无线通信的调制解调)。DSP_BL是专门为DSP部分设计的图像下载器,确保这些处理器的正确启动。
4. UBOOT(第二加载器):UBOOT是开源的微内核引导加载程序,负责大部分硬件初始化工作,如设置ARM处理器的工作模式、关闭看门狗、设置中断向量、分配堆栈等。此外,它还控制NAND Flash控制器、LCD模块(LCM)、网络接口和USB设备,并根据开机模式(normal, recovery, factory mode, meta)引导操作系统。
5. 其他组件:包括BOOTIMG(可能包含Bootloader和Kernel)、RECOVERY(恢复模式映像)、SEC_RO(安全只读分区)、LOGO(开机logo)、ANDROID(Android系统映像)和USRDATA(用户数据分区)等,它们共同构成了手机系统的基本结构。
开机上电流程通常如下:
1. BOOTROM(Boot ROM)阶段:这是硬件启动的第一步,BOOTROM固化的代码会加载DA(Download Agent)到ISRAM,并通过UART接口与主机(PC)交互,下载IMAGE。
2. DA阶段:DA负责进一步的映像下载,包括UBOOT和其他必要文件。
3. Bootcode阶段:Bootcode不依赖中断,通过UART与主机通信,配置NFI(Non-Volatile Flash Interface)时序和NAND命令来读取NAND Flash上的数据。
4. Pre-loader阶段:Pre-loader在SDRAM中初始化硬件,加载UBOOT并跳转执行。
5. UBOOT阶段:UBOOT执行后,继续完成硬件初始化,加载Boot.IMG到SDRAM,并跳转到BOOT.img执行,至此,操作系统启动准备就绪。
6. 启动操作系统:最后,系统会根据设定的启动模式加载相应的内核和用户空间应用程序,完成整个开机过程。
这个过程涉及到的技术细节复杂且严谨,确保了手机从按下电源键到用户界面的无缝过渡。了解这些基础知识对于进行手机系统开发、故障排查或性能优化至关重要。