启动文件需要做的工作
一、最基本的工作
1、准备RAM
如果是SRAM这步可以省略,但如果是SDRAM就需要配置一下时序才能使用。RAM是必须准备的,没有RAM将来的全局变量和堆栈在哪儿开辟。
2、准备SP
SP肯定是设置在RAM中。SP必须设置好,不然程序怎么跳转到C函数运行--需要入栈操作。
3、准备代码
对于处理器:
代码如果是在NorFlash上,直接可以运行,这一步骤也可省略。但是如果代码在非RAM接口的Flash上,就必须搬运到RAM中才行。即使在NorFlash上,有时我们也需要搬移,因为速度原因。
对于单片机:
因为程序本身就是在内部Flash上运行的,无需搬移。
4、跳到main
二、如果用到了全局变量
那么额外的还需要将全局变量中的已初始化全局变量加载到RAM中,为初始化的全局变量区进行清零。
三、更完善一下
1、设置系统时钟
2、初始化中断控制器
3、建立中断向量表
转载于:https://www.cnblogs.com/amanlikethis/p/3719720.html
启动文件需要做的工作相关推荐
- 系统移植-(二)u-boot:启动过程做的工作(汇编阶段、C阶段)
u-boot 启动过程 (一)ctags 安装 (二)uboot 启动过程 (1)链接脚本u-boot.lds (2)start.S分析 (3)Reset handler 分析 (1)bl cpu_i ...
- STM32高级开发(8)-链接器与启动文件
最近休息了一下,中间断断续续在虚拟机上靠着记忆恢复了原来崩溃的虚拟机上80%的工作成果,还算过得去吧,完全丢失的也就是些不大重要的资料.今天新买的机械键盘也到货了,不得不说顺丰的工作人员好评,给过年假 ...
- STM32启动文件分析(startup_stm32f10x_md.s)
初始化堆栈 初始化栈指针(SP) 初始化栈指针(SP) 向量表的设置 配置系统时钟进入main 一般而言,系统上电后第一个执行的是由汇编所编写的启动文件,其主要工作为一下五部分 初始化堆栈指针SP=_ ...
- Revit二次开发——不启动Revit,做rvt文件数据导出
Revit二次开发--不启动Revit,做rvt文件数据导出 Node.js部分 调用C#端供外部调用的dll C#部分 调用RevitNet.dll,做数据导出exe 做外部调用dll 总结 Nod ...
- STM32启动文件分析
相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化. ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一 ...
- ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...
ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...
- s3c2440启动文件详细分析
启动文件就是引导ARM启动,并进入我们熟悉的C语言程序.它主要完成了ARM最基本的硬件初始化工作.虽然启动文件的内容大同小异(就是设置系统时钟.内存.中断向量表.栈等内容),而且只要有一个现成的启动文 ...
- STM32启动文件代码解析
目录 启动流程 代码详解 启动文件使用的 ARM 汇编指令汇总 关于与启动文件有关的一些问题思考 下面是F1固件库V3.5.0的启动文件startup_stm32f10x_hd.s,以此为例做解析,其 ...
- STM32那点事(1)_STM32F40_41xx启动文件详解
STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担.只需要调用相关模块封装,对相关结构提初始化即可,较少开发调试时间.本次主要以官方STM32F4 ...
最新文章
- FPGA之道(76)静态时序分析(二)一道时序分析的例题
- 发布 EasyTrac 0.1.0.11b2
- 网络编程- 解决黏包现象方案一(六)
- java基础 关于转换流
- Java判断类和实例的关系
- 删除 索引 外键 mysql_MySQL无法删除外键约束中所需的索引
- html块中的内容垂直居中,css如何设置行内元素与块级元素的内容垂直居中
- acrobat 控件可以发布吗_短视频可以同时在多个平台发布吗?
- Maven构建项目 — 知识点梳理
- 多字节常量char m='\abcd'
- 数据计算 统计学案例_PSG三维数据采集软件在土方量计算中的应用案例
- Keras 中文文档地址
- VB弹出“访问系统注册表错误”提示对话框
- Java 时间差运算工具函数(时间戳运算)
- cadence电阻在哪个库_cadence元件库介绍
- Scala的安装与配置
- GiB 是什么?像 GB 是一样的吗?
- 什么是子网掩码,如何判断两个IP是不是同一网段
- nasa注册_“NASA”商标注册案例分析
- 2019年1季度中国移动互联网行业发展分析报告