嵌入式ARM启动代码的工作

(1)定义代码的初始入口点:初始入口点是指代码运行时的起始点,它在每个映像文件中是唯一的,也是每个可执行的映像文件             所必须含有的,而且必须位于映像文件的可执行域内。

(2)设置中断向量表,链接到包括复位、未定义指令,软件中断、取指中断、取数中断、IRQ和FIQ等异常或中断的处理程序。

(3)初始化存储系统。

(4)初始化ARM各个模式下的堆栈:根据应用程序使用资源的情况,设置每种或者某些ARM处理器模式下的堆栈区域。

(5)始化关键的I/O设备:用于防止在使能中断时产生不必要的开销。

(6)初始化中断时需要使用的一些变量。

(7)中断使能。

(8)根据情况切换处理器的模式和状态:ARM在运行启动代码时处于特权模式,用户在进入应用程序之前,可以将其切换到用户          模式,也可以进行ARM状态和Thumb状态的切换。

(9)初始化高级程序运行时用到的存储区,例如将RW属性的数据和ZI属性的数据移动到ARM等可以写的储存器,因为这些数据
          在程序加载时是保存在ROM等储存介质内的。

(10)进入高级应用程序。

嵌入式ARM启动代码的工作相关推荐

  1. ARM启动代码中_main 与用户主程序main()的区别

    STM32启动代码主要是分配堆栈及设置向量表,然后跳转到__main函数. 跳转具体到代码段部分如下: Reset_Handler PROC EXPORT Reset_Handler [WEAK] I ...

  2. Linux中main和初启函数,ARM启动代码中_main 与用户主程序main()的区别

    //wings: ​汇总如下: ​1._main是编译系统提供的库函数,main()是用户自己编写的主函数: ​2._main主要做了三件事: ​①将code/RW搬到ram中: ​②初始化ZI数据: ...

  3. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  4. 【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )

    文章目录 一. ARM 启动流程 1. 各种类型开发板启动流程 ( 1 ) 2440 开发板启动流程简介 ( ① Nand Flash 拷贝 4 KB -> SRAM 垫脚石 | ② PC 指向 ...

  5. 嵌入式Linux作业二分析u-boot-1.1.6在smdk2410开发板上的启动代码

    嵌入式Linux实验 嵌入式Linux作业二 文章目录 嵌入式Linux实验 作业要求 一.作业分析 二.实验步骤 1.下载并解压uboot1.1.6源码 2. 分析该版本下开发板smdk2410的相 ...

  6. 嵌入式开发板03---看门狗、编写启动代码

    看门狗 一般CPU的设计在CPU启动后看门狗默认是工作的,在S5pV210内部的iROM代码(BL0)中,其实已经关过看门狗了.很多CPU内部是没有BL0的因此都要在启动代码的前段自己写代码关闭看门狗 ...

  7. 嵌入式ARM设计编程(四) ARM启动过程控制

    文章和代码已归档至[Github仓库:hardware-tutorial],需要的朋友们自取.或者公众号[AIShareLab]回复 嵌入式 也可获取. 一.实验目的 (1) 掌握建立基本完整的ARM ...

  8. 嵌入式设备启动过程(ARM )

    嵌入式设备启动过程(ARM ) 1.SOC内部IROM固化代码,在上电后,被加载到内部IRAM上运行:(此部分做基本的硬件初始化,判断从TF卡/USB/EMMC哪一个存储设备中启动,硬件上通过拨码开关 ...

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

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

最新文章

  1. 【数据结构-查找】3.散列表详解
  2. step4 . day6 线程与线程的创建
  3. openwrt 更改 debug 等级(hostapd)
  4. 在Data Lake Analytics中使用视图 1
  5. Java提高班(二)深入理解线程池ThreadPool
  6. VBS 与 VBA 的区别
  7. html+css笔记1
  8. win10启动修复_在win10桌面建立高级启动选项快捷方式,修复电脑故障不用愁
  9. Learun,一款专注于业务,不用写代码的框架
  10. Linux中格式化(擦除)DVD + RW / DVD-RW磁盘
  11. 数据库导出换行mysql_数据库导出excel 换行
  12. 百度百科爬虫爬人物信息
  13. MCDF中arbiter的轮询机制
  14. PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))...
  15. DOS命令 基础命令
  16. 移动医疗系统护理工作站
  17. 阿里云 mysql教程_mysql数据库菜鸟教程
  18. 贝塞尔方程与贝塞尔函数
  19. python中width是什么意思_python cv2.resize函数high和width注意事项说明
  20. 了解redis队列原理

热门文章

  1. 2019-7-29 考试总结
  2. Flask框架 之abort、自定义错误、视图函数返回值与jsonify
  3. Nginx初学第一步
  4. oracle数据恢复方法
  5. 三层架构和MVC一样吗?(区别)
  6. Bitmap类getPixels()方法中参数stride理解
  7. 如何使用ASINetWorkQueue下载实现
  8. IOS笔记本----读写.plist文件
  9. ICLR 2019论文接收结果揭晓:24篇oral论文有没有你?
  10. 斯坦福统计学习理论笔记:Percy Liang带你搞定「贼难」的理论基础