S32K324 DTCM/DTCM Backdoor使用及测试

文章目录

    • 前言
    • S32K324的Memory map
    • DTCM的原理
    • DTCM的使用
    • DTCM/DTCM backdoor测试
    • 总结

前言

S32K324的Ram在选型手册上给的是512K,但实际上sram只有320k,项目中对ram的需求更大,所以需要拓展一下ram的使用。本文分析DTCM的使用方案及测试结果

S32K324的Memory map

在这里插入图片描述
512K是由32K ITCM0 + 32K ITCM1 + 64K DTCM0 + 64K DTCM1 + 160K SRAM0 + 160K SRAM1组成的

需要注意的是,如果启用HSESRAM_1的最后48K是不能使用的

可能有细心的朋友发现了,ITCM0和ITCM1的起始和结束地址一样(对于S32K324来说,都是0x00000000-0x00007FFF),DTCM0和DTCM1的起始和结束地址一样(都是0x20000000-0x0000FFFF**)。这并不是写错了,而是ITCM0和DTCM对应的是核0,ITCM1和DTCM1对应的是核1,虽然说地址一样,但在不同核访问时,地址内容是不一样的,这一点搞清楚非常重要。这个知识点打破了之前的认知,之前一直认为memory地址的内容是唯一的。

由于地址一样,就会导致一个问题,双核单elf的工程,这两块内存无法区分,就不能作为两块独立的内存使用了。

这时候,就可以提到另外一块内存了,也就是ITCM/DTCM对应的Backdoor地址,backdoor很形象,“后门”,也就是说,当核1/其他外设想访问核0的DTCM0区域时,直接访问(“正门”)是会报错的,而通过backdoor地址访问,走"后门",就可以访问了。

DTCM的原理

DTCM (Data Tightly Coupled Memory) 的原理

定义:DTCM 是一种紧耦合数据存储器,通常用于嵌入式系统中,特别是那些对数据访问速度有极高要求的应用场景。

特点:

低延迟:DTCM 位于处理器核心附近,访问速度非常快,通常只有几个时钟周期。

小容量:由于成本和物理限制,DTCM 的容量通常较小,一般在几 KB 到几十 KB 之间。

专用性:DTCM 通常用于存储频繁访问的数据,如实时控制算法中的变量或缓冲区。

应用场景:

实时系统:在需要快速响应的实时系统中,DTCM 可以显著减少数据访问延迟,提高系统的实时性能。

嵌入式系统:在资源受限的嵌入式系统中,DTCM 可以优化关键数据的访问速度,提升整体性能。

下面通过总线图可以看到DTCM的位置:
在这里插入图片描述
可以看到,DTCM和对应核直接通信,相比于SRAM而言(需要经过AXBS总线),访问速度必然会快。
上图中的红色箭头表示,当启用锁步模式时,DTCM0和DTCM1都给主核使用,也就是主核的DTCM变为了128K

而如果想要使用backdoor的话,访问路径如下:
在这里插入图片描述
访问backdoor通过AXBS总线,还要走AHBS总线,实际访问速度应该比SRAM还慢,所以,并不太建议通过backdoor的方式将DTCM作为普通RAM使用

DTCM的使用

ld文件中定义DTCM的内存地址,核0核1都为同一块:

    int_dtcm                : ORIGIN = 0x20000000, LENGTH = 0x00010000    /* 64K */

DTCM在Startup.s中被初始化,主核在通过DisableSWT0中调用RamInit之后调用DTCM_Init,从核直接调用DTCM_Init

SetCore0Stack:
;  /* set up stack */ldr  r0, =__Stack_start_c0msr MSP, r0b DisableSWT0SetCore1Stack:
;  /* set up stack */ldr  r0, =__Stack_start_c1msr MSP, r0
#ifdef RAM_DATA_INIT_ON_ALL_CORESb RamInit
#elseb DTCM_Init ;/* SWT1 clock is disabled at startup */
#endif

最开始看这个初始化时,一直以为核1才会初始化DTCM,实际并不是,核0调用DisableSWT0最后也会调DTCM_Init

初始化完后,就可以访问这两块内存了,注意:在通过backdoor地址访问时,可能会出现使能了MPU而对应地址未加入到MPU保护的地址而导致的fault

DTCM/DTCM backdoor测试

下面将核1使用的同一块data,放到SRAM,DTCM,DTCM_backdoor,进行对比:
SRAM:
在这里插入图片描述
DTCM:
在这里插入图片描述
DTCM_backdoor:
在这里插入图片描述
平均运行时间DTCM_backdoor(145988)>SRAM(140708)>DTCM(132627)

总结

可以考虑将核内频繁访问的数据放入DTCM,但需要注意,核0核1都要访问的数据(例如,XCP标定的数据),不能放入DTCM,否则,会导致两个核获取的数据不一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462466.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch猴痘病识别

Pytorch猴痘病识别 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 电脑系统:Windows11 显卡型号:NVIDIA Quadro P620 语言环境:python 3.9.7 编译器:jupyte…

网络安全渗透实际案例

目录 案例场景案例目标和工具 案例操作步骤Step 1:信息收集与识别**结果分析** Step 2:漏洞扫描**预期结果** Step 3:漏洞利用与权限验证Step 4:后渗透测试Step 5:报告生成和修复建议**修复建议** 案例总结 下面是一个…

