当前位置:网站首页>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
边栏推荐
猜你喜欢

元宇宙时代的职业规划与执行

failureForwardUrl与failureUrl

Construire neuf capacités de fabrication agile à l'ère métacosmique

《谷雨系列》空投

Leetcode0587. Install fence

Computer network security experiment II DNS protocol vulnerability utilization experiment

C language: expression evaluation (integer promotion, arithmetic conversion...)

Kernel PWN learning (3) -- ret2user & kernel ROP & qwb2018 core

Leetcode question bank 78 Subset (recursive C implementation)

Comparative analysis of meta universe from the dimension of knowledge dissemination
随机推荐
Understand scope
Comparative analysis of meta universe from the dimension of knowledge dissemination
0704、ansible----01
杰理之有时候定位到对应地址的函数不准确怎么办?【篇】
2022年流动式起重机司机考试题库模拟考试平台操作
Prefix sum of integral function -- Du Jiao sieve
Golang force buckle leetcode 396 Rotation function
構建元宇宙時代敏捷制造的九種能力
The central control learning infrared remote control module supports network and serial port control
Solving Lucas number and combination theorem
DBA常用SQL语句(3)- cache、undo、索引和等待事件
Redis expired key cleaning and deletion policy summary
Skill point digging
Epidemic prevention registration applet
[lnoi2014] LCA - tree chain subdivision - multipoint LCA depth and problems
ES-aggregation聚合分析
Windows安装redis并将redis设置成服务开机自启
Number theory blocking (integer division blocking)
论文阅读《Integrity Monitoring Techniques for Vision Navigation Systems》——3背景
NEC红外遥控编码说明