【ARM Coresight 系列文章 10.1 - ARM Coresight STM 介绍及使用】

文章目录

    • Guaranteed and invariant timing transactions
    • Multiple STPv2 master support

上篇文章:ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用

Guaranteed and invariant timing transactions

STM 支持两种类型的软件的数据,一种是 guaranteed的,另一种是 invariant 的, 对于 guaranteed 类型的数据传输,当STM 无法接收 AXI总线发过来的数据时,会通过拉低 WREADY 来暂停 AXI 数据的发送。对于 guaranteed的数据传输,建议对于关键数据才使用该类型,因为该类型数据传输会影响系统性能。

对于 invariant 的数据传输,当STM 无法接收数据时,并不会暂停AXI总线数据的发送,STM 会丢弃AXI发过来的数据,所以无法保证 invariant 数据传输都能够通过STM传输出去。

每个 stimulus port 有连续的256bytes的空间,这个256bytes 又分为两部分,前后 128bytes 的空间,向不同的地址空间写数据会产生不同的数据包。

偏移Short name描述
0x78G_TRIG向该地址写会产生trigger 包,也可以产生事件信号,信号再通过cross trigger 传递出去
0x70G_TRIGTS带时间戳的trigger包
0x68G_FLAG一种标记,也算是data
0x60G_FLAGTS带时间戳的FLAG数据
0x20-0x5Fnonereserved
0x18G_D数据
0x10G_DTS带时间戳的数据
0x08G_DM带 Mark 的数据
0x00G_DMTS带Mark 并带有时间戳的数据

D:表示数据;
G: guaranteed; 有保证的意思,数据不会丢失。当STM中的buffer 满了的时候,STM 会将 总线上的ready信号拉低,这样的话AXI总线上的数据就会一直等到 ready 信号变高才会继续发送。
M:Mark, 输出的数据会带有标记,比如一串数据中的某个字当做Mark。

高128bytes的地址空间,从下面表格可以看出,都带有标记 “I”(invariant timing), 表示STM 不一定会产生数据, 是因为 当STM buffer满了的时候,此时STM 不会接收AXI发过来的数据,但是没有把 wready 信号拉低,所以AXI 会继续发送谁过来,此时数据就会丢失。

偏移Short name描述
0xF8I_TRIG向该地址写会产生trigger 包,也可以产生事件信号,信号再通过 cross trigger 传递出去
0xF0I_TRIGTS带时间戳的trigger包
0xE8I_FLAG一种标记,没有data payload
0xE0I_FLAGTS带时间戳的FLAG数据
0xA0-0xDFnonereserved
0x98I_D数据
0x90I_DTS带时间戳的数据
0x88I_DM带 Mark 的数据
0x80I_DMTS带Mark 并带有时间戳的数据

STM Features 2 Register 寄存器的 DSIZE 域的值为0x1, 数据位宽为64bit,上面 stimulus port 口的地址必须保证 bit[2:0]=0b000,。

Multiple STPv2 master support

STM 支持多 master, 对于 AXI 的 transactions, 如何确认时哪个 master 发起的呢?主要是基于下面两点:

  • 是安全的数据访问还是非安全的数据访问;
  • AXI 写地址总线的高bits。

留个软件的 master ID 有 128个, 0x00-0x7f, 0-63 ID 是留个 安全transaction的, 64-127 是留给非安全 transaction 的。 Master ID bit[7:0] 是由下面几部分构成的:

  • bit[7] = 0;
  • bit[6] = AWPROTS[1], 用于区分安全和非安全;
  • bit[5:0] = AWADDRS[29:24], AXI 的 AWID 和 AWUSER组合 给到 STM AWADDRS[29:24]。

bit[23:0] 用于区分channel id 或者 stimulus port id。

需要注意的是 channels 开始地址是硬件固定的 memory maped 地址,在 STM SPEC中时找不到的

每个 master 需要使用不同的 channel,否者会出现 master id 一样的情况。

上篇文章:ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用

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

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

相关文章

SpringCloud学习路线(3)—— Eureka注册中心

