news 2026/8/6 19:49:50

S32K311启动过程中,向量表重定向

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
S32K311启动过程中,向量表重定向

在MCU的启动过程中,NXP官方提供的启动代码会对中断向量表进行重定向,将向量表从flash定向到ram。具体实现分析如下。

Vector_Table.s

  • SECTION .intvec:DATA:ROOT(2)

通过这个命令,声明一个.intvec的段,这条指令下面申明的变量都存放在这个段中。

  • VTABLE
    DCD __Stack_dtcm_start /* Top of Stack for Initial Stack Pointer */
    #ifdef MCAL_TESTING_ENVIRONMENT
    DCD _core_loop
    #else
    DCD Reset_Handler /* Reset Handler */
    #endif
    DCD NMI_Handler /* NMI Handler */
    DCD HardFault_Handler /* Hard Fault Handler */
    ......

VTABLE是一个内存地址符号(Label),它代表.intvec段的起始位置。

所以,这里就有了.intvec这个段,并且这个段中存放的是中断向量表的地址。而且我们可以通过VTABLE来找到这个段的首地址。

linker_flash_s32k311.icf

define block intcVectorBlock with fixed order, alignment = 2048 { section .intvec };

place in int_dtcm_region { first block intcVectorBlock, block dataDtcmBlock, block bssDtcmBlock};

通过这两行代码,将.intvec段放在DTCM区域的最开始位置。

startup_cm7.s

SetVTOR:
/* relocate vector table to RAM */
LDR R0, =VTOR_REG
LDR R1, =VTABLE
STR R1,[R0]

这里通过VTABLE将向量表(ram区域向量表)的首地址给到SCB.VTOR,实现了向量表的重定位。

到这里问题来了,存放在flash区域的向量表是通过什么方式实现的呢?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 14:21:40

Web:免费的JSON接口

http://suggest.taobao.com/sug?codeutf-8&q商品关键字&callbackcb http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope103&formatjson&appid379020&bk_key关键字&bk_length600

作者头像 李华
网站建设 2026/8/5 11:05:25

AI玩具产品定位

定位维度细分类型核心用户产品形态核心技术价格区间典型案例市场表现教育启蒙型儿童认知学习机3-8岁儿童(家长付费)卡通造型故事机(带触控屏/按键)1. 教育大模型(分级课程体系)2. 语音交互(支持…

作者头像 李华
网站建设 2026/8/6 15:20:55

OpenSL ES 完全指南:移动端高性能音频开发实战

引言:OpenSL ES 的核心价值与应用场景​ OpenSL ES(Open Sound Library for Embedded Systems)是 Khronos Group 推出的跨平台嵌入式音频标准,专为移动设备、机顶盒、车载系统等资源受限场景设计。作为一套无授权费用、开源友好的…

作者头像 李华
网站建设 2026/8/4 17:15:08

Gitee DevOps:信创时代企业数字化转型的加速器

Gitee DevOps:信创时代企业数字化转型的加速器 在数字经济蓬勃发展的今天,企业数字化转型已成为提升竞争力的必由之路。作为国产DevOps平台的领军者,Gitee DevOps凭借其安全可控的技术架构和高效的研发管理体系,正在成为众多企业实…

作者头像 李华
网站建设 2026/8/5 18:45:43

Skipping xxx as repository xxxx doesn‘t support architecture ‘i386‘

Ubuntu24.04日常使用过程的问题记录 2025/12/17 … doesn’t support architecture ‘i386’ 问题描述: 在切换内核版本到6.11.0-26后,sudo apt update 后发现以下问题 N: Skipping acquire of configured file main/binary-i386/Packages as repos…

作者头像 李华