基于ARM的嵌入式系统的启动都需要引导程序,引导过程可以有两种,一种是先运行小型的bootstrap完成所谓的low level初始化,再调用如Uboot,RedBOOT等功能强大的引导程序进行全面的初始化,设置操作系统内核的加载地址和运行参数等等;另外一种是直接使用Uboot等引导程序两步合成一步完成。bootstrap只是针对ARM CPU进行初始化,直接根据芯片的引脚打交道,不涉及norflash,nandflah,SDRAM 等设备的驱动程序,所以整个程序比较简明易懂;而UBOOT比较庞大,对于初学者而言想一下子完全弄清楚整个脉络,知道移植时候需要在何处增加什么代码是很有难度的,所以建议入门者还是先采用这种分两层引导的结构。下面对ATMEL官方提供的基于at91sam9260的bootstrap进行简要分析。

bootstrap的结构有点类似于UBOOT,其中crt0_gnu.S完成的功能和UBOOT中cpu/arm926ejs下的start.S类似:设置ARM中断向量,如果定义了norflash启动则将bootstrap搬移到SDRAM中,然后设置始终,初始化数据段,bss段,最后跳转到main.c执行。

main.c首先调用hw_init()完成硬件初始化,该部分主要任务完成DEBUG串口配置,这样就可以同串口输出在PC的超级中断上看到运行信息了;接下来配置禁用看门狗后配置时钟和PLL,这个部分的数据很重要,需要仔细查阅数据手册;然后是SDRAM控制器参数设定和协处理器CP15的设置;其次是SDRAM的初始化,主要是根据电路连接设置GPIO的功能。main.c的第二步是根据选择的启动方式复制印象文件到SDRAM中,根据设置的启方式初始化NORFLASH ,NANDFLASH或者是DATAFLASH。第三部分根据需要解压缩映像文件。然后跳转到定义的内核运行地址运行。到此bootstrap功德圆满。

通过对bootstrap源码的阅读有助于理解ARM的启动过程,为裁剪和移植UBOOT源码打下基础。嵌入式的学习还长路漫漫,先写到这,继续学习^_^!

BootStrap运行流程解析相关推荐

  1. Spark SQL之queryExecution运行流程解析Logical Plan(三)

    1.整体运行流程 使用下列代码对SparkSQL流程进行分析,让大家明白LogicalPlan的几种状态,理解SparkSQL整体执行流程 // sc is an existing SparkCont ...

  2. UcosII移植、调度、功能、运行流程解析

    吐槽下csdn的编辑功能,真的菜的抠脚. 接下来,陆陆续续会将语雀的个人笔记搬移到csdn上. 该篇文档过长,建议目录查找关键位置. UcosII是剥夺内核(每个系统节拍会切换到最高就绪优先级任务), ...

  3. QGC关于SetMode运行流程解析

    QGC与飞控连接后初始化,初始飞行模式为手动模式 模式切换在Vehicle中使用_base_mode和_custom_mode存储模式,初始值均为0. 当QGC与飞控连接后,飞控通过心跳包(heart ...

  4. pyspider创建淘女郎图片爬虫任务-运行流程解析

    单步运行运行该任务,第一步爬取多页: 每个页面里面抓取10个淘女郎主页链接: 对每个淘女郎主页详情页面爬取图片链接: 图片全部下载在E:\taonvlang\目录下按淘女郎名称创建文件夹保存.

  5. python爬虫流程-Python爬虫程序架构和运行流程原理解析

    1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息. 获取响应内容 服务器正常响应,将会收到一个res ...

  6. JVM 运行流程、类加载、垃圾回收

    一.JVM 简介 1.JVM JVM 是 Java Virtual Machine 的简称,意为 Java 虚拟机. 虚拟机是指通过软件模拟的具有完整硬件功能的.运行在一个完全隔离的环境中的完整计算机 ...

  7. 2021年大数据Hadoop(二十七):YARN运行流程

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn运行流程 本系列历史文章 2021年大数据Hado ...

  8. SSL/TLS算法流程解析

    SSL/TLS 早已不是陌生的词汇,然而其原理及细则却不是太容易记住.本文将试图通过一些简单图示呈现其流程原理,希望读者有所收获. 一.相关版本 Version Source Description ...

  9. 驰骋工作流引擎Silverlight版本的流程解析执行器-预计在6月份发布

    关键字: Silverlight 驰骋工作流引擎 流程解析执行器 关于silverlight 版本的流程解析执行器的问题 编写人: ccflow 发布日期: 2013/5/20 1, 为什么要开发Si ...

  10. Python爬虫:scrapy 的运行流程和各模块的作用

    scrapy的运行流程 爬虫 -> 起始URL封装Request -> 爬虫中间件 -> 引擎 -> 调度器(Scheduler): 缓存请求, 请求去重 调度器 -> ...

最新文章

  1. ECS应用管理最佳实践
  2. GDAL算法进度条使用说明
  3. Android Studio 导入应用时报错 Error:java.lang.RuntimeException: Some file crunching failed, see logs for de
  4. Kinect开发笔记之一Kinect详细介绍
  5. 怎么运行c语言_C语言 原来是这样调用硬件的
  6. 巧用FlashPaper 让Word文档变Flash
  7. 微信小程序网络通信(一)
  8. 每个日期新用户的次日留存率
  9. nginx http相关配置定义路径相关配置
  10. 用编程语言和计算机沟通
  11. css3 flex流动自适应响应式布局样式类
  12. 暗黑破坏神(DIABLOII 1.11B)BOT 及源代码公开下载
  13. vrep外部控制器力矩控制实例——以matlab脚本控制平面两连杆为例
  14. go revel框架搭建
  15. python英文文本情感分析_sentimentpy模块进行中文文本情感分类
  16. Redis大数据应用场景
  17. Python作业1-高级数据类型
  18. node-sass报错
  19. 解决VS2010闪退问题
  20. win10安装ubuntu16.04双系统(一)

热门文章

  1. GitHub如何生成密钥
  2. Java爬虫爬取京东商城
  3. EXCEL——向上、向下自动填充数据
  4. 密度聚类算法python详解_密度聚类python
  5. 机器学习-DBSCAN密度聚类
  6. matlab机器学习基础
  7. 百元性价比高的蓝牙耳机推荐:学生党适合使用的蓝牙耳机
  8. Python——彩票(大乐透)模拟随机选号
  9. java获取当前周数_java获取周数的方法
  10. FIT2CLOUD飞致云面试总结