cortex A8是基于ARMv7架构的处理器,主频可以达到1GHz。基于cortexA8的处理器有三星的S5PC100、S5PV210,TI的OMAP3530,全志的A10等。我有个想法就是把u-boot的2个阶段的代码独立。第一阶段代码称为硬件相关BL1,第二阶段代码称为硬件无关BL2。手上刚好有块s5pc100的板子,就介绍s5pc100的启动过程并验证。我把启动过程分为3个阶段BL0、BL1、BL2。BL0是固化在内部ROM上电就执行的一小段程序,我把自己写的boot代码,用于引导u-boot称为BL2,把u-boot的第二阶段代码用于引导内核称为BL2。这是我的理解,在接下来我将依次分析BL0、BL1、BL2,并实现BL1代码引导u-boot,BL2移到内核。

一、什么是BL0

BL0(1st boot loader)是固化在内部ROM上电就执行的一小段程序。BL0从系统指定的外部存储器件(NAND、SD/MMC、OneNAND与USB)中加载第二个引导程序BL1到内部RAM,同时对BL1进行安全检验。启动过程如下:

二、BL0做了些什么

s5pc100芯片手册见2.2FUNCTIONAL SEQUENCE,翻译成中文如下

1.初始化PLL和时钟,将其设定为固定值;
2.初始化栈和堆区域;
3.初始化指令Cache 控制器;
4.从外部起动设备中加载BL1;
5.如果起动安全机制开启,则检查BL1数据完整性;
6.如果校验通过,则跳转到0x34010地址处运行;
7.如果校验失败则停止。

三、S5PC100支持的启动方式

根据OM[4:0]、B0[5::0]引脚的配置,可以支持不同启动方式
OM[4]  0:正常模式1:测试模式
OM[3]  0:首先从内部ROM启动1:从Nor Flash启动
OM[2:1]00:第二启动从NAND Flash 01:第二启动从One NAND10:第二启动从MMC/SD卡 11:第二启动从NOR Flash
OM[0] APLL/MPLL输入选择
B0[5] 0:第二启动由OM[2:1]确定1:第二启动从USB(当OM[2:1]为00时从NAND Flash启动)
B0[4] 0:ECC加密1::ECC不加密
B0[3] 0
B0[2] 地址周期选择
B0[1:0]块大小选择 00:Small Block(Page 512)10:Large Block(Page 2048) 11:Dlarge Block(Page 4096)

注如果从SD/MMC起动,BL0将SD/MMC最后的9KB数据加载到0x34000处运行;如果从OneNAND 和NAND起动,BL0将开始的16KB数据加载到0x34000处运行。

参考文章:http://www.tuxi.com.cn/6-132-1327758.html

cortex A8处理器启动分析一引导代码BL0相关推荐

  1. 新年开工第一篇文章——推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器

    //toppic:推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器 // 作者:gooogleman //原文地址:http://blog.csdn.net/goooglema ...

  2. nasm实现的用vmware运行自做的linux启动盘的引导代码

    这个小的代码的编写和运行还是能让自己对系统启动有一个更深的认识,不过有个不懂的就是怎么用ISO镜像文件启动,怎么将引导代码写入ISO镜像文件,依然没有找到很好的方法解决 当计算机电源被打开后,它会先进 ...

  3. DA14580BLE协议栈启动分析(含代码)

    启动过程完成后立即进入main_func函数.该函数在进入主循环while(1)之前,只调用了system_init()函数.system_init()函数里面包含了对看门狗.时钟.外设.检查和读取蓝 ...

  4. 【原创】gooogleman亲自参与设计的三星Cortex A8 S5pv210 之Sate210核心板硬件用户手册(作者:gooogleman)...

    作者:gooogleman                                 时间:2011.09 从2011年四月份开始筹划设计一款S5pv210方案至今,已经有五个多月,期间还做了一 ...

  5. sparc处理器开发工具_SPARC处理器启动代码的分析与编程

    SPARC 处理器启动代码的分析与编程 吴景红 ; 李朋 ; 刘柳柳 [期刊名称] <机电产品开发与创新> [年 ( 卷 ), 期] 2008(021)006 [摘要] 优秀的启动代码的编 ...

  6. Cortex A8 LED 点亮程序分析

    1     Cortex A8 LED 点亮程序分析 1.1     环境搭建准备工作 软件环境:            1.下载eclipse软件(绿色软件) 2.安装"yagarto-b ...

  7. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  8. BSP板机支持包、linux启动分析、ARM裸机编程

    文章目录 一.BSP 二.驱动 驱动的基本要素 三.启动分析 1.uboot 2.uboot的作用 3.uboot相关命令 关键的内容: 1)bootargs,启动参数 2)启动命令 3)修改启动延时 ...

  9. norflash/nandflash 启动分析

     S3C2440和S5PV210是很多 嵌入式爱好者入门的arm处理器,网上的资料也很多.今天我们就来聊聊S3C2440和S5PV210的启动流程,上一篇博客我介绍了uboot在norflah上的 ...

最新文章

  1. 清华伯克利造出机械小强:承重200万倍踩不死,跑得和真蟑螂一样快
  2. Git 、CVS、SVN比较
  3. python基础补充内容
  4. 大数据WEB阶段(十六)JavaEE三大 核心技术之监听器Listener
  5. 基础算法 —— 排序算法
  6. Window10 NVIDIA显卡 Tensorflow 2.1 GPU 安装和测试
  7. Hanoi 汉诺塔——通俗易懂地讲解(c++)
  8. ajax 前端报错,Django ajax 发送post请求 前端报错解决
  9. 利用AjaxPro从客户端调用服务端函数的方法
  10. openstack实例启动失败_Nokia NESC,这是世界上最大的OpenStack私有云之一
  11. mysql将日期转换年份_mysql将日期转换为当前年份的相同日期
  12. win10多合一原版系统_微软Win10专业版制作多合一系统安装盘教程
  13. pdf关键字搜索盖章,长关键字定位
  14. 12306为什么买票这么难
  15. 国家开放大学人文英语4
  16. 前端实现炫酷动效_7款纯CSS3实现的炫酷动画应用
  17. CS书籍、代码资源下载网址
  18. ASP.NET Core MVC 之局部视图(Partial Views)
  19. 敏捷迭代管理 --需求变更规范
  20. 腾讯云API接口鉴权v3 鉴权失败问题 AuthFailure.SignatureFailure

热门文章

  1. 联想笔记本长时间不用后无法充电问题及解决
  2. Hexo 博客 github.io MD
  3. 衬衫怎样搭配好看?韩版衬衫女装搭配小技巧
  4. 大数据处理 - Overview
  5. html5云朵效果,纯CSS3打造逼真的多层云彩动画特效
  6. vue 大小端,十六进制转十进制
  7. 宠物养成项目c语言文档,宠物养成游戏.docx
  8. Arthas 使用详解
  9. 1407: 上三角矩阵的判断
  10. [Unity Mirror] General