Hi,
I'm currently experimenting using DmaUtilsAutoInc3d API on the C7X. Basing myself on dmautils_autoincrement_example.c, I did a unit test where I only init and deinit. I get the following errors printed through the driver print callbacks:
- UDMA: [Error] DRU ch teardown timed out!!!
- AutoInc: DmaUtilsAutoInc3d_deconfigure : Failed : Udma_chDisable
Here's the test
bool TestInitDeinit() { bool success = true; UdmaDriver driver; // C++ wrapper REQUIRE(driver.Init()); // Calls UdmaInitPrms_init, Udma_init // Setup DmaUtilsAutoInc3d_InitParam //================================== constexpr int N_CHANNELS = 1; int32_t ctxSize = DmaUtilsAutoInc3d_getContextSize(N_CHANNELS); REQUIRE(ctxSize > 0); // Using unique_ptr so that it gets deallocated even on failure auto dmaCtx = std::make_unique<DmaAutoIncTests::HeapMem>((size_t) ctxSize); // calls tivxMemAlloc(TEST_DMAUTILS_ALIGN_CEIL(size, 128), TIVX_MEM_EXTERNAL); DmaUtilsAutoInc3d_InitParam initParams; initParams.numChannels = N_CHANNELS; initParams.contextSize = ctxSize; initParams.traceLogLevel = 1; initParams.udmaDrvHandle = driver.Handle(); initParams.DmaUtilsVprintf = &DmaAutoIncTests::DmaUtilsVprintf; //================================== // Setup DmaUtilsAutoInc3d_ChannelInitParam //================================== DmaUtilsAutoInc3d_ChannelInitParam chPrm; chPrm.dmaQueNo = 0; chPrm.druOwner = DMAUTILSAUTOINC3D_DRUOWNER_DIRECT_TR; //================================== // Init API //================================== REQUIRE(UDMA_SOK == DmaUtilsAutoInc3d_init(dmaCtx->ptr, &initParams, &chPrm)); //================================== // Deinit API //================================== REQUIRE(UDMA_SOK == DmaUtilsAutoInc3d_deinit(dmaCtx->ptr)); //================================== REQUIRE(driver.Deinit()); RETURN_STATUS(success); }
What am I missing?
Thanks,
Fred