嵌入式Linux裸机开发(二)——S5PV210启动过程分析

一、iROM启动方式简介友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅三星官方S5PV210文档s5pv210_irom_applicationnote_preliminary可知,iROM启动方式支持从MoviNAND/iNand, MMC/SD Card ,pure Nand, eMMC, eSSD, UART and USB等存储设备启动。

1、硬件支持需求使用iROM启动方式有几种硬件需求:A、基于CortexA8的S5PV210X微处理器B、64KBiROMC、96KB iRAMD、通用的SDRAM和控制器E、4/8 Bit的高速SD/MMC控制器F、4-bit SD / 4-bit MMC / 4 or 8-bit eMMCG、Nand Flash控制器H、OneNand控制器I、eSSD控制器J、UART/USB控制器

2、启动模式A、OneNand启动(Mux/Demux)B、Nand启动(支持8/16-Bit ECC)C、MMC启动(MMC4.3标准,兼容eMMC)D、eSSD启动E、UART/USB启动安全启动模式支持:对除UART/USB外的所有启动设备的BootLoader采用整体校验,安全秘钥值写在S5PV210内部,如果安全秘钥值没有写在S5PV210内部,则为非安全启动模式。三星在制造阶段就将安全秘钥值写入到了S5PV210内部。第二启动模式支持:当第一启动模式(安全启动模式)失败后,就会试图从4 bit的SD/MMC通道2通过SD/MMC启动。

3、iROM启动方式的优点A、降低BOM(材料清单)成本iROM启动支持从Movinand/iNAND/MMC/eMMC Card, eSSD设备启动,系统无需启动介质就可以启动,不需要像nor flash这样的启动设备。B、改善读特性采用iROM启动方式从nand flash启动时,S5PV210支持8/16-bit H/W ECC。但是16-bit ECC仅支持4KB 5cycle的Nand。C、降低生产成本能从其他启动设备烧录启动设备,无需Gang programmer烧录器

4、电路设计A、使用OM引脚选择iROM启动设备B、所有的S5PV210启动设备都可以从MMC通道2使用SD/MMC设备以第二启动方式启动。C、OneNand启动时,Xm0CSn4/NFCSn2/ONANDXL_CSn0信号必须有效。BL1代码段起始处必须是BL1的校验数据。D、Nand启动时,Xm0CSn2/NFCSn0信号必须有效。BL1代码段起始处必须是BL1的校验数据。E、SD/MMC/eMMC启动时,MMC通道0分配给第一启动模式使用,通道2分配给第二启动模式使用。BL1代码段起始处必须是BL1的校验数据。F、UART启动使用串口端口2

二、iROM启动流程S5PV210启动过程分为BL0、BL1、BL2三个阶段,S5PV210内部有96Kb的IRAM和64Kb的IROM。S5PV210启动过程如下图:第一步:iROM初始化,初始化系统时钟、特殊设备控制寄存器和启动设备第二步:iROM启动代码加载BL1(bootloader)到iRAM,在安全启动模式下iROM对BL1进行整体校验。第三步:执行BL1,BL1加载BL2(剩余的bootloader)到iRAM,BL1将会对BL2进行整体校验。第四步:执行BL2,BL2初始化DRAM控制器,加载kernel到SDRAM第五步:跳转到OS起始地址,进入系统

1、BL0启动阶段在BL0阶段初始化的内容如下:1、关闭看门狗2、初始化icache3、初始化栈(设置中断栈、SVC栈)4、初始化堆5、初始化块设备copy函数6、初始化PLL和设置系统时钟7、拷贝BL1到iram8、校验BL1,如果校验失败,将从SD卡启动9、检查是否是安全启动模式10、跳转到BL1的地址

2、第一启动模式启动流程安全启动模式(第一启动模式)的启动过程:

3、第二启动模式启动流程第二启动模式的启动过程:

4、UART启动模式S5PV210 iROM支持串口下载功能,串口下载一般通过发送校验位到DNW进行校验,不关心启动设备。对于串口下载来说不需要选择信号。为了避免串口超时错误,用户需要在开发板电源打开之前设置DNW配置,也就是当BL1代码被选中,下载进程启动时,iROM就应该被启动。

5、USB启动模式S5PV210 iROM支持USB下载功能。如果串口超时发生,iROM会试图从USB模式启动。为了避免USB协商超时错误,用户必须预先用USB线连接好目标开发板和PC。如果USB连接好,用户就能通过USB线下载BL1镜像到开发板。在UART、USB启动模式下BL1不需要头信息,BL1代码的基地址是0xD0020000。在其他启动模式下,BL1必须有头信息,BL1代码的基地址是0xD0020010。

三、iROM启动的其他细节

1、iROM内存分配

2、全局变量如果用MMC设备启动,MMC卡的信息必须保存在特殊区域。

2、设备拷贝函数S5PV210内部有一段用于启动设备的块拷贝函数的ROM代码,因此开发者不需要实现设备拷贝函数。这些内部函数能从存储设备中拷贝任何数据到SDRAM,用户在iROM启动过程完成后仍然可以使用这些函数。

2、启动设备启动扇区分配SD/MMC/eSSD设备启动扇区分配eMMC设备启动扇区分配OneNAND/NAND设备启动扇区分配如果从Nand启动,Nand ECC数据应该项如下设定:对于8bit ECC来说,ECC数据大小是13字节对于16bit ECC来说,ECC数据大小是26字节,但是对于每一种Nand flash,ECC的大小是不一样的,因此需要去查阅Nand flash的数据手册。

