Part Number:TDA4VM
我想将现有的 PDK 驱动程序移植到 AUTOSAR 环境中,如何实现?
例如,我们如何从 PDK 移植 I2C 驱动程序,以便将其添加到我们的工程中?
Annie Liu:
PDK 驱动程序为其驱动程序提供了多个模块,这些模块可能在 AUTOSAR 环境等外部编译环境中具有冗余功能。该 PDK 提供了多个通过驱动程序使用的组件,您可以将其中的大部分组件链接到工程中:
– ti.osal.aer5f (OSAL)
– rm_pm_hal.aer5f(电源管理,复位管理器)
– ti.board.aer5f(板级支持)
– ti.csl.init.aer5f, ti.csl.aer5f(芯片支持库)
– sciclient_direct.aer5f (Sciclient)
OSAL
(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/pdk_jacinto_08_00_00_37/docs/userguide/jacinto/modules/osal.html)
操作系统抽象层 (OSAL) 在 AUTOSAR 环境下很可能具有冗余功能,以及最需要移植的驱动程序。该模块提供了各种组件,如文档中详细介绍的任务、信号量、计时器、硬件中断等。
使用 OSAL 库时有几个选项:
1) 按原样使用 OSAL 库
– 这是最简单的解决方案。将库作为驱动程序构建的一部分,这样一来,只需将 PDK 中的所有必要库链接起来,即可使原始 PDK 驱动程序正常工作。只需将驱动程序复制到所需的工程中即可。
2) 仅在 PDK 驱动程序中替换 OSAL 调用
– 特定驱动程序可以将其所有 OSAL 调用替换为 AUTOSAR 环境等效项。这仍将使用从 PDK 获取的其他库中的 OSAL API。但是,驱动程序中可能存在 OSAL API,而 AUTOSAR 环境等效项可实现简单的替换。SDK 8.0 I2C PDK 驱动程序的以下示例显示了可以替换 OSAL 函数 I2C_OSAL.h 的位置:
– 在这里,HwiP_disable() 将被相应的函数取代,该函数可以禁用代码关键部分的中断。
3) 将 OSAL API 替换为相应的 AUTOSAR 环境功能
– 最密集的解决方案是用 AUTOSAR 环境函数替换 OSAL API。在这里,OSAL API 需要在 OSAL 库源中被替换。如果这是所需的解决方案,则需要研究来确定在使用特定的 AUTOSAR 环境时是否可以实现。
* 可以针对按原样移植的 PDK 驱动程序拉取以下库,但这些库可能依赖于 OSAL 库。
电源管理
(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/pdk_jacinto_08_00_00_37/docs/userguide/jacinto/modules/pm.html)
此底层驱动程序提供用于电源和热管理的 API。它不会干扰 AUTOSAR 环境功能,因此建议在需要时进行拉取。文档中提供了有关它的更多信息。
板级支持
(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/pdk_jacinto_08_00_00_37/docs/userguide/jacinto/family_cfg/jacinto/index_board_jacinto.html)
此库用于特定于器件的电路板初始化和配置。运行应用程序可能需要它,并且可以根据需要将该库拉取到 AUTOSAR 环境中。文档中提供了有关它的更多信息。
芯片支持库/CSL
(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/pdk_jacinto_08_00_00_37/docs/userguide/jacinto/modules/csl.html)
CSL 库包含有关 SoC 的各种信息,例如模块的存储器地址、寄存器字段、低级驱动程序等。它还包括特定于内核的初始化,例如 ARM R5F 内核初始化。此库对于 PDK 驱动程序是必需的,它们依赖于底层驱动程序和模块定义。
SCICLIENT
(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/pdk_jacinto_08_00_00_37/docs/userguide/jacinto/family_cfg/jacinto/index_modules_sciclient_jacinto.html)
由于 SoC 系统控制的集中式设计,使用 SCICLIENT(以及与此相关的其他库)的驱动程序很可能需要 SCICLIENT。它负责多种配置,例如中断路由、电源管理等。