String aus MC Flash mit strcat lesen wie?



  • Befindet sich an Adresse 0xDF6080 wirklich der String selbst, oder nur ein Zeiger auf den String (der dann wiederum an der dort eingetragenen Adresse liegt)?



  • Nein dort ist wirklich der String selbst gespeichert.



  • Du lässt dir aber auch wirklich alles aus der Nase ziehen... Ist die Zeichenkette nullterminiert, warum funktioniert der Code von Wutz und Pulling my Strings nicht („funktioniert nicht” ist keine Beschreibung des Fehlers).

    Wenn du weißt, dass der String 30 Byte lang ist, kannst du 15 shorts (Annahme 8/16 Bit) daraus ziehen und den String selber zusammenbauen und nullterminieren?
    Ansonsten kannst du auch direkt im Debugger verfolgen, was da vor sich geht.



  • Schreib doch deine eigene strcat Funktion, die mit den __far-Pointern für den Flash umgehen kann.



  • Ich hatte bereits im ersten Beitrag geschrieben:
    Das String ist in ASCII + 0x00 am Ende im Flash hinterlegt.

    Die Testausgabe war leer (als wenn String an erster Stelle eine 0x00 hätte).

    Debugger habe ich leider keinen.

    Wenn ich mit Short auslese sind alle einzelnen Short high und low Bytes vertauscht und die müsste ich dann auch noch "umdrehen". Ich könnte das Programmieren dachte aber es gibt einen ganz simplen Weg mit dem Adresspointer...



  • Jackson0 schrieb:

    dachte aber es gibt einen ganz simplen Weg mit dem Adresspointer...

    Der C-Standard kennt keinen Flashspeicher.
    Wenn der in deinem System mit einem besonderen Pointer angesprochen wird, ist das eine spezielle Erweiterung, deren Handhabung du in der Dokumentation zu deinem System nachlesen musst.



  • Jackson0 schrieb:

    Ich könnte das Programmieren dachte aber es gibt einen ganz simplen Weg mit dem Adresspointer...

    Wie das geht habe ich dir gezeigt.
    Wenn dein Hardwareanbieter sich nicht an die Standard C Regeln hält, dann musst du dich eben exakt an dessen Vorgaben halten und kannst keine standardkonformen Weg einschlagen.
    C bietet für Bit- und Zeigerfrickelei enorme Vielfalt, viel mehr als jede andere Programmiersprache, deshalb wird es oft - wie du siehst - von Hardwarefricklern benutzt - dann natürlichermaßen - wie du siehst - ohne jegliche Plattformunabhängigkeit und du bewegst dich in deinem eigenen Universum, also ohne die Chance, gängige Standard C Wege zu beschreiten.



  • Wenn ich mit Short auslese sind alle einzelnen Short high und low Bytes vertauscht und die müsste ich dann auch noch "umdrehen". Ich könnte das Programmieren dachte aber es gibt einen ganz simplen Weg mit dem Adresspointer...

    Es wird wohl so sein das dein Flash eben nur short-weise genutzt werden kann und das sollte auch definitiv aus einer Hardware Doku zu deinem System hervor gehen, wenn es wirklich so ist - was nur du bestätigen kannst - musst du es eben short-weise machen

    was aber definitiv nicht erklärt warum dann dein Setup_PPG Beispiel "geht"



  • und es wäre wohl auch sehr hilfreich wenn du sagen würdest welchen
    FX16 du hast

    http://www.cypress.com/products/16fx

    und welchen C/C++ Kompiler du verwendest



  • warst du nach den letzten Versuchen so frustriert das du den MC ertst mal ein Jahr in die Schublade gesteckt hast 🙂

    https://www.c-plusplus.net/forum/342041-full


Anmelden zum Antworten