arm裸机程序启动流程
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裸机程序启动流程相关推荐
- ARM 之八 Cortex-M/R 内核启动过程 / 程序启动流程(基于IAR)
在前面的文章<ARM 之 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC)>中已经介绍过了 Cortex-M/R 内核相关内容.这里基于 IAR 的启动流程与之前 ...
- ARM裸机篇---启动代码分析
ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码. 下面的代码先暂且这样吧,没啥注释的,时间关 ...
- springboot中获得app_Spring Boot 应用程序启动流程分析
SpringBoot 有两个关键元素: @SpringBootApplication SpringApplication 以及 run() 方法 SpringApplication 这个类应该算是 S ...
- golang程序启动流程详解
golang程序启动流程详解 环境 go1.16.5 linux/amd64 用例 package mainimport "fmt"func main() {fmt.Println ...
- ARM 之九 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC、Keil)
内核规范 ARM Cortex-M/R 内核的复位启动过程也被称为复位序列(Reset sequence).ARM Cortex-M/R内核的复位启动过程与其他大部分CPU不同,也与之前的ARM架 ...
- ARM 之九 Cortex-M/R 内核 Keil(ARMCC) 程序启动流程
内核规范 ARM Cortex-M/R 内核的复位启动过程也被称为复位序列(Reset sequence).ARM Cortex-M/R内核的复位启动过程与其他大部分CPU不同,也与之前的ARM架 ...
- ARM芯片上电启动流程
下图是大多数开发板所有的一个存储单元框架,接下来以此图为基础描述ARM芯片的上电启动流程. 我们首先来了解几个关键词: IROM (Internal ROM):芯片内部固化存储代码的存储器 IRAM ...
- Arm芯片上电启动流程剖解
关键字: stepping stone:(可以看做是Internal RAM) IROM (Internal ROM):固化在CPU内部ROM里的一段代码,它的运行叫做BL0. IRAM: 因为IRO ...
- 【笔记】ARM裸机程序开发_part1
ARM裸机开发的一些基础知识,基于x210开发板 课没有认真听完,也没接触过裸机的项目可供上传,但是了解一下总是好的=v= 授课老师:朱有鹏 听课辣鸡:宕机酱 ==================== ...
最新文章
- Docker配置指南系列(二):指令集(二)
- 架构与思维:系统容量设计
- vuex-along解决vuex中存储的数据在页面刷新之后失去的问题
- 不同路径—leetcode62
- 项目经理的职责(转载)
- 对软件测试的认识你了解多少
- Markdown 基础学习
- 《PWA实战:面向下一代的Progressive Web APP》读书笔记
- 用python重构策略模式
- 跨域问题时的Filter无效
- elasticsearch设置为windows系统服务
- 快闪族 - 百度百科
- 日志收集之nxlog
- Typora使用简介与插入数学公式
- 基于雷电模拟器利用python制作手游脚本 (神都夜行录,古剑奇谭木语人) (一)
- arduino超声波测距接线图详细_Arduino Uno + HY-SRF05 超声波测距模块详细讲解演示实验...
- DOS和Debug常用命令
- SPI NAND flash 简介
- 商场室内地图导航如何实现,便捷、低成本智慧商业综合体一站式解决方案
- 华为路由交换堆叠(通过堆叠卡)