在 AUTOSAR 环境中直接访问 RAM
Directly Access RAM on AUTOSAR Environtment
我想用给定的地址和数据长度读取 RAM 中的值。我已经阅读了几个 RTE API,我认为没有 API 满足我的需求。我希望有 API 之类的 Rte_Ram_read(address,length)
之类的。我发现 API 可以访问 PerInstanceMemory
或 InterRunnableVariable
,但它们并没有像我想要的那样工作。
我的问题,有没有像我想要的API?还是我必须自己创建?或者对我有什么建议吗?
问题是你为什么要这样做?
软件组件的思想是它独立于硬件并且是自包含的。要与其他组件通信,您应该使用端口。要与可运行对象通信,您应该使用 InterRunnableVariable
或 PerInstanceMemory
.
从 RAM 中读取内容的用例是什么?数据从何而来?
这取决于哪个SWC将数据放入RAM。定义接口的责任由这个 SWC.
承担
如果你定义一个指向所需地址的指针并读取值,我相信它是根据 AUTOSAR。
例如,如果值为 32 位:
unsigned int * pAddr = (unsigned int *)0xYYYYZZZZ;
int value = *pAddr;
0xYYYYZZZZ
是您要读取的 RAM 中的地址。通常,它应该 byte
对齐 4
(取决于处理器)。
您还应该注意字节顺序(大端或小端),因为字节的顺序可能相反。
我想用给定的地址和数据长度读取 RAM 中的值。我已经阅读了几个 RTE API,我认为没有 API 满足我的需求。我希望有 API 之类的 Rte_Ram_read(address,length)
之类的。我发现 API 可以访问 PerInstanceMemory
或 InterRunnableVariable
,但它们并没有像我想要的那样工作。
我的问题,有没有像我想要的API?还是我必须自己创建?或者对我有什么建议吗?
问题是你为什么要这样做?
软件组件的思想是它独立于硬件并且是自包含的。要与其他组件通信,您应该使用端口。要与可运行对象通信,您应该使用 InterRunnableVariable
或 PerInstanceMemory
.
从 RAM 中读取内容的用例是什么?数据从何而来?
这取决于哪个SWC将数据放入RAM。定义接口的责任由这个 SWC.
承担如果你定义一个指向所需地址的指针并读取值,我相信它是根据 AUTOSAR。
例如,如果值为 32 位:
unsigned int * pAddr = (unsigned int *)0xYYYYZZZZ;
int value = *pAddr;
0xYYYYZZZZ
是您要读取的 RAM 中的地址。通常,它应该 byte
对齐 4
(取决于处理器)。
您还应该注意字节顺序(大端或小端),因为字节的顺序可能相反。