2020-07-17 04:50 AM
Hello, I was looking at the microcontroller binary of a project that I'm using the touchgfx library and something is getting my attention. There is a big part of the file that contains a lot of code information from the touchgfx library. I don't think this was compiled as a debug info because it does not disappear using strip tools. I checked the optimization flag, also I stripped debug info, unneeded and other flags, and the same. They always are there. Any idea what can be happening? It's a shame having to spend all these bytes in this unused stuff.
Here is a copy of the info that I'm seeing in the .bin.
Thank you in advance.
2020-08-17 03:36 AM
Hello,
If it is .bin, the file is not a true binary file so not everything that is included inside will be on your target. That includes what you are mentioning in your post.
For instance, .hex is a true binary file and it is this one that should be downloaded into your target.
/Alexandre
2020-08-19 03:03 AM
Hi @Alexandre RENOUX thank you for your answer. Unfortunately, it does not matter the file really. I'm talking about the .bin file because it reflects pretty much what is inside the micro. I can also read the binary from the microcontroller after flashing using the .hex or the .elf via gdb and see this information.
Maybe I'm missing some flags during compilation?
Thank you.
2020-08-19 05:54 AM
This is a bit strange because there's no debug info in the TouchGFX library, plus even if it there was you wouldn't be able to get this debug info because the TouchGFX core library is private and the code inside cannot be shared.
If I understand well, due to these somewhat debug info, your binary is too big ? I need to understand more to be able to see if there's a real issue going on or not.
/Alexandre
2020-08-19 06:41 AM
Well, is not like the binary is too big, but I see the information that shouldn't be there. I understand what you are saying, we don't have access to the source code, but there is something going on. Otherwise, why will I see this? All these messages and some functions name do not exist anywhere in my code. So it must come from there.
eg:
virtual void touchgfx::DMA_Interface::execute()virtual void touchgfx::LockFreeDMA_Queue::pushCopyOf(const touchgfx::BlitOp&)virtual void touchgfx::LockFreeDMA_Queue::pop() ....
bufsize >= size && "Not enough memory allocated for CWR"framework/source/touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.cpp
bufsize >= 2 * sizeof(Cell) && "Not enough memory allocated for CWR" ....
result < allocationsframework/source/common/AbstractPartition.cpp ....
0 == (static_cast<uint16_t>((static_cast<const uint8_t*>(address) - static_cast<uint8_t*>(element(0)))) % element_size())size <= element_size()allocations < capacity() ....
void* touchgfx::AbstractPartition::allocate(uint16_t)USE_ANIMATION_STORAGE && "Animation storage required for this operation. See HAL::setFrameBufferStartAddress"frameBufferAllocator && "HAL::frameBufferAllocator not initialized!"framework/source/touchgfx/hal/HAL.cpp!"HAL::REFRESH_STRATEGY_PARTIAL_FRAMEBUFFER only supports 16bit or 24bit framebuffer"(width > 0) && (height > 0) && "Cannot blit empty rect"(blitOp.operation & getBlitCaps()) && "blit operation not supported"0 && "Unsupported bitmap format in getBitDepth()"virtual void touchgfx::HAL::blitCopyGlyph(const uint8_t*, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, touchgfx::colortype, uint8_t, touchgfx::BlitOperations)virtual uint16_t* touchgfx::HAL::copyFBRegionToMemory(touchgfx::Rect)virtual uint16_t touchgfx::HAL::configurePartialFrameBuffer(uint16_t, uint16_t, uint16_t, uint16_t)void touchgfx::HAL::blitCopy(const uint16_t*, const uint8_t*, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint8_t, bool, uint16_t, touchgfx::Bitmap::BitmapFormat, touchgfx::Bitmap::BitmapFormat)virtual void touchgfx::HAL::blitFill(touchgfx::colortype, uint16_t, uint16_t, uint16_t, uint16_t, uint8_t, uint16_t, touchgfx::Bitmap::BitmapFormat)uint8_t touchgfx::HAL::getBitDepth(touchgfx::Bitmap::BitmapFormat) const0 && "DMA::execute() invalid BlitOp"framework/source/touchgfx/hal/DMA.cpp0 && "LockFreeDMA_Queue overflow!"!isEmpty() && "LockFreeDMA_Queue underflow!" .........
Thanks.