2、启动代码的头信息数据BL1必须有头信息数据,头信息数据是用于通过iROM复制BL1到iRAM中使用,头信息数据有两种信息,一种是BL1的大小,一种是BL1数据校验。当加载BL1时,iROM检查位于头数据中的BL1的大小,拷贝BL1到iRAM。拷贝完BL1后,iROM计算拷贝的BL1的数据和,与位于BL1头数据信息中的校验和数据进行比较。如果成功,BL1启动,否则iROM将会试图从SD/MMC通道2端口的第二启动模式(4-bit SD/MMC)启动。计算数据校验和的代码如下:for(count=0;count< dataLength;count+=1){buffer = (*(volatile u8*)(uBlAddr+count));checkSum = checkSum + buffer;}Count:无符号整型dataLength:BL1的大小buffer:从BL1读取1字节数据的存储变量Checksum:BL1的校验和

2、时钟设置S5PV210只有24MHZ的外部晶体振荡器可用。本博文翻译自:三星S5PV210官方S5PV210_iROM_ApplicationNote文档

嵌入式linux s5pv210,嵌入式Linux裸机开发(二)——S5PV210启动过程分析相关推荐

  1. Linux学习——总结ARM裸机开发步骤

    本文仅介绍一些基础概念. 我们常用的开发平台是在x86,这个是Intel推出的架构.在x86平台上的开发步骤,不管是什么软件,无外乎建立工程->写代码->保存->编译->运行, ...

  2. 【安卓开发 】Android初级开发(二)Activity启动模式

    Activity页面跳转在业务逻辑页面添加以下代码 //跳转到下一个activityIntent intent = new Intent(this,MainActivity2.class);start ...

  3. 嵌入式linux启动过程分析,嵌入式Linux裸机开发(二)——S5PV210启动过程分析

    嵌入式Linux裸机开发(二)--S5PV210启动过程分析 一.iROM启动方式简介 友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅 ...

  4. arm-linux-gcc 裸机程序,Linux下ARM裸机开发-交叉工具链

    初识linux下ARM的裸机开发全过程.现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发.一般情况下我们进行的系统上的开发. ...

  5. jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

    一直想摆脱windows环境,在纯linux下进行arm裸机开发,但是由于一直不知道JLink如何在linux下运行和配置,一直无法进行下去. 以前都是windows+AXD调试.包括本人用的FL24 ...

  6. 嵌入式Linux裸机开发(六)——S5PV210时钟系统

    嵌入式Linux裸机开发(六)--S5PV210时钟系统 一.时钟系统简介 外设工作需要一定频率的时钟,这些时钟都由系统时钟提供.系统时钟一般由外部低频24MHZ晶体振荡器通过锁相环电路PLL倍频产生 ...

  7. 嵌入式linux备份flash,嵌入式Linux裸机开发(十一)——Nandflash

    嵌入式Linux裸机开发(十一)--Nandflash 一.Nand Flash简介 NandFlash是Flash的一种,具有容量较大,改写速度快等优点,适用于大量数据的存储.NandFlash没有 ...

  8. linux编译运行uart,嵌入式Linux裸机开发(七)——UART串口通信

    嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTE ...

  9. 嵌入式Linux裸机开发(五)——SDRAM初始化

    嵌入式Linux裸机开发(五)--SDRAM初始化 一.SDRAM初始化流程 S5PV210有两个独立的DRAM控制器,一个最大支持512MB,一个最大支持1024MB,但两个控制器必须支持相同类型的 ...

最新文章

  1. 设计原则交互思维,重塑产品设计
  2. python练习题:列表排序
  3. JVM内存原理及高级特性
  4. mysql 混合模式,SQLServer2005混合模式登录配置(用户登录错误18452,233,4064)
  5. 【学习笔记】路由算法与路由协议:RIP协议与距离向量算法、OSPF协议与链路状态算法、BGP协议
  6. vc6可编译的 linux 源码,winpcap+vc6编译环境配置,以及获取网络设备列表的源代码...
  7. mysql binlog c++_MySQL binlog的格式解析
  8. 用ObjectProxy扩展模型对象
  9. Coding Problem 模拟
  10. PHP相等(==双重等于)和标识(===三次等于)比较运算符有何区别?
  11. 2 4G高频PCB天线设计
  12. 单片机电子密码锁C语言程序,以STC89C52单片机为核心的电子密码锁设计
  13. 算法编程10:岛屿的最大面积
  14. win7搜不到特定网络
  15. 社区儿童计算机活动总结,幼儿园与社区活动总结
  16. 检查python是否安装成功
  17. WebSocket实现在线聊天
  18. FTP之PASV与PORT
  19. 软考相关学习考试网站
  20. 天池大赛-心跳信号分类预测:建模与调参

热门文章

  1. 黄金跳槽期到了,一个优秀程序员的简历应该怎么写
  2. 可能是推荐系统最详细且简单的入门教程
  3. linux包含权限压缩文件与解压缩
  4. 魔力宝贝手游版服务器维护,魔力宝贝手游2017年7月7日维护到几点 苏伦莉娅弓箭手回归...
  5. bash与source
  6. 阿里云StreamCompute流计算架构
  7. 三级运算在计算机,计算机等级三级(A)笔试试卷及答案
  8. keyshot渲染图文教程_Keyshot 渲染视频教程 入门到精通实用实例教材全套
  9. 海康播放器sdk开发中的PlayM4_SetDecCallBack函数的调用
  10. 【Java】设计模式之单例模式与工厂模式