本文档对Cortex-A8芯片Bootloader进行分析研究,借此实现以下三个目的:
- 用A8芯片构成一个最小系统需要做哪些配置
- 配置的具体流程是什么
- 对A8芯片的架构做初步的探讨
综述
AM335X芯片采用SD卡启动时,其SD卡中需放置两个文件:MLO和app。其中,MLO即为bootloader编译产生的bin文件,app为应用层程序编译产生的bin文件。由此猜测,bootloader应该实现两个方面的功能:一是完成配置硬件的配置,搭建运行环境;二是引导应用程序的启动,为应用程序提供入口点。研究验证了这种猜想,对bootloader的论述也围绕这两方面展开。
2.bootloader配置流程
整个bootloader配置流程如下:
3.bootloader中芯片底层配置
如上图所示,bootloader中底层配置经历三个过程,分别是模块电压配置,系统时钟配置以及RAM配置。
3.1电源配置模块
A8芯片的电源系统非常复杂,就目前了解的情况看,分为核心电压区,MPU电压区,AD转换电压等等,各个模块电压供电值亦不相同,需要对其进行配置。beaglebone开发板上采用一枚TP65217电源管理芯片来实现电源的管理,该芯片作用是将5V输入或者USB输入电压转换为各个模块需求电压。如下图所示:
注意,该芯片配置接口为I2C,A8芯片正是通过I2C接口实现对该芯片的访问和配置的,具体的流程,一方面需要配置A8芯片上与TPS65217芯片相连的I2C总线,另一方面需要对该款电源芯片的功能做详细的了解,这两部分尚未深入探讨。
3.2系统时钟的配置
这一部分主要配置系统的时钟,A8的时钟结构较为复杂,从代码上理解,配置的流程依次为:MPU时钟初始化,核心模块时钟初始化,外设时钟初始化,DDR时钟初始化,接口时钟初始化,电源管理区时钟初始化以及显示模块时钟初始化。初始化的流程一定程度上反映了A8时钟模块的结构(类似于树状),这一部分需要花时间去理清。
3.3 外部RAM配置
A8芯片的EMIF(External Memory Interfaces外部存储器接口)模块专门负责对外部RAM的管理,配置该模块即可。
至此,A8底层配置完成,一个最小系统搭建完成。
最小系统搭建完成之后,即可引导进入应用程序,这一部分内容后面再分析。