在 AUTOSAR 环境中直接访问 RAM

Directly Access RAM on AUTOSAR Environtment

我想用给定的地址和数据长度读取 RAM 中的值。我已经阅读了几个 RTE API,我认为没有 API 满足我的需求。我希望有 API 之类的 Rte_Ram_read(address,length) 之类的。我发现 API 可以访问 PerInstanceMemoryInterRunnableVariable,但它们并没有像我想要的那样工作。

我的问题,有没有像我想要的API?还是我必须自己创建?或者对我有什么建议吗?

问题是你为什么要这样做?

软件组件的思想是它独立于硬件并且是自包含的。要与其他组件通信,您应该使用端口。要与可运行对象通信,您应该使用 InterRunnableVariablePerInstanceMemory.

从 RAM 中读取内容的用例是什么?数据从何而来?

这取决于哪个SWC将数据放入RAM。定义接口的责任由这个 SWC.

承担

如果你定义一个指向所需地址的指针并读取值,我相信它是根据 AUTOSAR
例如,如果值为 32 位:

unsigned int * pAddr = (unsigned int *)0xYYYYZZZZ;
int value = *pAddr;

0xYYYYZZZZ 是您要读取的 RAM 中的地址。通常,它应该 byte 对齐 4(取决于处理器)。

您还应该注意字节顺序(大端或小端),因为字节的顺序可能相反。