【问题标题】:Directly Access RAM on AUTOSAR Environtment在 AUTOSAR 环境中直接访问 RAM
【发布时间】:2016-03-01 04:21:28
【问题描述】:

我想读取具有给定地址和数据长度的 RAM 中的值。我已经阅读了几个 RTE API,我认为没有 API 可以满足我的需求。我希望有像Rte_Ram_read(address,length) 这样的API 或其他东西。我找到了用于访问 PerInstanceMemory 或 InterRunnableVariable 的 API,但它们的工作方式不像我想要的那样。

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

【问题讨论】:

    标签: autosar


    【解决方案1】:

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

    软件组件的想法是它独立于硬件并且是独立的。要与其他组件通信,您应该使用端口。要与可运行对象通信,您应该使用InterRunnableVariable 或PerInstanceMemory。

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

    【讨论】:

    • 感谢您的帖子@ZzetT。我已经有一个想要使用 AUTOSAR 标准更改的应用程序。在我看来,如果有这样的 RTE API,更改我的应用程序会更容易。在进一步阅读有关 autosar 之后,我认为您是完全正确的。我的问题是,我想创建一个 SWC,我想提交给 ECU 集成商,但即使在这个时候我也不知道整个 AUTOSAR 系统。所以我现在能做的就是创建 SWC 设计,但不会改变行为。 (正如我老板所说)
    【解决方案2】:

    这取决于哪个 SWC 将数据放入 RAM。这个SWC负责定义接口。

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

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

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

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

    【讨论】:

    • 感谢您的回答。从技术上讲,您的答案是正确的,但似乎不是我想要的,因为 AUTOSAR 不推荐这种访问方式。特别是我们谈论 SWC。
    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多