1.在板子上电的一开始,首先自动判断是否是autoboot模式(这是由硬件设计阶段,由硬件工程师对mcu的引脚连线决定的),我所使用的 s3c2410是带有nandflash的,并切被设置成autoboot,从nandflash开始启动. 
   2.在判断是autoboot模式后,mcu内置的nandflash控制器自动将nandflash的最前面的4k区域(这4k区域存放着 bootloader的最前面4k代码)拷贝到samsung所谓的"steppingstone"里面(steppingstone是在S3C2440 中,实际上是一块4k大小的SRAM,).
   3.在拷贝完前4k代码后,nandflash控制器自动将"steppingstone"映射到arm地址空间0x00000000开始的前4k区域.
   4.在映射过程完成后.nandflash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执 行"steppingstone"上的代码.
   5.而"steppingstone"上从nandflash拷贝过来的4k代码,是程序员写的bootloader的前4k代码.这个 bootloader在之前写好,并已经被烧写到nandflash的0x00000000开始的最前面区域..而这"steppingstone"上的 4k代码就是bootloader的前4k代码.
   6.在pc指向arm地址空间的0x00000000后,系统就开始执行指令代码.这4k代码的任务是:初始化硬件,设置中断向量表,设置堆栈,然后一个 很重要的任务是,将nandflash的最前面区域的bootloader(包含4k启动代码)拷贝到SDRAM中去,bootloader代码的大小是 写好bootloader就确定的.然后只需要确定bootloader想映射到SDRAM的起始位置就ok.
   7.在完成对nandflash上的bootloader搬移后,找到4k代码的搬移代码最后一个指令的下一个指令在SDRAM的bootloader的 地址,然后跳转到该位置,继续执行bootloader的剩余代码(引导系统).

注意:S3C2440先从nandflash上启动的,而不是SDRAM上!

ARM中Steppingstone启动相关推荐

  1. ARM linux的启动部分源代码简略分析

    ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用. 当内核映像被加载到RAM之后,Bootloade ...

  2. ARM linux的启动部分源代码简略分析【转】

    转自:http://www.cnblogs.com/armlinux/archive/2011/11/07/2396784.html ARM linux的启动部分源代码简略分析 以友善之臂的mini2 ...

  3. arm linux内核启动过程,ARM64的启动过程之(一):内核第一个脚印

    ARM64的启动过程之(一):内核第一个脚印 作者:linuxer 发布于:2015-10-10 15:06 分类:ARMv8A Arch 一.前言 kernel的整个启动过程涉及的内容很多,不可能每 ...

  4. ARM中C语言和汇编语言互相调用以及实例

    1.内联汇编 在C语言中内嵌汇编注意事项: 不能直接向PC寄存器赋值,程序跳转要使用B或者BL指令 在使用物理寄存器时,不要使用过于复杂的C表达式(比如ADD y,R0 ,x/y(无形中就是c语言表达 ...

  5. PC的ARM的安全启动

    其实还是很不习惯将PC和ARM联系起来,当然主要是因为我刚刚接触嵌入式没有多久,更别说服务器.PC端了. 脑子里固化了的X86. 于是这一篇学习一下,基于ARM的PC,是怎么利用这个ATF框架,进行安 ...

  6. ARM芯片上电启动流程

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

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

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

  8. 织女星开发板能移植linux吗,织女星开发板启动模式修改——从ARM M4核启动

    前言 刚开始玩织女星开发板的时候,想先从熟悉的ARM核入手,连上Jlink,打开MDK版本的Demo程序,编译OK,却检测不到芯片,仔细看了一下文档,原来RV32M1芯片默认从RISC-V核启动,如果 ...

  9. mssql 无法启动调试器 数据为空_织女星开发板启动模式修改——从ARM M4核启动

    织女星开发板启动模式修改--从ARM M4核启动 前言 刚开始玩织女星开发板的时候,想先从熟悉的ARM核入手,连上Jlink,打开MDK版本的Demo程序,编译OK,却检测不到芯片,仔细看了一下文档, ...

最新文章

  1. CISCO路由器的恢复方法
  2. 招银网络笔试java_最新!!招银网络科技Java面经,整理附答案
  3. 积极向上,努力工作,提高能力,提高战斗力,保持热情,保持创业热情。
  4. Go 的 Contex 是线程安全的吗?
  5. leetcode 190 python
  6. .net 获取xml里面的值_Java-XML技术
  7. vscode过滤pyc文件
  8. JUnit4教程+实践
  9. 交通标志识别系统(TSR)
  10. ERP企业管理系统与CRM客户关系管理系统集成套路
  11. 中华传统文化网页作业报告
  12. html5怎么唤起支付宝支付,H5唤起支付宝支付
  13. 随记 C#读取TXT文件乱码
  14. 《Effective Java》读书笔记五(枚举和注解)
  15. Android工作日志
  16. ubuntu20 从wine安装到微信3的使用(解决微信乱码、无法输入)
  17. GlassFish主配置文件domain.xml介绍
  18. 系统设定工具(网络、打印机)与硬件侦测
  19. 少儿编程Scratch学习教程5--基本操作(二)动画例子
  20. DANN:利用神经网络算法评估变异位点的有害程度

热门文章

  1. ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象...
  2. Jquery学习笔记:获取jquery对象的基本方法
  3. mysql中的innodb_flush_log_at_trx_commit参数的意义
  4. APScheduler —— Python化的Cron
  5. ZOJ 3471 压缩状态DP
  6. Unity3D Input按键系统
  7. ASP.NET AJAX + JSON 实现对象调用
  8. 继承练习 :开发一个系统时 需要对员工进行建模 员工包含3个属性 姓名 工号 工资 功能 work
  9. if 需求:小于或等于18未成年,小于或等于30青年人,其余都是老年人
  10. sqlmap报错注入