当前位置:网站首页>Sim Api User Guide(7)
Sim Api User Guide(7)
2022-04-23 09:55:00 【weixin_38498942】
Sim Api User Guide(7)
2.10
cosims 或系统仿真应用程序使用设备注册函数将其回调函数注册到 Hexagon 模拟器。 所有注册函数都可以在配置阶段完成之前或之后调用。 这些设备注册/取消注册功能中的每一个都可以被多次调用。
2.10.1 AddBusAccessCallback
Prototype
typedef HEXAPI_TransactionStatus
(*bus_transaction_request_callback) (void *handle,
HEX_PA_t address, HEX_4u_t lengthInBytes,
HEX_1u_t *data, HEX_4u_t requestID,
HEXAPI_BusAccessType type, HEX_4u_t threadNum,
HEXAPI_BusBurstType burst);
HEXAPI_Status AddBusAccessCallback(void *handle,
HEX_PA_t startAddr, HEX_PA_t endAddr,
bus_transaction_request_callback brtc)
Parameters
名字 | 类型 | 描述 |
---|---|---|
handle | Input | 从 RegisterCosim() 或 RegisterCosimArgs() 返回的外部总线模型句柄 |
startAddr | Input | 要为此设备注册的地址范围的下限(包括) |
endAddr | Input | 为该设备注册的地址范围的上限(含) |
btrc | Input | 指向给定地址区域发出总线请求时要调用的函数的指针。 请参阅第 3.2.1 节。 |
Return
名字 | 描述 |
---|---|
HEX_STAT_SUCCESS | Success |
HEX_STAT_INVALID_ARGS | 总线地址范围重叠 |
Description
注册一个函数,当核心发出对指定范围内的内存的总线请求时要调用的函数。 注册的函数必须具有给定的原型,如果总线请求可以被接受,则返回零。 如果总线请求不能被接受,则返回一个非零值,并且核心停止请求线程并稍后重新发出请求。
如果请求被接受,核心保持请求线程停止,直到它接收到 BusTransactionFinished(第 2.12.15 节)调用以指示事务完成。
目的是允许用户对总线进行建模。 通常,被调用函数 (btrc) 会注册一个警报回调(第 2.10.5 节)以从模拟器接收操作的预期延迟已过期的通知。 此时,总线模型发出请求的总线操作完成的信号。
注意
由不同外部模型注册的重叠地址范围将被拒绝。
2.10.2 RemoveBusAccessCallback
Prototype
HEXAPI_Status RemoveBusAccessCallback(void *handle)
Parameters
名字 | 类型 | 描述 |
---|---|---|
handle | Input | 从 RegisterCosim() 或 RegisterCosimArgs() 返回的外部总线模型句柄 |
Return
名字 | 描述 |
---|---|
HEX_STAT_SUCCESS | Success |
HEX_STAT_DEVICE_NOT_FOUND | 找不到已注册的总线设备 |
Description
从模拟器中删除外部总线模型的回调通知。 对于已注册回调的所有地址范围,删除与句柄关联的回调。
2.10.3 AddFrequencyChangeCallback
Prototype
typedef void (*frequency_change_callback)
(void *handle, HEX_4u_t newFrequency);
HEXAPI_Status AddFrequencyChangeCallback (void *handle,
frequency_change_callback fcc)
Parameters
名字 | 类型 | 描述 |
---|---|---|
handle | Input | 从 RegisterCosim() 或 RegisterCosimArgs() 返回的外部总线模型句柄 |
fcc | Input | 指向调用频率变化通知的函数的指针。 参见第 3.2.5 节 |
Return
名字 | 描述 |
---|---|
HEX_STAT_SUCCESS | Success |
HEX_STAT_DEVICE_NOT_FOUND | 找不到已注册的总线设备 |
Description
由每次 Hexagon 核心频率变化时需要模拟器通知的外部设备模型使用。 它可以根据需要使用新频率来计算适当的延迟。
2.10.4 RemoveFrequencyChangeCallback
Prototype
HEXAPI_Status RemoveFrequencyChangeCallback (void *handle)
Parameters
名字 | 类型 | 描述 |
---|---|---|
handle | Input | 从 RegisterCosim() 或 RegisterCosimArgs() 返回的外部总线模型句柄 |
Return
名字 | 描述 |
---|---|
HEX_STAT_SUCCESS | Success |
HEX_STAT_DEVICE_NOT_FOUND | 无法为设备移除对 FrequencyChangeCallback 的调用 |
Description
外部设备模型使用它从已注册的设备列表中删除自己,以便在每次核心频率更改时获取回调。
2.10.5 AddTimedCallback
Prototype
typedef void (*timed_callback) (void *handle);
HEXAPI_Status AddTimedCallback(void *handle,
HEX_8u_t interval, HEXAPI_Interval i_typ, timed_callback tc)
Parameters
名字 | 类型 | 描述 |
---|---|---|
handle | Input | 从 RegisterCosim() 或 RegisterCosimArgs() 返回的外部总线模型句柄 |
interval | Input | 以模拟器时间单位表示的间隔 |
i_typ | Input | 时间单位类型: HEX_MILLISEC - 毫秒、HEX_MICROSEC - 微秒 |
、HEX_NANOSEC - 纳秒、HEX_PICOSEC - 皮秒 | ||
tc | Input | 指向要在每个间隔时间单位调用的函数的指针。 见第 3.2.2 节 |
Return
名字 | 描述 |
---|---|
HEX_STAT_SUCCESS | Success |
HEX_STAT_DEVICE_NOT_FOUND | 无法注册回调 |
Description
外部设备模型使用它从已注册的设备列表中删除自己,以便在每次核心频率更改时获取回调。
由需要模拟器通知间隔模拟器时间单位已过期的外部设备模型使用。 该通知将继续由模拟器传递,直到取消。
时间增量的粒度受当前内核频率设置的限制。可用的最细粒度对应于单个处理器周期所用的时间。所有时间值都根据当前处理器时钟频率进行缩放,并在内核频率发生变化时重新缩放。
2.10.6 AddTimedCallbackFP
Prototype
typedef void (*timed_callback) (void *handle);
HEXAPI_Status AddTimedCallbackFP(void *handle,
HEX_8f_t interval, HEXAPI_Interval i_typ, timed_callback tc)
Parameters
名字 | 类型 | 描述 |
---|---|---|
handle | Input | 从 RegisterCosim() 或 RegisterCosimArgs() 返回的外部总线模型句柄 |
interval | Input | 以模拟器时间单位表示的间隔 (表示为双精度浮点值) |
i_typ | Input | 时间单位类型: HEX_MILLISEC - 毫秒、HEX_MICROSEC - 微秒 |
、HEX_NANOSEC - 纳秒、HEX_PICOSEC - 皮秒 | ||
tc | Input | 指向要在每个间隔时间单位调用的函数的指针。 见第 3.2.2 节 |
Return
名字 | 描述 |
---|---|
HEX_STAT_SUCCESS | Success |
HEX_STAT_DEVICE_NOT_FOUND | 无法注册回调 |
Description
由需要模拟器通知间隔模拟器时间单位已过期的外部设备模型使用。 该通知将继续由模拟器传递,直到取消。
时间增量的粒度受当前核心频率设置的限制。 可用的最细粒度对应于单个处理器周期所用的时间。 所有时间值都根据当前处理器时钟频率进行缩放,并在核心频率发生变化时重新缩放。
注意
此函数与 AddTimedCallback(第 2.10.5 节)相同,只是时间间隔表示为双精度浮点值。
版权声明
本文为[weixin_38498942]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_38498942/article/details/124317989
边栏推荐
- C语言:表达式求值(整型提升、算术转换 ...)
- 杰理之更准确地确定异常地址【篇】
- High paid programmer & interview question series 91 limit 20000 loading is very slow. How to solve it? How to locate slow SQL?
- [lnoi2014] LCA - tree chain subdivision - multipoint LCA depth and problems
- Go语言实践模式 - 函数选项模式(Functional Options Pattern)
- Understand scope
- Longest common front string
- PHP notes (I): development environment configuration
- 杰理之AES能256bit吗【篇】
- 1D / 1D dynamic programming learning summary
猜你喜欢
Comparison of overloading, rewriting and hiding
防疫登记小程序
Interviewer: let's talk about some commonly used PHP functions. Fortunately, I saw this article before the interview
Leetcode0587. Install fence
《谷雨系列》空投
构建元宇宙时代敏捷制造的九种能力
Epidemic prevention registration applet
Redis 异常 read error on connection 解决方案
Redis exception read error on connection solution
0704、ansible----01
随机推荐
MapReduce核心和基础Demo
[hdu6833] a very easy math problem
ABAP CDs view with association example
failureForwardUrl与failureUrl
构建元宇宙时代敏捷制造的九种能力
2022年广东省安全员A证第三批(主要负责人)考试试题及答案
P1446 [hnoi2008] cards (Burnside theorem + DP count)
第二章 Oracle Database In-Memory 体系结构(上) (IM-2.1)
Odoo server setup notes
Expansion of number theory Euclid
DBA常用SQL语句(6)- 日常管理
Simply understand = = and equals, why can string not use new
使用IDEA开发Spark程序
Comparison of overloading, rewriting and hiding
[hdu6868] absolute math (pusher + Mobius inversion)
ES-aggregation聚合分析
SAP ECC connecting SAP pi system configuration
Formattime timestamp format conversion
第一章 Oracle Database In-Memory 相关概念(续)(IM-1.2)
Redis 内存占满导致的 Setnx 命令执行失败