Hallo, ich arbeite zur Zeit ausbildungsbedingt an der Hausautomatisierungslösung HomeMatic. Das HomeMatic-System besteht aus einer Zentrale, die mit einem ARM-Prozessor unter BusyBox betrieben wird und verschiedenen Sensoren und Aktoren, die Werte an die Zentrale liefern oder Aktionen ausführen. Zum Abfragen der von den Sensoren gemessenen Daten wird nun eine SNMP-Implentierung gefordert. Hier liegt auch mein Problem. Es gibt eine Toolchain, die beim Kompilieren von Paketen für die HomeMatic-Zentrale hilft - leider ist diese schlecht dokumentiert. Vom HomeMatic-Support bekam ich noch das Stichwort "Build Root" genannt. Das Linux-Paket net-snmp scheint den Anforderungen zu entsprechen - es müsste eben nur noch kompiliert werden. Eventuell hat hier ja jemand eine Erfahrung mit der BusyBox, ARM-Prozessoren oder dem net-snmp-Paket. Oder so sogar von allem in Verbindung. Danke im Voraus Tony
Busybox hat erstmal wenig mit dem Thema zu tun. Das ist eine Shell+Utility-Sammlung, kein Betriebssystem, sondern ein Teil von einem. Zum Vorgehen: net-snmpd-Quelltext entpacken, configure mit richtigem --host und buildroot (=Toolkit) Compiler, make.
Vielen Dank! Sollten noch Probleme auftreten, melde ich mich wieder. PS: Εrnst B✶ schrieb: > Shell+Utility-Sammlung Davon ging ich anfangs auch aus, nach unzählbaren Stunden Recherche habe ich mir aber das Hirn weich gelesen und sah nicht mehr durch.
Noch eine Verständnisfrage zum Vorgehen. Im entpackten Verzeichnis des Quelltextes: ./configure --host=arm-linux --prefix=<Pfad zu Buildroot> Ist das richtig? Im Verzeichnis der Toolchain sieht es so aus:
1 | build_arm dl Makefile romfs-inst.sh toolchain |
2 | Config.in docs package target toolchain_build_arm |
Wo finde ich Buildroot bzw. wonach muss ich suchen?
Tony L. schrieb: > ./configure --host=arm-linux --prefix=<Pfad zu Buildroot> > > Ist das richtig? Vielleicht. Mein letzter ARM-Compilevorgang hatte "armv7a-unknown-linux-gnueabi" als host, insofern kommt mir "arm-linux" etwas kurz vor... Tony L. schrieb: > wonach muss ich suchen? Die Stelle, die denselben Unter-Verzeichnisbaum enthält, der auf deinem Gerät anschliessend "/" ist. ein Verzeichnis, dass "etc" "usr" "dev" usw. enthält wäre ein guter Kandidat.
Εrnst B✶ schrieb: > Die Stelle, die denselben Unter-Verzeichnisbaum enthält, der auf deinem > > Gerät anschliessend "/" ist. Das Verzeichnis "/" auf der Zentrale:
1 | / # ls |
2 | bin firmware lost+found root tmp |
3 | boot home mnt sbin usr |
4 | dev lib opt storage var |
5 | etc linuxrc proc sys www |
Ich suche also mal danach. Danke und bis später.
>> ./configure --host=arm-linux --prefix=<Pfad zu Buildroot> >> >> Ist das richtig? >Vielleicht. Mein letzter ARM-Compilevorgang hatte >"armv7a-unknown-linux-gnueabi" als host, insofern kommt mir "arm-linux" >etwas kurz vor... Das ist schlussendlich nur ein Präfix, welches vom configure Skript dem Namen der Compilerbinaries vorangestellt wird. Wenn Tonys Compiler (bzw. das Compilerfrontend) arm-linux-gcc heisst, ist das schon richtig.
Guten Morgen, ich habe hier noch eine Übersicht zur Zentrale, auf der SNMP am Ende laufen soll. Zur Klärung meiner Fragen ist das sicherlich hilfreich. http://www.homematic-inside.de/index.php/hardware/centrals/item/centralunits/ccu.html Außerdem spuckt "uname -a" auf der Zentrale folgendes aus:
1 | / # uname -a |
2 | Linux homematic 2.6.21.3 #32 Fri Sep 10 13:04:04 CEST 2010 armv4tl unknown |
Nun sollte das herausfinden des --host für euch ja relativ einfach sein. (An der Stelle ist vielleicht eine Entschuldigung angebracht. Ich gehe leichtfertig davon aus, dass ihr damit etwas anfangen könnt und mir gern sagt, was richtig ist. Tut mir leid.)
Das hat nichts damit zu tun, was uname ausspuckt, sondern ganz alleine damit, wie dein Kreuzkompiler heisst. Heisst er arm-elf-gcc, dann gibst ein --host=arm-alf, heisst er arm-gnu-eabi-leck-mich-doch-gcc, gibst halt ein --host=arm-gnu-eabi-leck-mich-doch. Ganz einfach. Dabei geh ich davon aus, dass du auf deinem PC ne Toolchain (vom Hardwarehersteller oder selbstgebastelt) hast, und deren Binaryverzeichnis ist im Pfad.
Sovie ich weiß, gibt --host das System an, auf dem der Compiler läuft. Die Architektur des Zielsystems wird mit --target bestimmt. Ob arm-gnu-eabi oder arm-linux hängt davon ab, wie das bestehende System compiliert wurde (EABI oder OABI). OABI ist das ältere ABI und wurde z.B. bei Familiar Linux eingesetzt. Wenn der compilierte Code nicht mit dem Rest des Systems zusammenpasst, dann wird der Linker mit einer entsprechenden Fehlermeldung abbrechen. Gruß Jörg
>Sovie ich weiß, gibt --host das System an, auf dem der Compiler läuft. >Die Architektur des Zielsystems wird mit --target bestimmt. --host gibt ganz allgemein an, auf welchem System die Software laufen soll, unabhängig davon ob sie ein Compiler ist oder nicht. Was du hier beschreibst ist der Spezialfall, wenn du z.B. gcc kompilierst. Mit --target gibst du dann an, für welches Zielsystem der gcc der gebaut wird Code generieren wird, und host gibst du dann an, wenn du gcc selber crosscompilierst (was man in der Regel auch eher selten selber macht), weil dann ist dein Buildsystem ja nicht dasselbe ist wie das Hostsystem des erstellten gcc. Im Normalfall hast du aber dein Buildsystem mit dem Crosscompiler drauf und musst nur configure mitteilen, dass es eben diesen verwenden soll, und dann reicht die Angabe von --host=<praefix-deines-kreuzkompilers>.
Stimmt, das hab ich wohl verwechselt. Das letzte mal, als ich ein configure-script zum Thema "ARM" benutzt hatte, war das beim GCC weil die neueren Binaries meist nicht mehr für OABI zu finden waren. Die Compilierung der ARM Programme selbst mache ich inzwischen fast nur noch scriptgesteuert, da ich dafür z.B. den PKG_CONFIG_PATH und andere "umleiten" muß. Gruß Jörg
Vielen Dank für eure Antworten. Es geht derzeit hier weiter: http://www.fhz-forum.de/viewtopic.php?f=26&t=6897
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.