S5P4418启动镜像分析

来源:互联网 发布:kerasys洗发水知乎 编辑:程序博客网 时间:2024/05/17 04:17
注明:本文是基于深圳九鼎创展X4418开发板,不确定适用于所有厂家4418开发板.

        前一章我们简单讲了一下怎么通过硬件来配制芯片启动方式,在硬件配制好后自然要了解一下这个软件启是过程是怎么样的。接触过S5P4412的朋友一定都知道IROM boot启动,烧写启动代码时有四个文件要烧写(BL1,BL2,u-boot.bin,TSZW.其实4418也一样采用的是IROM启动方式,但是镜像这一块还有有点不一样,因为s5p4418不支持trustzone功能,所以在烧写代码时就没有TSZW这个文件。

        启动过程其实比较简单,如下图:

 


  1. 芯片电上

  2. 当上电后运行的第一个代码就是IROM里的代码,加为芯片里面都有一个小的ROM存储空间,里面是有代码的,具体做些什么也没有看到有介绍资料,但是估计也和4412一样,侦测启动脚的配制,从启动存储里抓取2nboot代码。

  3. 运行内部RAM 中的2nboot代码(复制u-boot.binDDR3中)

  4. 运行u-boot.bin

上面就是一个代码运行的过程。

        知道上面的一个流程我们再来对比的一下S5P4412S5P4418镜像有什么区别

S5p4412

S5p4418

BL1.bin

2nboot.bin

TSZW.bin

NC

BL2.bin

u-boot.bin

u-boot.bin

从这个图表中我们就很易容看出来两平台的镜像有什么区别,4412BL1相当于44182nboot.bin.但是s5p4412 BL2.bin+u-boot.bin相当于s5p4418u-boot.bin

其实4418中还有一个很重要的文件NSIH.TXT.这个文件也算是启动镜像的一部分。如果少了这个你的u-boot同样跑不起来。这样就很清楚了其实s5p4418里也有三个文件2nboot.bin,u-boot.bin,nsih.txt.

        我使用的是九鼎的4418开发板,九鼎在uboot编译的时候已经把这三个文件打包成了一个文件ubootpak.bin。这样我们只要写一个文件就可以了。这三个文件是怎么存放的呢?

加为开发板上是EMMCEMMCSD卡其实是一样的,block 0是卡的相关信息,这部分是不能改的,如果改了block 0卡可能就费了。大家一家要注意。所有的有镜像文件都是烧写在block 1以后的。

下面是一个镜像在EMMC中分布图:

Block 0

Sd/emmc卡信息

Block 1

Nsih.bin

Block2

2nboot.bin

Block63

Nsih.bin

Block64

u-boot.bin

这样看就比较清楚看镜像所以具体位置。

        U-boot.bin可能大家都知道,这是用u-boot代码编译出来的,这个我就不介绍了。我们来简单说一个nsih.bin这个文件。

        Nsih.bin这个文件其实就是对芯片一些简单寄存器的配制,包括(启动方式,PLL,DDR)。

这是我从nsih.txt中截取的一段。

// Vector Code Area      

{设置值} {地址}   {注释}                                                  

E59FF018//0x000 : MOV PC, ResetV                                                                              

E59FF018//0x004 : MOV PC, UndefV                                                                             

E59FF018//0x008 : MOV PC, SWIV                                                                                 

E59FF018//0x00C : MOV PC, PAbortV                                                                            

E59FF018//0x010 : MOV PC, DAbortV                                                                                    

E59FF018//0x014 : MOV PC, NotUsed                                                                                    

E59FF018//0x018 : MOV PC, IRQV                                                                                  

E59FF018//0x01C : MOV PC, FIQV

我已经用红色的标注了各列是什么。我们最终要写入EMMC/SD中的就是前面的这个值。从nsih.txt这个文件中来看我们并不清楚怎么来设定相关的值,这个大家不用担心,三星已经提供了一个excel表格给大家,大家只要通过个表格来设置就自动生成nsih.txt文件。

        2nboot.bin这个文件也是一样,我们可以在android代码中找到一个2NBOOT文件夹。是编译这个代码来生成的。

        好这一节先介绍到这里,这样大家会更明白怎么来烧写镜像。无论是用专门的工具还是我们直接在ubuntu下用dd命令来烧写我们都可以实现。

0 0
原创粉丝点击