主题中讨论的其他器件:HALCOGEN
您好!
当我启用 DMA 奇偶校验(0xAU)并且开始配置请求线路+ DMA 控制数据包时、我看到 ESM 组1报告了一个0x08、这是一个 DMA 奇偶校验错误。 是否有可能避免由于大多数 PBIST RAM 测试已经成功执行。
启用 DMA 奇偶校验时、是否需要遵循一个序列? 我已经阅读了与自动初始化例程相关的内容、但我不知道所有步骤。 目前、我在配置控制数据包之前启用该方、但一旦我跳过控制数据包功能、ESM 就会报告 DMA 奇偶校验错误。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
当我启用 DMA 奇偶校验(0xAU)并且开始配置请求线路+ DMA 控制数据包时、我看到 ESM 组1报告了一个0x08、这是一个 DMA 奇偶校验错误。 是否有可能避免由于大多数 PBIST RAM 测试已经成功执行。
启用 DMA 奇偶校验时、是否需要遵循一个序列? 我已经阅读了与自动初始化例程相关的内容、但我不知道所有步骤。 目前、我在配置控制数据包之前启用该方、但一旦我跳过控制数据包功能、ESM 就会报告 DMA 奇偶校验错误。
您好 Krax、
加电后、包括奇偶校验位在内的 RAM 内容无法得到保证。 为了避免读取 RAM 时出现奇偶校验故障、必须初始化 RAM。
HALCoGen 生成的启动代码应包括用于初始化 DMA RAM 的函数调用:
memoryInit((UINT32)((UINT32) 1U <<1U )/* DMA RAM */
|(uint32)((uint32) 1U << 2U)/* VIM RAM */
|(UINT32)((UINT32) 1U << 5U)/* CAN1 RAM */
|(UINT32)((UINT32) 1U << 6U)/* CAN2 RAM */
|(UINT32)((UINT32) 1U << 10U)/* CAN3 RAM */
|(uint32)((uint32) 1U << 8U)/* ADC1 RAM */
|(uint32)((uint32) 1U << 14U)/* ADC2 RAM */
|(uint32)((uint32) 1U << 3U)/* HET1 RAM */
|(uint32)((uint32) 1U << 4U)/* HTU1 RAM */
|(uint32)((uint32) 1U << 15U)/* HET2 RAM */
|(UINT32)((UINT32) 1U << 16U)/* HTU2 RAM */
如果通过调用 API 来运行 DMA RAM 奇偶校验会发生什么情况: dmaParityCheck()?
QJ Wang、您好!
感谢您的快速反馈。 当我调用 memoryInit 而不对 DMA 进行任何进一步初始化(memoryInt (0x1 /* No DMA init */))时、并且稍后我通过调用上面提到的相应函数来激活 DmaParity、对于这个调试周期步骤似乎是可以的。 如果我接近几个特定于 DMA 的初始化步骤、例如 RTI 上下文中使用的 dmaConfigCtrlPaket、则 ESM 组1通过设置寄存器中的值0x8直接报告奇偶校验错误。 当我跳过这个 dmaConfigCtrlPaket 时、ESM 寄存器上不会发出错误。
是否需要特定的初始化步骤? 我想您在几个 HET 奇偶校验主题中提到,在使用 DMA RAM 初始化执行 memoryInit()之前,需要首先调用 xPartiyCheck(),或者我是否需要遵循不同的序列?
dmaConfigCtrlPacket()不读取/写入 DMA 内存,因此调用此函数不会生成奇偶校验错误。
在启动过程中、代码应自动初始化所有片上 SRAM (MCU RAM 和外设 RAM)、并检查所有外设存储器(NHET RAM、ADC、DMA、MibSPI、CAN、 和 VIM 等)。