2020-03-23 02:09 AM
I've ported TouchGFX on custom HW, but it doesn't work (
I created class related from HAL, initialized TouchGFX and executed taskEntry().
It is done in the next way:
static LCD4bpp oled;
static TAPI_Btn_c btnCtrl(keys);
static NoDMA dma;
static NoTouchController tc;
uint32_t arFrameBuff[8192 / 4 + 1];
void touchgfx_init()
{
HAL& hal = touchgfx_generic_init<TAPI_HAL_c>(dma, oled, tc, 256, 64, 0, 0);
hal.setFrameBufferStartAddress((uint16_t*)arFrameBuff, 4, false, true);
hal.setButtonController(&btnCtrl); //Enable button controller
hal.lockDMAToFrontPorch(false);// Allow DMA transfers to start immediately
hal.enableMCULoadCalculation(false);
}
...
void RunMainTask(void const* args)
{
touchgfx_init();
touchgfx::HAL::getInstance()->taskEntry(); // Never returns
}
I see that periodically is executed touchgfx::OSWrappers::signalVSync(), one time OSWrappers::takeFrameBufferSemaphore() and TAPI_Btn_c::sample().
I can not see other activities from TouchGFX.
I understood that possible I initialized something incorrectly, but can not to debug it.
Could somebody suggest some solution or a way how I can debug this issue?
2020-03-24 01:58 PM
Fixed.
I use OSWrappers_cmsis.cpp wrapper. It initializes semaphore 'frame_buffer_sem' and takes it. It is issue, There the semaphore should be released.
Possible my solution helps somebody.