0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

美信cortex-m3内核芯片的启动过程及连接文件介绍

CHANBAEK 来源:硬件工程师干货 作者:硬件工程师干货 2023-03-01 11:39 次阅读

本文以美信cortex-m3内核某型号芯片以及eclipse开发环境介绍芯片启动过程以及连接文件。

启动过程介绍:

先看向量表,见下图1区域向量表定义在nvic_section这个区域,启动时,会拷贝到RAM中运行,后面会介绍,重定向向量表不是必须的,拷贝到RAM中有个好处,修改向量表比较方便。

向量表的最开始是栈指针,接下来是复位向量,见2区域。

pYYBAGP-x8qACQGLAAHaRcZFq5M073.png

下面就是复位函数,前面说了,复位函数地址放在了向量表的第二位。处理器上电后首先运行这个函数,进行初始化。这个函数定义在了reset区域,这个区域在Flash的起始位置,因此首先运行它,这个函数第一步就是初始化栈指针,然后调用start函数。

pYYBAGP-x9eAU-XzAAFJDeyFLvA584.png

关键的start函数来了:

1部分:这个函数首先从Flash拷贝数据,这个过程就是给全局变量赋值,换句话说就是给代码中有初值的全局变量或者静态局部变量赋值。因为全局变量和静态局部变量初值是保存在Flash里面,会占用Flash空间,这一点要注意。

2部分:把需要清零的RAM区清空,包括没有初值的全局变量。

3部分:拷贝向量表并重定向,上面已经提过,重定向不是必须的。

这个函数最后调用main函数,就再也回不来了。

pYYBAGP-x-WAXlU4AAOMEd9jBwM109.png

连接文件介绍:

1区域:上面说了__reset函数就在这区域,可以看出在Flash最上面,首先运行它。

2区域:向量表,start函数中拷贝到RAM区了,这是初始位置,在Flash区。

poYBAGP-x_SAT2M2AAIJZagnxW0005.png

继续往下看连接文件:

1区域:有初值常量,比如const类型,存放在Flash里

2部分:全局变量初值存放位置。刚才拷贝的就是它。

3区域:清零区,就是上面循环清零的区域

4区域:栈区域,一般在RAM最后面,因为cortex-m3类处理器都是满递减栈。

poYBAGP-yBiAXe0QAANt-l4AtOA568.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39843
  • Cortex
    +关注

    关注

    2

    文章

    194

    浏览量

    45743
  • 函数
    +关注

    关注

    3

    文章

    3866

    浏览量

    61308
  • 美信
    +关注

    关注

    5

    文章

    1335

    浏览量

    72259
  • Cortex-M3
    +关注

    关注

    9

    文章

    268

    浏览量

    59160
收藏 人收藏

    评论

    相关推荐

    专家揭秘:STM32启动过程全解

    电子发烧友网核心提示: 本文主要阐述了STM32启动过程全面解析,包括启动过程介绍启动代码的陈列以及深入解析。 相对于ARM上一代的主流ARM7/ARM9
    发表于 09-10 08:50 5.3w次阅读
    专家揭秘:STM32<b class='flag-5'>启动过程</b>全解

    13、STM32编程基础(第1节)_Cortex-M3内核和总线 #硬声创作季 #STM32CubeMX

    单片机内核STCortex编程语言Cortex-M0Cortex-M3
    jf_06209345
    发布于 :2022年08月17日 22:15:47

    ARM Cortex-M0 vs Cortex-M3

    推出的Cortex-M3处理器主要适用于高性能、极其低成本需求的嵌入式应用,如:微控制器、汽车系统、大型家用电器、网络装置等。Cortex-M3除了集合了多项功能之外,相较于过去的设计减少了不少芯片
    发表于 01-29 15:05

    基于F28M35芯片cortex-m3内核uart 通信,怎么编写程序

    我用的是ti的fF28M35芯片,编写的主程序用的是c28内核,但是画板时串行通信选择的是cortex-m3内核的uart通信接口,求大神怎
    发表于 05-06 21:25

    ARM Cortex-M3内核介绍

    STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核(ST's product portfolio contains a comprehensive
    发表于 08-05 06:15

    Cortex-M3芯片简介

    Cortex-M3芯片简介1、关于ARMv7的知识了解在这个版本中,内核架构首次从单一款式变成3种款式。款式A:设计用于高性能的“开放应用平台”——越来越接近电脑了 。款式R:用于高端
    发表于 08-24 07:52

    怎样去使用Cortex-M3内核

    Cortex-M3内核是什么?怎样去使用Cortex-M3内核
    发表于 09-24 07:19

    Cortex-M3简述

    低实时性好代码密度得到很大改善使用更加方便低成本的整体解决方案开发工具众多:keil、Cube…二者之间的关系上图是基于Cortex-M3内核的MCU,Cortex-M3相当于一个小CPU(中央处理器)。MCU就是我们看到的
    发表于 11-10 08:19

    Cortex-M3内核_IAP升级的相关资料下载

    单片机启动方式首先上几幅Cortex-M3内核的参考手册的图:一般情况下我们用到的开发板,例如带一键下载功能的都是从系统存储器开始启动的。系统存储器是一块存储空间,他里面的内容就是Bo
    发表于 12-10 07:26

    stm32(CortexM3)程序的启动过程是怎样的

    )程序的启动过程一上电就会触发复位异常。并且会跳转到中断向量表 特定偏移位置,然后获取里面的内容。修改复位异常内的内容,就可以让处理器去执用户指定的操作。启动文件(.s)做了如下四个步骤:初始化堆栈指针设置PC指针的值(该值减8
    发表于 02-28 06:31

    RT-Thread是不是不能在ARM Cortex-M3内核系列的芯片上运行啊

    在目前RT-Thread对ARM的支持上,RT-Thread只能工作于ARM状态。Cortex-M3内核干脆都不支持ARM指令,中断也在Thumb态下处理,那么RT-Thread是不是不能在Cortex-M3
    发表于 06-24 15:43

    嵌入式uCLinux内核启动过程分析

    分析uCLinux的启动过程,可以加快系统启动速度、正确建立应用环境。本文要研究的就是uCLinux操作系统内核启动过程
    发表于 08-15 16:51 731次阅读

    Cortex-m3内核STM32芯片的硬件库程序

    Cortex-m3内核STM32芯片的硬件库程序 有需要的下来看看
    发表于 12-29 13:41 3次下载

    STM32启动过程--启动文件--分析

    STM32启动过程--启动文件--分析一、概述1、说明  每一款芯片启动文件都值得去研究,因为
    发表于 11-30 13:21 4次下载
    STM32<b class='flag-5'>启动过程</b>--<b class='flag-5'>启动</b><b class='flag-5'>文件</b>--分析

    分析ARM Cortex-M内核复位启动过程

    ARM Cortex-M内核的复位启动过程也被称为复位序列(Reset sequence),下面就来简要总结分析下这一过程
    的头像 发表于 03-20 09:58 1651次阅读