Data Logger Demo Stack Overflow
Answer
2/7/19 3:22 PM

Hallo,

beim Nutzen der Data Logger Demo https://xdk.bosch-connectivity.com/community?p_p_id=101&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_101_struts_action=%2Fasset_publisher%2Fview_content&_101_returnToFullPageURL=%2Fcommunity&_101_assetEntryId=116161&_101_type=content&_101_urlTitle=data-logger-demo-download&_101_redirect=https%3A%2F%2Fxdk.bosch-connectivity.com%2Fcommunity%3Fp_p_id%3D3%26p_p_lifecycle%3D0%26p_p_state%3Dmaximized%26p_p_mode%3Dview%26_3_groupId%3D37728%26_3_keywords%3Ddata%2Blogger%26_3_redirect%3D%252Fcommunity%26_3_struts_action%3D%252Fsearch%252Fsearch&inheritRedirect=true

passiert ein Stack Overflow:

 

 INFO | Connecting to XDK device 'XDK Device 1' in port 'COM5'...
 INFO | Connection to port 'COM5' established
 INFO | XDK DEVICE 1:  config.bma280_enabled: 0
 INFO | XDK DEVICE 1:  config.bma280_bandwidth: 500
 INFO | XDK DEVICE 1:  config.bma280_range: 16
 INFO | XDK DEVICE 1:  config.bma280_sampling_rate_timer_ticks: 1
 INFO | XDK DEVICE 1:  config.bmg160_enabled: 0
 INFO | XDK DEVICE 1:  config.bmg160_bandwidth: 32
 INFO | XDK DEVICE 1:  config.bmg160_sampling_rate_timer_ticks: 2
 INFO | XDK DEVICE 1:  config.bmi160_enabled: 0
 INFO | XDK DEVICE 1:  config.bmi160_bandwidth_accel: 500
 INFO | XDK DEVICE 1:  config.bmi160_bandwidth_gyro: 32
 INFO | XDK DEVICE 1:  config.bmi160_range: 16
 INFO | XDK DEVICE 1:  config.bmi160_sampling_rate_timer_ticks: 1
 INFO | XDK DEVICE 1:  config.bmm150_enabled: 0
 INFO | XDK DEVICE 1:  config.bmm150_data_rate: 25
 INFO | XDK DEVICE 1:  config.bmm150_sampling_rate_timer_ticks: 5
 INFO | XDK DEVICE 1:  config.bme280_enabled: 0
 INFO | XDK DEVICE 1:  config.bme280_oversampling: 4
 INFO | XDK DEVICE 1:  config.bme280_filter_coefficient: 4
 INFO | XDK DEVICE 1:  config.bme280_sampling_rate_timer_ticks: 10
 INFO | XDK DEVICE 1:  config.max44009_enabled: 1
 INFO | XDK DEVICE 1:  config.max44009_integration_time: 50
 INFO | XDK DEVICE 1:  config.max44009_sampling_rate_timer_ticks: 10
 INFO | XDK DEVICE 1: lightsensorInit Success
 INFO | XDK DEVICE 1: Maximum sampling rate for this configuration: 600 Hz
 INFO | XDK DEVICE 1: Maximum ticks for this configuration: 2 ms
 INFO | XDK DEVICE 1: BMA280 ticks 2 ms 
 INFO | XDK DEVICE 1: BMG160 ticks 2 ms
 INFO | XDK DEVICE 1: BMI160 ticks 4 ms
 INFO | XDK DEVICE 1: BMM150 ticks 5 ms
 INFO | XDK DEVICE 1: BME280 ticks 10 ms
 INFO | XDK DEVICE 1: MAX ticks 10 ms
 INFO | XDK DEVICE 1: ----- STACK OVERFLOW -----Task Name:TASK1 IS -----Current Task Handle:0x2000e420

Wodurch kommt dieser zustande?

An dem Quellcode wurde nichts geändert, die SD Karte ist mit FAT32 formatiert, es befindet sich nur die logger.ini darauf (System Volume Information wurde gelöscht).

XDK Workbench v3.5

Danke für die Hilfe!

0 (0 Votes)
RE: Data Logger Demo Stack Overflow
Answer
2/7/19 4:49 PM as a reply to Till Lemmer.
Hallo Till,

Das liegt an Updates in der XDK-Workbench ab Version 3.4.0, ab welcher es keine weiteren Updates für den Datalogger gab.
Hier hat sich lediglich die minimal verfügbare Stack size pro Task erhöht, weshalb die konfigurierte minimale Stack Size nicht mehr ausreichend ist. Das Problem lässt sich sehr einfach beheben, indem du die minimale Stack Size erhöhst. Gehe dazu in die Implementierungsdatei XDK_Datalogger_cc.c in die Funktion init() . Dort dürftest du drei aufrufe der Funktion xTaskCreate() finden. Ersetze den Ausdruck configMINIMAL_STACK_SIZE jeweils dreimal mit UINT32_C(700) .

