Gast
#4752011
Hallo, gibt es beim Cortex z.B. STM32F4... die Möglichkeit die RAM-Auslastung während der Laufzeit darstellen zu lassen? Welche Hardware/Software wäre dazu nötig? Danke Peter
|
Anzeige
|
RAM Monitoring beim Cortex
Gast
#4752011
Hallo, gibt es beim Cortex z.B. STM32F4... die Möglichkeit die RAM-Auslastung während der Laufzeit darstellen zu lassen? Welche Hardware/Software wäre dazu nötig? Danke Peter
Gast
#4752022
http://www.lauterbach.com/frames.html?home.html Wenns wer kann, dann der. Wir hatten das mal bei einem sehr großen Projekt (Automobil). Allerdings hab ich das nur genutzt, ich weiß nicht wie das umgesetzt wurde. Kostet aber halt ein vermögen. Theoretisch kann man das auch statisch bestimmen ohne das Programm laufen zu lassen. Habe dazu mal ein Paper von ner Konferenz gelesen, ist aber bestimmt schon 4 Jahre her.
Gast
#4752028
Kommt drauf an ob du den Heap benutzt und wenn ja, wie. Wenn nicht: einfach nur den Stack Pointer auslesen. Wenn doch: Den End Heap Pointer auslesen, oder besser die malloc & free Implementierung konsultieren / anpassen. Hat mit Cortex M also gar nichts zu tun, sondern nur mit der C Library. Hallo Peter, Peter S. schrieb: > gibt es beim Cortex z.B. STM32F4... die Möglichkeit die RAM-Auslastung > während der Laufzeit darstellen zu lassen? > > Welche Hardware/Software wäre dazu nötig? Die einzigen "Auslassungen", die schwanken können, wären ja die des (der) Stack(s) und des heaps. Letzterer ist ein Stück Software, dass in der Regel mit Deinem Compiler mitgeliefert wird und dort müsstest Du mal in der Dokumentation gucken, ob der dies hergibt. So ein heap ist aber auch kein Hexenwerk und kann man notfalls auch selbst schreiben, um an diese Informationen zu kommen. Neben der Menge des freien Speichers, ist meist die Größe des maximal am Stück anforderbaren Menge Speicher, als grober Indikator für die Fragmentierung des heaps, interessant. Beim Stack kommt es darauf an, ob Du ein OS verwendest oder nicht. Verwendest Du keins, kannst Du den belegten Speicher am stack pointer erkennen. mfg Torsten
Gast
#4752041
Peter S. schrieb: > gibt es beim Cortex z.B. STM32F4... die Möglichkeit die RAM-Auslastung > während der Laufzeit darstellen zu lassen? > > Welche Hardware/Software wäre dazu nötig? Methode des Armen Mannes: -(freien) Speicher zum Zeitpunkt T_0 mit einem definierten Pattern beschreiben -zu einem späteren Zeitpunkt T_1 zellen zählen die diese Muster noch enthalten. -> überschrieben Zellen wurden offenbar im Zeitraum zw. T_0 und T_1 ausgelastet.
Gast
#4752055
Hallo, danke für die bisherigen Antworten. Die softwaretechnischen Möglichkeiten sind mir bekannt. Würde jedoch gerne wissen ob es auch eine andere Möglichkeit gibt. Kann noch jemand etwas dazu sagen ob dies mit einem Lauterbach Gerät möglich ist? Gruß Peter
Gast
#4752076
Peter S. schrieb: > Würde jedoch gerne wissen ob es auch eine andere Möglichkeit gibt. Wie soll das in Hardware gehen? Der Controller sieht nur eine Menge Bytes und hat keine Ahnung welche "belegt" oder "frei" sind. Das weiß nur die Software (insb. die C-Library und der Linker). Daher ist dieses Problem nur durch Software-Anpassung zu lösen. Der Debugger hat damit nichts zu tun; höchstens kennt die zum Debugger zugehörige Software die genutzte C-Library und weiß deren Datenstrukturen zu interpretieren.
Gast
#4752103
Ich lasse mir das auf einer HTML ausgeben. statischen verbrauch, heap , stack ... aktuelle auslastung der CPU ( FreeRTOS ) gehen tut das.. passendes linker file und ergänzung der funktionen Da braucht man keinen Lauterbach für, ein STLink reicht vollkommen :-) Bevor dein Programm losläuft (bzw. deine Threads starten) einfach den Stack (Stackpointer von Offs. 0x00 des Flash Image bzw. die Arrays für die Thread-Stacks) mit 0xcc initialisieren (memset() ) und das Programm ne Weile laufen lassen. Achtung: Im main Stack (MSP) steht am Anfang schon was, nicht überschreiben, sondern erst dahinter mit 0xcc initialisieren. Nach beliebiger Laufzeit schaut man sich dann an, wie viel 0xcc nach oben hin noch übrig ist. Das CMSIS-RTOS / RTX zeigt die aktuelle Thread-Stack Auslastung im MDK-ARM Debug an. In meinem System mit RTOS lasse ich mir die Stack Arrays einfach als uint64_t Hex Werte im Watch Window anzeigen. So hat man eine recht kompakte Übersicht über die Auslastung. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|