2023-06-01 03:40 AM - edited 2023-11-20 04:13 AM
Using Keil ARM MDK 5.37 with armclang.
I migrated our TouchGFX 4.20 project to version 4.21.4 for testing if an annoying graph bug might be fixed.
Now the binary is muuch larger and does not fit into microcontroller flash no more. I figured out that the new library contains references to C++ exception code.
4.20 linker output (notice the library name libcpp_wnu)
4.21.4 linker output (notice the library name libcpp_wnux)
Likely this is due to the new library referencing to the symbol _
The new library seems to reference the symbol "__aeabi_unwind_cpp_pr0" at various points where the old one does not. This leads to heaps of exception related code to be included afterwards.
It seems as if the new lib has been built with -fexceptions.
Is there a version without exceptions?
Thank you,
Lukas
Solved! Go to Solution.
2023-10-31 04:40 AM
Hi Flemming,
had another device today with this issue. The error occurs when the x-axis range is too large. In that case StaticDataGraph::xScreenRangeToIndexRange() experiences an overflow in muldivQ5() which leads to an invalid x range. In our case the x axis unit is in seconds with precision of 0.1. The graph can hold timeseries spanning from few minutes to many months. At about 3 months, the overflow occurs.
I mitigated the issue by reducing the x-axis precision from 0.1 to 1 which postpones the problem to ~30 months which is no more relevant for our case.
Although this is an edge-case it would be nice to see it fixed.
2023-06-29 02:17 AM
The issue is fixed with TouchGFX 4.22.
2023-06-29 03:53 AM
Hi.
What was the annoying graph bug, and is that also solved?
Regards
2023-10-02 11:22 PM
Hi Flemming,
sorry I have not seen your reply until now.
The issue is as follows: We have a screen containing a carousel element with 3-4 pages. On each page there's a container with various content. One of these contains a static graph, 5 of those respectively. We use four graphs to display four timeseries data on top of each other. The fifth is only for second y-axis labelling and contains no actual data. The data can be thousands of measurement points but is thinned out to max. 155 points before drawing.
Now when the measurement data is evenly spread over the whole graph, there is no problem. But sometimes there's holes in the data when there's an outage for some reason. It is not clear under which exact circumstances it happens, when sliding the carousel to show the graph screen, the graphs first draw correctly but the data lines disappear after sliding the carousel over a certain point. Unfortunately I never had the chance to have that situation in the debugger because it fixes itself after some more points were recorded and displayed. I have not seen it recently so I don't bother fixing it for now. It seems to be tied directly to the measurement data. When I updated to 4.22 the issue was still there if I recall correctly.
Maybe this helps for further releases.
BR, Lukas
2023-10-31 04:40 AM
Hi Flemming,
had another device today with this issue. The error occurs when the x-axis range is too large. In that case StaticDataGraph::xScreenRangeToIndexRange() experiences an overflow in muldivQ5() which leads to an invalid x range. In our case the x axis unit is in seconds with precision of 0.1. The graph can hold timeseries spanning from few minutes to many months. At about 3 months, the overflow occurs.
I mitigated the issue by reducing the x-axis precision from 0.1 to 1 which postpones the problem to ~30 months which is no more relevant for our case.
Although this is an edge-case it would be nice to see it fixed.