【OK210试用体验】S5PV210启动流程 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】S5PV210启动流程

本帖最后由 q15920078530 于 2015-7-30 11:18 编辑

【OK210试用体验】S5PV210启动流程
   
学习任何一款处理器,对于熟悉它的启动运行流程还是比较重要的,因为可以帮助学习者在后面对裸机编程、bootloader的移植起到思路引导作用。
    现在还不谈bootloader的移植和操作系统内核的移植方面的,对于裸机编程,个人觉得学习一些常用的汇编还是相当有益处的,不仅是对底层进一步了解,思维方式也得到提高。这里推荐给大家基本书籍:[深入浅出嵌入式底层软件开发]、[嵌入式Linux应用开发完全手册]。当然,只是够用的话,只需学习前面一两章的内容,也不用详细看,不懂的可以查的嘛。

   了解S5PV210,当然是要找它的父亲三星大人啦,可以参考官方手册,这里附上 S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf (698.31 KB, 下载次数: 0) 。飞凌官方带的光盘资料有带,在F:OK210 V1.1三星原厂资料s5pv210HWApplication Note目录下。

    在2.operate下,Figure 1. Overall boot-up diagram为S5PV210的详细启动流程图。

    图中有标号,这样让我们更容易分析理解其中的流程。

    整个启动的流程大概可分为以下几部分:
          ① iROM做硬件初始化:初始化系统时钟、设备具体的控制器、引导设备;
          ② iROM中的引导程序将bootloader拷贝到SRAM中,这部分bootloader叫做BL1;
          ③ BL1程序被执行,并且拷贝保村BL2到SRAM中;
          ④ BL2程序被执行,初始化SDRAM并且拷贝OS到SDRAM中;
          ⑤ 最后跳转到OS的起始地址,运行OS。

详细分析
     1. 首先是从S59V210内部的iROM开始,iROM也就是internal ROM,为三星出厂S5PV210的自带ROM,里面固化了叫做BL0的代码,上电后初始化需要的硬件。
     ① 关闭看门狗
     ② 初始化指令cache
     ③ 初始化堆和栈
     ④ 初始化块设备
     ⑤ 初始化PLL、设置系统时钟
     ⑥ 拷贝BL1程序到内部SRAM中
     ⑦ 验证BL1的校验和。如果校验失败,iROM将尝试第二种引导模式(可见下图)
     ⑧ 校验是否处于安全引导模式下
     ⑨ 跳转到BL1的起始地址
   具体的iROM的程序运行流程可看下图:
      
      从内存的映射图可知,我们自己写启动时的 内存映射图可以知道我们自己写BL1BL1 需要 16 Byt的头信息 ,这16字节的头信息格式在图中已经明确定义:
                     0x0 :BL1BL1 的大小
                     0x4 :0(规定)
                     0x8 :校验和
                     0xc 0xc:0(规定)
        有了这 16 字节的头信息, BL0BL0 就知道拷贝多大的 就知道拷贝多大的 BL1BL1 到内部 到内部 SRAM SRAM ,并且可以验证 BL1BL1 的数据是否 的数据是否 完好无损。
        系统时钟的初始化也是相当重要的,官方也给出了建议:

         在手册中我们可以知道,对于校验和代码,可以这样来编写:
                    for(count=0;count< dataLength;count+=1)
                    {
                             buffer = (*(volatile u8*)(uBlAddr+count));
                             checkSum = checkSum + buffer;
                    }
          其中:coun:unsigned int 类型 .
                     dataLengt:unsigned int 类型 .BL1的大小(Byte)
                     buffe unsigned short 类型 ,从 BL读到的 Byte数据
                     checksuunsigned int类型 ,BL1 的校验和

      2. iROM完成任务之后是进入BL1程序,BL1会引导BL2到SRAM中运行,最后加载OS到SDRAM中运行。

       在iROM整个初始化过程中、初始化可谓是方法众多,OneNAND、NAND、SD/MMC and eMMC、eMMC、NOR、UART/USB。常见的我们可以用SD卡来烧写程序。 我们可以按照官方给的方法来安排布置块程序的分配,将程序烧写到SD卡中,每个块的大小是 512 Byte。对于block0保留和BL1烧写到Block1中,这是其中强制要求的,但是对于BL2和 Kerne的布局的要求只是建议性的。

        这是官方给的详细的启动流程,但是对于我们来说,烧写一个bootloader的大小起码要200 Byte,而官方对于BL1和BL2是可变大小,而最大是16K和64K,所以我们在移植bootloader的时候可能就用以下流程来完成我们所需要的任务:我们实际的流程是:在 我们实际的流程是:在 BL1BL1 中初始化时钟、 DRAMDRAM 控制器,拷贝 控制器,拷贝 BL2BL2 到外部 DRA ,跳转到DRAM 中执BL2 BL2 加载 OS 到 OS 的起始地址执OS 。

         了解了S5PV210的启动流程,对于我们之后的深入学习具有深大的影响,接下来我们将针对流程中的具体细节进行学习剖析,比如硬件初始化方面的逻辑程序,或者说驱动部分,然后是bootloader的移植,OS的移植。真正意义上的学习即将开始,哈哈。


1个回复

abclixu123 发表于 2015-8-1 12:37:46
MARK,期待楼主分享更多好东西。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-4-24 10:19 , Processed in 0.479643 second(s), Total 37, Slave 25 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表