当前位置:网站首页>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
边栏推荐
- 计算机网络安全实验二|DNS协议漏洞利用实验
- AI上推荐 之 MMOE(多任务yyds)
- Setnx command execution failed due to full redis memory
- Integral function and Dirichlet convolution
- Personal homepage software fenrus
- High paid programmer & interview question series 91 limit 20000 loading is very slow. How to solve it? How to locate slow SQL?
- 2022年制冷与空调设备运行操作考试练习题及模拟考试
- 实践六 Windows操作系统安全攻防
- SAP CR transmission request sequence and dependency check
- 《谷雨系列》空投
猜你喜欢

failureForwardUrl与failureUrl

PHP notes (I): development environment configuration

SAP RFC_ CVI_ EI_ INBOUND_ Main BP master data creation example (Demo customer only)

中控学习型红外遥控模块支持网络和串口控制

SAP pi / PO soap2proxy consumption external WS example

Setnx command execution failed due to full redis memory

Cloud identity is too loose, opening the door for attackers

C语言:表达式求值(整型提升、算术转换 ...)

Personal homepage software fenrus

Failureforwardurl and failureurl
随机推荐
Computer network security experiment II DNS protocol vulnerability utilization experiment
Odoo server setup notes
構建元宇宙時代敏捷制造的九種能力
自定义登录失败处理
MapReduce压缩
Number theory blocking (integer division blocking)
[educational codeforces round 80] problem solving Report
杰理之通常程序异常情况有哪些?【篇】
论文阅读《Integrity Monitoring Techniques for Vision Navigation Systems》
Golang force buckle leetcode 396 Rotation function
How to use SQL statement union to get another column of another table when the content of a column in a table is empty
第二章 In-Memory 体系结构 (IM-2.2)
Redis expired key cleaning and deletion policy summary
Flutter's loading animation is more interesting
JS DOM event
通过流式数据集成实现数据价值(5)- 流处理
SQL调优系列文章之—SQL调优简介
golang力扣leetcode 396.旋转函数
Solving Lucas number and combination theorem
【无标题】