Sending String from C code to GUI

asked May 22, 2018 in GUI Development by noemirk

I am trying to update my GUI with a string from the native C code. I implemented the Device Driver and the String Property along with its UpdateString method. I cannot seem to get past an error. I followed the Device Integration Tutorial and looked over all the forum discussions and cannot get past this. I went over the articles Integrating with the device and Device Class and Device Driver.

This is my Embedded Wizard part

This is what I have in native C. 

The error is: 

assertion "block_to_ptr(remaining) == align_ptr(block_to_ptr(remaining), ALIGN_SIZE) && "remaining block not aligned properly"" failed: file "./Architecture_and_Integration/Third_Party/TLSF/tlsf.c", line 469, function: block_split

I tried modyfying the code and sometimes all I get is a HARDFAULT


Thank you for all support.

1 Answer

0 votes
answered May 23, 2018 by Paul Banach


the error message is reported by the memory manager. Evidently the heap is corrupted. Try to clarify following questions:

1. Which EmWi version are you using?

2. Are you using your own HW or an evaluation/dicovery board? Eventually, the RAM configuration is incorrect causing the RAM contents to be lost.

3. If you comment out the above C code section to call the UpdateString() method, does the error still occur? If yes, it is not related to this code.

4. Are you using an operating system? If yes, have you ensured to not execute EmWi code in context of a foreign thread? EmWi code is not thread safe Call EmWi code always in context of the thread, which initialized and drive the GUI.

5. How do you obtain access to the device object (how you initialize the variable DeviceObject)? 

6. The variable DeviceObject, does it store the reference to the object permanently?  If yes, the EmWi Garbage Collector does not know anything about it. As soon as the object is not used in the GUI application, it is released leaving your variable initialized with an outdated reference. Accessing it may currupt the heap. The best is to not store references to EmWi objects in C code.

7. Do you have another (your own) C code linked together with the application? Try to narrow down the possible heap corruption by commenting out your code blocks.

Hope it helps you to narrow down the problem.

Best regards

Paul Banach

Ask Embedded Wizard

Welcome to the question and answer site for Embedded Wizard users and UI developers.

Ask your question and receive answers from the Embedded Wizard support team or from other members of the community!

Embedded Wizard Website | Privacy Policy | Imprint