展讯android智能机平台FDL1,FDL2,SPL文件下载问题简析


首先,我们要了解这样一个背景知识:展讯的每颗智能芯片(其他智能机平台应该也是如此)内部都有IROM和IRAM,IROM里有固化的Romcode(用于与PC端工具通讯,下载程序)。

但是......

但是......

由于芯片内部固化的IRAM价格昂贵,容量十分有限,在不同平台上通常只有十几KB到几十KB大小,这么小的内存,是无法支持动辄几百MB的BIN下载的。因此,展讯下载BIN就划分为两级(FDL1和FDL2)下载,利用外部DDR空间大(通常在数十MB到数百MB范围内)的特点,将绝大部分下载代码放到第二级来进行。

 

展讯智能机的FDL1,SPL文件由代码中的chipram文件夹生成,FDL2,UBOOT文件则由u-boot文件夹生成。

好了,背景了解完毕,下面我们来简单阐述展讯平台的下载和开机流程:

系统上电开机,IROM中的Romcode开始运行,检查系统download键是否按下,若是,则进入下载流程,否则进入开机流程:

一.   下载过程

1.      Romcode(0x00000000):与PC通信,下载FDL1到IRAM。FDL1只包含DDR驱动及配置,只需要几KB的运行空间,可以被ROMCODE与下载工具通讯将之下载到IRAM中运行。

2.      FDL1:FDL1被下载到IRAM后,PC指针跳到IRAM的起始地址开始运行FDL1。FDL1首先初始化外部DDRRAM,配置外部DDR的寄存器和时序,然后再与下载工具通讯将FDL2下载到外部DDR中运行。

3.      FDL2:FDL2被下载到DDR中之后,有充足的运行空间,FDL2带NAND/EMMCflash驱动程序,可以初始化FLASH,并把PAC包的其他各个模块都写入到FLASH中。

 

二. 开机过程

1.  Romcode:0x00000000:判断是开机,复制spl到IRAM,并运行spl(包含DDR驱动及配置)

2. SPL:初始化外部DDRRAM,配置外部DDR的寄存器和时序,然后再拷贝uboot到外部DDR中运行

3. UBOOT:带带NAND/EMMCflash驱动程序,带部分设备初始化,复制其他image到DDRRAM,判断开机模式并进入相应模式。

 

 

好了,了解完下载流程,下面,我们将对软件下载过程中遇到的涉及FDL1,FDL2文件的一些问题进行简单分析:

1. 下载工具上FDL1进度条没有走:

(1).软件问题,请首先请检查pc端下载驱动是否安装正确;

(2).操作问题:请首先确认下载操作步骤是否正确,是否已经上电;其次还要确认电脑端口是否有问题,下载数据线是否OK。

 (3).硬件问题:如果你已经在这台电脑上下载过展讯平台的软件,那基本可以确认是硬件的问题了:可能是板子CPU没跑起来;也有可能是板子通讯端口有问题。总之,你把机器丢给硬件的哥们就对了。

 

2.FDL2的进度条没有走:

(1).硬件问题:DDR存储芯片焊接问题,导致完全不通讯---这个可能性比较大。

(2).软件问题:FDL1中的DDR芯片驱动程序问题。请确认DDR芯片类型,容量大小,cs等设置。

 

 

3.FDL2的进度条没有走完或走完后不动了:

(1).硬件问题:DDR存储芯片焊接问题,尤其是虚焊问题。

(2).软件问题:FDL1中的DDR芯片驱动程序问题,包括DDR时序及容量大小bank配置等等----这个可能性比较大。

 

 

额外再插一句,如何调试FDL?FDL中已经有许多UARTlog,因此通过串口log调试最轻松。可以用USB下载,另外再用uart线连手机的uart口。

 

4. 下载system.img进度条没有走完:

软件问题:

(1).uboot中的DDR芯片驱动程序问题,包括DDR时序及容量大小bank配置等等。

(2).uboot中的NAND/EMMCflash存储芯片驱动程序问题

(3).boardconfig.mk中系统模块分区大小问题.


本文结束,希望对您了解展讯Android平台的fdl1,fdl2文件有些许的帮助。

猜你喜欢

转载自blog.csdn.net/linux12121/article/details/75579152