Kleines Techniktagebuch

—Das beste Werkzeug ist ein Tand in eines tumben Toren Hand (Konfuzius Peng)

Patch für das Freebus LPC RS-Interface (sdcc syntax error)

Nachdem von den Autoren bis heute leider keine Reaktion erfolgt ist und meine Verbesserungen entsprechend nicht in das offizielle Repository eingeflossen sind, stelle ich hier einen Patch für das Freebus-Projekt zur Verfügung, mit dem sich die Firmware des LPC RS-Interfaces für den EIB auch mit aktuellen sdcc Versionen (getestet: Windows 3.1.3 #7453 und Linux 3.2.1 #8235) kompilieren lässt.

Mit bestimmmten älteren sdcc Versionen lassen sich die Freebus-Projekte zwar angeblich problemlos kompilieren, mit aktuellen Versionen erhält man aber Fehler wie z.B.

rs232/../com/fb_hal_lpc.h:88: syntax error: token -> 'parity_ok' ; column 20

Die Ursache ist sehr einfach, einige Deklarationen haben sich schlicht geändert, so muss es nun __bit anstatt bit heißen. Dasselbe gilt auch für interrupt, asm o.ä.

Hier nun ein Patch gegen das aktuelle freebus_lpc.git Repository (commit db2fbd7295126e77d6986fb1de15fd05b237251a vom 15. Jul. 2012) für das LPC RS-Interface:
Download Patch

Angewendet wird der Patch wie folgt:


$ git clone git://git.freebus.org/freebus_lpc.git
$ cd freebus_lpc
$ patch -p1 < ~/patch_rs232
$ git diff --ignore-all-space --stat
89LPC922/com/adc_922.c | 6 +++---
89LPC922/com/fb_hal_lpc.c | 14 +++++++-------
89LPC922/com/fb_hal_lpc.h | 8 ++++----
89LPC922/com/fb_hal_lpc936.c | 12 ++++++------
89LPC922/com/fb_hal_lpc936.h | 8 ++++----
89LPC922/com/fb_prot.c | 16 ++++++++--------
89LPC922/com/fb_prot.h | 12 ++++++------
89LPC922/com/fb_rs232.c | 2 +-
89LPC922/com/onewire.c | 8 ++++----
89LPC922/com/onewire.h | 4 ++--
89LPC922/rs232/fb_app_rs.c | 8 ++++----
89LPC922/rs232/fb_app_rs.h | 2 +-
89LPC922/rs232/fb_rs.c | 2 +-
89LPC922/rs232/miniprot.c | 6 +++---
89LPC922/rs232/miniprot.h | 10 +++++-----
15 files changed, 59 insertions(+), 59 deletions(-)

Außerdem habe ich auch ein sehr rudimentäres Makefile (im Moment allerdings auch nur für das RS-Interface) geschrieben, um besonders den Linuxnutzern das Leben zu erleichtern:
Download Makefile

Diese ins Verzeichnis freebus_lpc/89LPC922 kopieren um dann mittels make den Code für das RS-Interface zu kompilieren und die Datei rs232.hex zu erzeugen. Mit make clean lässt sich in bekannter Weise aufräumen.

Sollte jemand weitere Freebus-Projekte an die neue sdcc Version anpassen oder mein Makefile erweitern, werden diese Erweiterungen hier gerne mit aufgenommen.

  1. Johannes

     /  10. Juni 2013

    DANKE! Endlich die Lösung! Was ist los mit den Autoren vom FreeBus Projekt?

    Antworten
    Pingback