快消零售行业的培训创新:构建在线培训知识库

在快速消费品(FMCG)行业中,员工的培训和发展对于保持竞争力至关重要。随着电子商务的兴起和消费者行为的变化,快消零售行业需要不断适应新的市场趋势。在线培训知识库作为一种有效的培训工具,可以帮助企业提升员工技能…

软考(中级-软件设计师)计算机网络篇(1101)

第五章:计算机网络基础 **考纲要求**根据开始大纲中相应的考核要求,要求考生掌握一下方面的内容: 1、计算机网络基础知识 网络体系结构传输介质、传输技术、传输方法、传输控制常用网络设备和各类通信设备的特点Client-Server结构、Browser…

【毫米波雷达(四)】车载毫米波雷达下线EOL标定流程

汽车控制器下线EOL标定流程 一、概述二、标定的目的三、雷达标定的要求1、车辆的要求2、标定环境要求四、以软件的角度分析前雷达的EOL标定 一、概述 由于雷达的安装误差会影响雷达对目标位置的检测,导致报警及功能性能下降。因此雷达进行预安装后必须进行角度标定…

免费插件集-illustrator插件-Ai插件-闭合开放路径

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,实现图形编辑中闭合开放路径。首先从下载网址下载这款插件https://download.csdn.net/download/m0_67316550/8789…

LDA 线性分类

线性判别分析是一种经典的线性分类方法,将高维空间投射到低维空间,如下图。 LDA 的目标就是简单累内距离变小,把类间的距离变大,这样就可以把相似的数据聚集在一起。 u1 和 u2 类间距离,S1、S2 为类内数据点之间的距…

面试必会50题

基础篇 01 和 equals 的区别是什么 : 可以比较基本数据类型也可以比较引用数据类型 , 比较基本数据类型是比较值是否相等, 比较引用数据类型是比较引用地址是否相等 (基本数 据类型 比较的是值,引用数据类型 比较的是内存地址) equals() : 一般用于对象的比较…

Python 工具库每日推荐 【Sphinx】

文章目录 引言文档工具的重要性今日推荐:Sphinx 文档生成工具主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:为 Python 项目生成 API 文档案例分析高级特性自定义主题国际化支持扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript …

Pinctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体

往期内容 本专栏往期内容: Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析 input子系统专栏: 专栏地址:input子系统input角度:I2C触摸屏驱动分析…

第十五章 Vue工程化开发及Vue CLI脚手架

目录 一、引言 二、Vue CLI 基本介绍 三、安装Vue CLI 3.1. 安装npm和yarn 3.2. 安装Vue CLI 3.3. 查看 Vue 版本 四、创建启动工程 4.1. 创建项目架子 4.2. 启动工程 五、脚手架目录文件介绍 六、核心文件讲解 6.1. index.html 6.2. main.js 6.3. App.vue 一、…

Rust 力扣 - 2841. 几乎唯一子数组的最大和

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口,用一个哈希表记录窗口内的所有元素(用来对窗口内元素去重),我们取哈希表中元素数量大于等于m的窗口总和的最大值 题解代码 use std::coll…

Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)

案例背景 虽然在效果上,传统的逻辑回归模型通常不如现代的机器学习模型,但在风控领域,解释性至关重要。逻辑回归的解释性是这些“黑箱”模型所无法比拟的,因此,研究传统的评分卡模型依然是有意义的。 传统的评分卡模型…

免费送源码:Java+Springboot+MySQL Springboot酒店客房管理系统的设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对酒店客房管理等问题,对酒店客房…

力扣每日一题 超级饮料的最大强化能量 动态规划(dp)

来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。 你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到…

Linux高阶——1027—守护进程

1、守护进程的基本流程 1、父进程创建子进程,父进程退出 守护进程是孤儿进程,但是是工程师人为创建的孤儿进程,低开销模式运行,对系统没有压力 2、子进程(守护进程)脱离控制终端,创建新会话 …

抗疫物资管理:SpringBoot技术应用案例

目 录 摘 要 1 前 言 2 第1章 概述 2 1.1 研究背景 3 1.2 研究目的 3 1.3 研究内容 4 第二章 开发技术介绍 5 2.1相关技术 5 2.2 Java技术 6 2.3 MySQL数据库 6 2.4 Tomcat介绍 7 2.5 Spring Boot框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行…

pandas——数据结构

一、series (一)创建series import pandas as pd#1.使用列表或数组创建Series # 使用列表创建Series,索引默认从0开始 s1 pd.Series([1, 2, 3]) print(s1) # 使用列表和自定义索引创建Series s2 pd.Series([1, 2, 3], index[a, b, c]) pr…

MySQL的SQL语句之触发器的创建和应用

触发器 Trigger 一.触发器 作用:当检测到某种数据表发生数据变化时,自动执行操作,保证数据的完整性,保证数据的一致性。 1.创建一个触发器 如上图所示,查看这个create的帮助信息的时候,这个create trig…

服务器数据恢复—DELL EqualLogic PS6100系列存储简介及如何收集故障信息?

DELL EqualLogic PS6100系列存储采用虚拟ISCSI SAN阵列,支持VMware、Solaris、Linux、Mac、HP-UX、AIX操作系统,提供全套企业级数据保护和管理功能,具有可扩展性和容错功能。DELL EqualLogic PS6100系列存储介绍: 1、上层应用基础…