- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Verkettete Liste für ASURO

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von Spacy Bar Beitrag anzeigen
    Da stand etwas von Heap-Defragmentierung per Funktionsimplimentierung, allerdings kein Beispiel. Wenn du davon was verstehst, würde ich mich sehr über eine Erklärung freuen.
    Außerdem wurde die alternative Funktion alloca() erwähnt, mit der Speicher vom Stack angefordert wird. Wird sie genauso verwendet und macht sie in meinem Fall Sinn?
    Heap-Defragmentierung über Funktionen: Keine Ahnung was damit gemeint ist, ich vermute das geht Hand in Hand mit alloca und der Nutzung des Stacks.
    Grundsätzlich: Wenn alle Speicheranforderungen bis zum Ende einer Funktion wieder vollständig freigegeben wurden, bekommst du kein Problem mit der Fragmentierung des Speichers - Weil es keine "überlebenden" Speicherblöcke gibt die den Adressraum fragmentieren können.
    Für solche "kurzlebigen" Speicherobjekte kannst du dann aber auch den Stack verwenden (die beiden Varianten unterschieden sich dann nicht) - Speicher vom Stack wird mit alloca() angefordert. Vorteil: Bei verlassen der Funktion wird er automatisch freigegeben. Vorteil für alloca(): Die Funktion ist deutlich schneller/performanter als malloc/free.

    Nochmal zur Defragmentierung: Das wird ohne größere Klimmzüge nicht funktionieren. Dazu würdest du eine zusätzliche Ebene zusätzlicher Indirektion benötigen die es dir erlaubt, Speicherbereiche im Hintergrund zu verschieben ohne die Verweise darauf ungültig zu machen. Direkte Pointer können das nicht leisten, du müsstest also mit Referenzen arbeiten.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  2. #12
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    @shedepe Ich habe mir soeben ein Beispiel eines Ringbuffers angesehen, aber ihn nicht wirklich verstanden. Könntest du vielleicht ein gut kommentiertes Beispiel posten?
    Problematisch wird es nur wenn man zwischen drin Daten einfügen will.
    Das habe ich nicht vor, nur notfalls bereits gespeicherte Daten löschen, ohne die gesamte Liste/den gesamten Ringbuffer zu leeren.

    LG
    Spacy Bar
    Geändert von Spacy Bar (07.07.2014 um 18:49 Uhr)

  3. #13
    shedepe
    Gast
    Schau mal hier:
    https://www.mikrocontroller.net/articles/FIFO

    http://rn-wissen.de/wiki/index.php/FIFO_mit_avr-gcc

    Prinzip ist wie eine queu (Also First in First out).

  4. #14
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Zitat Zitat von markusj Beitrag anzeigen
    Heap-Defragmentierung über Funktionen: Keine Ahnung was damit gemeint ist, ich vermute das geht Hand in Hand mit alloca und der Nutzung des Stacks.
    Grundsätzlich: Wenn alle Speicheranforderungen bis zum Ende einer Funktion wieder vollständig freigegeben wurden, bekommst du kein Problem mit der Fragmentierung des Speichers - Weil es keine "überlebenden" Speicherblöcke gibt die den Adressraum fragmentieren können.
    Für solche "kurzlebigen" Speicherobjekte kannst du dann aber auch den Stack verwenden (die beiden Varianten unterschieden sich dann nicht) - Speicher vom Stack wird mit alloca() angefordert. Vorteil: Bei verlassen der Funktion wird er automatisch freigegeben. Vorteil für alloca(): Die Funktion ist deutlich schneller/performanter als malloc/free.

    Nochmal zur Defragmentierung: Das wird ohne größere Klimmzüge nicht funktionieren. Dazu würdest du eine zusätzliche Ebene zusätzlicher Indirektion benötigen die es dir erlaubt, Speicherbereiche im Hintergrund zu verschieben ohne die Verweise darauf ungültig zu machen. Direkte Pointer können das nicht leisten, du müsstest also mit Referenzen arbeiten.[...]
    Danke, gut dass das geklärt ist. Ich meinte allerdings mit der Verwendung von alloca() hauptsächlich die Syntax. Ist das 1 zu 1 mit malloc() austauschbar und macht das das free() überflüssig?
    Bitte um baldige Antwort.

    LG
    Spacy Bar
    Hoffe geholfen zu haben!
    -Spacy Bar

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von Spacy Bar Beitrag anzeigen
    Danke, gut dass das geklärt ist. Ich meinte allerdings mit der Verwendung von alloca() hauptsächlich die Syntax. Ist das 1 zu 1 mit malloc() austauschbar und macht das das free() überflüssig?
    http://www.nongnu.org/avr-libc/user-...p__alloca.html
    http://www.nongnu.org/avr-libc/user-...78e5251dfd3ebd

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  7. #17
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Gut, danke für die Erklärung und das für mich googeln.

    LG
    Spacy Bar

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Liste Elektronikversand
    Von ihle im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 10.06.2014, 01:17
  2. Teil liste für UGV Robotter
    Von Chrischi Schmiedi im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 6
    Letzter Beitrag: 06.04.2013, 19:09
  3. Komponenten-Liste für Maturaarbeit
    Von nic3008 im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 17
    Letzter Beitrag: 08.03.2010, 19:22
  4. Roboter-Wettbewerbe/Infos für Liste gesucht
    Von Borg-Kubus im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 8
    Letzter Beitrag: 20.01.2010, 13:33
  5. Pinbelegungs Liste
    Von Da_Vinci13 im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 17.01.2009, 17:44

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test