一、导引 服务调用出现的问题 服务调用采取的请求地址是静态的,当我们使用服务集群时,很容易造成只能调用固定的微服务上的接口。多个提供者,消费者的使用对象无法确定消费者无法得知提供者的状态 二、Eureka注册中心 (一&…

【C#】并行编程实战:使用并发集合

在上一章的并行编程实现里,为了保护资源,我们对共享资源加锁(各种同步原语)来进行保护,避免多线程同时访问(主要是写入)。但一般来说,共享资源是一个可以由多个线程读写的集合&#…

JVM系列(8)——对象的内存布局

1、对象的创建过程 加载-验证-准备-解析-初始化-申请内存-成员变量赋初始值-加载构造方法。 前半段是JVM系列(5)——类加载过程,申请内存可参考:JVM系列(3)——内存分配与回收策略。 2、对象在内存中的存…

华为申请注册盘古大模型商标;京东推出言犀大模型,率先布局产业应用

7月14日科技新闻早知道,一分钟速览。 1.华为申请注册盘古大模型商标: 据天眼查 App 显示,7 月 7 日,华为技术有限公司申请注册“华为云盘古”、“Huawei Cloud Pangu Models”文字及图形商标,国际分类为网站服务、社…

常用API学习06(Java)

Biglnteger public BigInteger(int num, Random rnd) 获取随机大整数,范围:[0~2的num次方-1] public BigInteger(String val) 获取指定的大整数 public BigInteger(String val, int radix) 获取指定进制的大整数 public static BigInteg…

「深度学习之优化算法」(十四)麻雀搜索算法

1. 麻雀搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   麻雀搜索算法(sparrow search algorithm)是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。提出时间是2020年,相关的论文和研究还比较少,有可能还有一些正在发表中,受疫情影响需要论…

【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用

最近在写一个安卓程序,在程序里需要用到startActivityForResult这个Intent操作关键字,与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。 三者在API中的形式 //startActivityForResult与startActivity类似,只不…

C++:const修饰指针

const修饰符常常需要在c中使用到&#xff0c;需要注意到他对于指针修饰的时候的不同区别。 #include<iostream> using namespace std; int main() {//1.const修饰指针int a 10;int b 10;const int* p &a;//指针指向的值不可以改&#xff0c;指针的指向可以改// …

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问&#xff1a;程序已经支持GPT3.5、GPT4.0接口…

Matlab学习笔记

1.入门 1.1矩阵与运算 a[1 2 3;4 5 6;7 8 9] *表示矩阵乘法 .* .^之类则是对矩阵每个元素运算&#xff08;点乘&#xff09; inv(a)矩阵的逆 format long/short 显示更多/更少位小数 串联 A[a a] 横着 [a;a] 竖着 sum(A)会得到各列的和&#xff08;得到行向量&#xff09; …

MyBatis基础知识

文章目录 Mybatis简介MyBatis历史MyBatis特性MyBatis下载和其它持久化层技术对比 搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能 核心配置文件详解默认的类型别名MyBatis的增删改查MyBati…

Java常见面试题

文章目录 一、Java基础面试题二、面向对象编程面试题三、集合框架面试题四、多线程面试题五、数据库面试题六、异常处理面试题七、设计模式面试题八、Spring相关面试题九、性能优化面试题十、Java 8新特性面试题十一、JVM相关面试题十二、框架相关面试题十三、并发编程面试题十…

Flutter的状态管理之Provider

前言 像vue、react有对应的状态管理库&#xff0c;比如&#xff1a;pinia、Redux 。同样flutter中也有状态管理库&#xff0c;但是flutter中的状态管理库很多&#xff0c;对于像我这样的新手来说这很难选择。因此只好选择官方库——Provider 因为是第一次学习&#xff0c;如果…

vue2watch监听遇到的问题

1 vue 父组件里引入子组件 显示与隐藏是v-if控制时 父传入子的参数通过watch 监听请求接口时 watch 时而监听不到 请求接口的参数就不对 如图 父组件这么引入子组件v-show 和v-if 是有区别的 2 子组件通过watch 监听后 清空页面要展示的列表数据 重新从第一页加载数据&#x…

扶小微、惠民生,平安养老险护航中小企业健康发展

今年以来&#xff0c;随着经济社会全面恢复常态化运行&#xff0c;稳增长、稳就业、稳物价政策效应逐步显现&#xff0c;市场需求逐步恢复&#xff0c;生产供给持续增加&#xff0c;我国经济发展质量继续提高&#xff0c;国民经济恢复向好。平安养老险作为平安集团内专业养老保…

【雕爷学编程】Arduino动手做(164)---Futaba S3003舵机模块3

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

log4j复现之CVE-2017-5645

log4j复现之CVE-2017-5645 一、靶机环境的安装 1.docker环境安装 apt-get update apt-get install -y apt-transport-https ca-certificates apt install docker.io apt-get install python3-pip pip3 install docker-compose docker-compose -v2.下载vlnhub git clone …

长沙打造“全球研发中心城市”,智能网联产业如何交卷?

作者 | 魏启扬 来源 | 洞见新研社 知乎上有一个浏览超百万的热门问题——“大家怎么看待长沙这个城市&#xff1f;” 答主“星球研究所”的回答获得了高赞&#xff0c;“这是一个天性如火的城市”。 网红城市的外衣下&#xff0c;从湖南卫视的综艺节目&#xff0c;到网红美…

qiankun:react18主应用 + 微应用 react18 + vue3

一&#xff1a;主应用 搭建react项目 npx create-react-app react-qiankun-main安装Antd npm install antd –save在 index.js中引入 import { ConfigProvider } from "antd"; import zhCN from "antd/locale/zh_CN"; import "antd/dist/reset.css…

Redis PipelineScript

文章目录 前言一、Pipeline是什么&#xff1f;二、Pipeline具体实现特点缺点 三、ScriptScript具体实现对比Pipeline三、总结 前言 玩过远程过程调用的小伙伴都知道&#xff0c;一次请求多条数据要比多次请求1条数据效率高&#xff08;当然&#xff0c;这里的多条数据通常是完…