| |
================================
Author: taoyuetao
Email: tao_yuetao@yahoo.com.cn
Blog: http://www.eetop.cn/blog/?11145
07-01-26
================================
这两天具体分析了一下DOC的两种不同型号G3和G4的ipl源码,ipl源码一般情况下都是将spl区的代码
读到ram中,然后跳到spl的首地址,我想改变一下思路,如果将spl代码放到其它bdk分区当中,ipl能否
读取并启动呢?由于m-system不提供DOC内部大部分寄存器的使用说明,所以直接看源码有些麻烦,
咨询了m-system的support人员,他们也没有这方面的代码例子,他们只说他们的所有客户当中,只有
联想有这方面的需求,而且联想是自己开发的,虽然没有现成的源码,但是既然有人能够实现,我就有
一定的信心了。
仔细看了G3和G4的手册,我们使用的是M15(G3)和M25(G4)两种芯片,容量都是128MBytes,虽然容量相同
但是他们的nand flash的结构是不同的,M15是由2片64MB组成的,而M25是由1片128MBytes组成的。具体
来看一下M15flash结构:
M15含有两片64MBytes的flash,每个flash含有2048个block,每个block含有64个page,每个page含有512字节,
以及16个字节的扩展区域。
以上得出的结论是通过手册和看源代码总结出来的,因为手册中只讲了64MBytes的G3芯片是由2片32MBytes的
flash组成的,没有将128MBytes,而按他的推论128MBytes含有4片的话,再看源码很难讲清楚,所以结合
源代码我得出了如上的结论。
M25手册说的很清楚,含有1片flash,含有512个block,每个block含有128个page,每个page含有2048字节,
以及64个字节的扩展区域。
G3和G4的ipl代码都是512K,而实际的ipl代码是256K,因为ipl代码每512字节都会double一下,这样原本256K
的代码变成512K了,以每512字节为double的单位,编译生成的二进制代码如下所示:
|---------------|
| |
| A | 512bytes
| |
|---------------|
| |
| A | 512bytes
| |
|---------------|
| |
| B | 512bytes
| |
|---------------|
| |
| B | 512bytes
| |
|---------------|
| |
| C | 512bytes
| |
|---------------|
| |
| C | 512bytes
| |
|---------------|
原本的二进制代码连续的3个512字节是ABC,经过double后就变成了6个512字节是AABBCC。
今天先写到这里,待续