Dadurch sollten alle drei Tasks ausreichend Stack Size besitzen und nicht mehr in einen Stack Overflow laufen.

Fall du weitere Fragen oder es Unklarheiten hast, zögere nicht diese zu stellen.

Freundliche Grüße,
Franjo



Hello XDK community,

Till was using the XDK Workbench version 3.5.0 in combination with the old Data Logger demo and ran into a stack overflow with default settings.

The reason why he ran into said overflow is due to changes in the minimal task stack size during the update to XDK-Workbench 3.5.0, while the the Data Logger demo has not been outdated since XDK-Workbench 3.3.0.

To solve the stack overflow, the solution is to increase the used stack size of the three tasks in the Data Logger demo by going into the function init() in XDK_Datalogger_cc.c . There exchange the variable configMINIMAL_STACK_SIZE in the function calls of xTaskCreate() with UINT32_C(700) . This should give all task enough stack size to not run into a stack overflow.

Kind regards,
Franjo
0 (0 Votes)
RE: Data Logger Demo Stack Overflow
Answer
2/8/19 12:25 PM as a reply to Franjo Stjepandic.

Hi Franjo,

das hat funktioniert, vielen Dank!

 

Wenn ich nicht so viele Aufzeichnungen der Messdaten brauche, kann ich dann an das Ende von SDC_writeBackBuffer ein Delay schreiben, welches das Intervall zwischen dem Schreiben der Messwerte erhöht? Oder gibt es dafür schon eine angedachte Lösung in der Demo? Über einen Vorschlag, wie ich es eleganter lösen kann, freue ich mich auch! Danke nochmal!

0 (0 Votes)
RE: Data Logger Demo Stack Overflow
Answer
2/8/19 1:37 PM as a reply to Till Lemmer.
Hallo Till,

Um weniger Messdaten zu erhalten gibt es eine einfachere Möglichkeit als einen Delay einzufügen.

Anstatt in den Schreibprozess einzugreifen, könntest du dich auch mit dem Lesen der Sensordaten beschäftigen. Wenn in zeitlich größeren Abständen die Sensordaten gelesen werden, erhälst du auch folglich weniger Messdaten.
Die einfachste Lösung findet sich in der logger.ini Textdatei, in welcher für jeden einzelnen Sensor die Sampling Rate (Lesevorgang der Sensorwerte) definiert werden kann.

Ich hoffe, das hilft dir erstmal weiter, falls du weitere Fragen hast, zögere nicht dich zu melden.

Freundliche Grüße,
Franjo



Dear XDK community,

Till asked if there is any way to reduce the number of sensor samples. He thought of a way to implement a delay within the SDC_wirteBackBuffer() function.
I advised him that he should switch from the writing process to the process where the sensor data is actually sampled and decrease that.
I recommended to him to use the logger.ini file and the sensor specific sampling_rate values to change the frequency in which the sensor values are read.

Kind regards,
Franjo
0 (0 Votes)
RE: Data Logger Demo Stack Overflow
Answer
2/11/19 8:41 AM as a reply to Franjo Stjepandic.

Hi Franjo,

 

für die möglich Samplingrate ist in der logger.ini ein Wertebereich von [0.0001 - 1000] angegeben, wenn ich jedoch einen Wert<1, nehme, beispielsweise 0.1, wird dieser als 0 interpretiert. Könnte das vielleicht damit zusammenhängen, dass die Variable uint32_t max44009_sampling_rate als integer definiert ist und nicht als float? Falls ja, wie wäre die korrekte Deklaration?

0 (0 Votes)
RE: Data Logger Demo Stack Overflow
Answer
2/25/19 4:26 PM as a reply to Till Lemmer.

Dear XDK community,

Till asked if there is any way to configure falues below 1Hz in the old Data Logger Demo:

Hello Till,

you are right it is an integer, but you can set the MAX44009 update interval of the sensor in a range of mHz by multiplying the max44009_sampling_rate_timer_ticks with 1000 in the file XDK_Datalogger_cc.c

  /* max4409 sensor */
    config.max44009_enabled = ini_getl("MAX44009", "enabled", 0, "logger.ini");
    config.max44009_sampling_rate = ini_getl("MAX44009", "sampling_rate", 0,
            "logger.ini");
    config.max44009_sampling_rate_timer_ticks = (1000 * 1000
            / (ini_getl("MAX44009", "sampling_rate", 0, "logger.ini")));
    config.max44009_integration_time = ini_getl("MAX44009", "integration_time",
            0, "logger.ini");
    config.max44009_sampling_rate_remaining_ticks =
            config.max44009_sampling_rate_timer_ticks;

 

The Data Logger Demo is no longer maintianed as we have a new Data Logger avalibel on our market place. Data Logger Firmware After registration you can also choose a trail version.


Kind regards,

Martin

+1 (1 Vote)
RE: Data Logger Demo Stack Overflow
Answer
3/14/19 10:47 AM as a reply to Martin Clement.
Kommt man an die Data-Logger-Demo noch irgendwie heran?
0 (0 Votes)