Forum: PC-Programmierung SNMP für BusyBox auf ARM


von Tony L. (tonyl)


Lesenswert?

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

von Εrnst B. (ernst)


Lesenswert?

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.

von Tony L. (tonyl)


Lesenswert?

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.

von Tony L. (tonyl)


Lesenswert?

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?

von Εrnst B. (ernst)


Lesenswert?

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.

von Tony L. (tonyl)


Lesenswert?

Ε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.

von Bartli (Gast)


Lesenswert?

>> ./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.

von Tony L. (tonyl)


Lesenswert?

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.)

von Bartli (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Bartli (Gast)


Lesenswert?

>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>.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Tony L. (tonyl)


Lesenswert?

Vielen Dank für eure Antworten.

Es geht derzeit hier weiter:

http://www.fhz-forum.de/viewtopic.php?f=26&t=6897

von Bartli (Gast)


Lesenswert?

Schön.

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
Noch kein Account? Hier anmelden.