Linux系统的引导:
一个SOC拿过来,它是有内部BROM和SRAM的,这个BROM中会固化芯片厂商的最初引导代码,我们叫它RBL(ROM boot loader),它是SOC上电后开始运行的地方,它会判断是哪种启动方式,如果是nand启动,就会从nand的起始地址处读取UBL(user boot loader)并且复制到ARM的内存里面,也就是上面说的片内SRAM,UBL运行在ARM的内存里,初始化系统,例如初始化DDR.然后UBL从NAND Flash里面读取U-Boot的内容并且复制到DDR里运行.DDR里面运行的U-Boot又从NAND Flash里面读取Linux内核代码,并且复制到DDR上,然后启动内核.
裸机程序的执行
对于裸机程序,我们首先把它烧写在nand flash的起始处,那么在下次上电启动时的执行过程是这样的,也是从BROM开始执行,BROM会从nand flash中读取内容到SRAM中,然后开始执行,这样会限制裸机程序的大小不能超过SRAM的大小。如果超过,我们就要另想办法,只能先写一个UBL(user boot loader)(小于SRAM的大小),在UBL中先初始化系统,特别是片外RAM,然后把我们的裸机程序mov到片外RAM上进行跳转执行。

从上面的介绍可以看出,两种方式有相似的地方,从本质上讲,linux内核也可以看成是一个很大的程序,它的引导与普通逻辑程序是一样的。

arm裸机程序启动流程相关推荐

  1. ARM 之八 Cortex-M/R 内核启动过程 / 程序启动流程(基于IAR)

      在前面的文章<ARM 之 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC)>中已经介绍过了 Cortex-M/R 内核相关内容.这里基于 IAR 的启动流程与之前 ...

  2. ARM裸机篇---启动代码分析

    ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码. 下面的代码先暂且这样吧,没啥注释的,时间关 ...

  3. springboot中获得app_Spring Boot 应用程序启动流程分析

    SpringBoot 有两个关键元素: @SpringBootApplication SpringApplication 以及 run() 方法 SpringApplication 这个类应该算是 S ...

  4. golang程序启动流程详解

    golang程序启动流程详解 环境 go1.16.5 linux/amd64 用例 package mainimport "fmt"func main() {fmt.Println ...

  5. ARM 之九 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC、Keil)

    内核规范   ARM Cortex-M/R 内核的复位启动过程也被称为复位序列(Reset sequence).ARM Cortex-M/R内核的复位启动过程与其他大部分CPU不同,也与之前的ARM架 ...

  6. ARM 之九 Cortex-M/R 内核 Keil(ARMCC) 程序启动流程

    内核规范   ARM Cortex-M/R 内核的复位启动过程也被称为复位序列(Reset sequence).ARM Cortex-M/R内核的复位启动过程与其他大部分CPU不同,也与之前的ARM架 ...

  7. ARM芯片上电启动流程

    下图是大多数开发板所有的一个存储单元框架,接下来以此图为基础描述ARM芯片的上电启动流程. 我们首先来了解几个关键词: IROM (Internal ROM):芯片内部固化存储代码的存储器 IRAM ...

  8. Arm芯片上电启动流程剖解

    关键字: stepping stone:(可以看做是Internal RAM) IROM (Internal ROM):固化在CPU内部ROM里的一段代码,它的运行叫做BL0. IRAM: 因为IRO ...

  9. 【笔记】ARM裸机程序开发_part1

    ARM裸机开发的一些基础知识,基于x210开发板 课没有认真听完,也没接触过裸机的项目可供上传,但是了解一下总是好的=v= 授课老师:朱有鹏 听课辣鸡:宕机酱 ==================== ...

最新文章

  1. Docker配置指南系列(二):指令集(二)
  2. 架构与思维:系统容量设计
  3. vuex-along解决vuex中存储的数据在页面刷新之后失去的问题
  4. 不同路径—leetcode62
  5. 项目经理的职责(转载)
  6. 对软件测试的认识你了解多少
  7. Markdown 基础学习
  8. 《PWA实战:面向下一代的Progressive Web APP》读书笔记
  9. 用python重构策略模式
  10. 跨域问题时的Filter无效
  11. elasticsearch设置为windows系统服务
  12. 快闪族 - 百度百科
  13. 日志收集之nxlog
  14. Typora使用简介与插入数学公式
  15. 基于雷电模拟器利用python制作手游脚本 (神都夜行录,古剑奇谭木语人) (一)
  16. arduino超声波测距接线图详细_Arduino Uno + HY-SRF05 超声波测距模块详细讲解演示实验...
  17. DOS和Debug常用命令
  18. SPI NAND flash 简介
  19. 商场室内地图导航如何实现,便捷、低成本智慧商业综合体一站式解决方案
  20. 华为路由交换堆叠(通过堆叠卡)

热门文章

  1. 如何提升 Web 应用的代码质量
  2. java飘落的雪花_[Java教程]树叶飘落、雪花飘落等同时多个图片飘落
  3. pandas一列拆分成多行
  4. EasyCVR搭建视频安防综合运维管理平台,联合集成商打造专业视频解决方案
  5. 有什么哪些便宜的云服务器推荐?
  6. VMware发表新版桌面虚拟化软件View 3
  7. pdf水印去除和word转换
  8. 《GEB-EGB》-人工智能
  9. 倒计时器java介绍_JAVA软件工程师-倒计时器
  10. 日语输入法键盘假名对应表