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.
大家好、
我们正在进行一个项目。在该项目中、我们使用 TDA2xx EVM 开发算法。我们是此 TDA2x ADAS 系列的新成员。
我们希望开发 Canny 边缘检测算法。因此、我们使用了 TI 的 vxlib 库 API。
要开发此算法、我们必须遵循以下列出的步骤、
使用抗噪运算符(Sobel)计算梯度幅度和方向。
2.使用渐变方向信息对梯度幅度进行非最大抑制。
应用双阈值以确定潜在边沿。
使用迟滞阈值跟踪修改后的梯度图像中的边沿以生成二进制结果。
VxLIB 提供了所有步骤 的 API 来开发 Canny 边缘检测,当我们使用索贝尔滤波器图像 API (第一步)时,输出帧的宽度将减半,此 API 会消耗90%的已用 DSP。因此,我们在下面列出了对此的查询
为什么该 API 需要90%的 CPU 使用率?
2.如何在 Sobel API 中实现全帧宽度?
我们已附上了 sobre el API 的 c 文件供您参考。
如果您需要我们方面的更多信息、请告知我们。
您好 Jesse、
感谢您的支持。
我们获得了用于 Canny 边缘检测的正确输出。但现在我们面临 DSP 处理器过冲问题。
根据您在2017年10月13日的回复中的建议
"如果 DSP 没有打开高速缓存或将其映射到适当的 DDR 地址范围、则这将是一个问题。 如果缓存配置正确、则可以进一步优化使用 DMA 将数据块移入/移出 L2SRAM、并一次在一个块上运行此 API "
请回答我的以下问题、以获取您的上述回复、
1)正确配置高速缓存意味着什么(您可以建议更好的方法来配置高速缓存,以便我们可以优化算法处理性能)?
2) 2)您是否还可以共享用于配置 DSP1 L2SRAM 缓存以及代码优化的文档?
如果您需要我们方面的更多信息、请告诉我。
谢谢、
Parth Modi
1)正确配置高速缓存意味着什么(您可以建议更好的方法来配置高速缓存,以便我们可以优化算法处理性能)?
L2SRAM 为256KB + 32KB。 32KB 部分始终仅用作存储器映射 SRAM。 剩余的256KB 可配置为高速缓存或存储器映射 SRAM、或两者的混合(请参阅 TRM)。 如果将此 RAM 的一部分配置为缓存、则有一系列寄存器可配置 L3存储器映射中的哪些存储器页面、以配置为"可缓存"页面、而不是不可缓存页面。
如果您在 TI EVM 上使用来自 TI VSDK 的 VLIB 函数、则缓存应已"正确"配置、即 L2SRAM 至少部分配置了缓存、用于共享图像缓冲区的存储器缓冲区配置为可缓存。 有些区域是不可高速缓冲的、这些区域通常是较小的数据结构、用于内核之间的同步和锁定。
如果您在没有运行 VSDK BIOS 和应用程序的情况下以独立方式(裸机)使用 VLIB 测试台、 VLIB 测试台有一个在 main 开始时调用的函数、用于配置这些高速缓存寄存器、以便从其中分配图像缓冲区的堆位于可缓存地址范围内。
您可能需要担心的情况是、如果您已更改 VSDK 中的存储器映射、例如使用定制电路板设计时。 或者、您尝试访问 VLIB 中图像缓冲区的存储器可能会分配到不可连接的存储器区域中。
在任何这些情况下、我建议您参考以下文档以及 TRM 中的相关存储器映射、 如果高速缓存寄存器的配置方式使您能够确认访问代码或数据的存储器地址范围是否位于这些高速缓存寄存器中配置的"可缓存"存储器区域内、则使用 JTAG 进行调试。
2) 2)您是否还可以共享用于配置 DSP1 L2SRAM 缓存以及代码优化的文档?