Crosscompiler mit danisahne Mod

Ein Cross-Compiler erlaubt es, ein Programm für eine andere CPU zu erstellen.

Das heißt aber nicht, daß damit die Hardware eines PC plötzlich auf der Box erscheint.

ioperm ist ein x86 spezifischer Aufruf. Wenn ich nichts verpaßt habe, hat die MIPS-Architektur gar nichts, was den IO-Adressen des x86 entspricht.

Selbst wenn, an der Adresse 0x378 liegt beim PC der Parallel-Port. Die Box hat keinen Parallel-Port, also kann das nicht gehen.

Falls es trotzdem klappen sollte, sag Bescheid, ich hätte Interesse am Zugriff auf den IDE-Controller :)
 
Ja genau das ist es ja RalfFriedl meine Box hat eine funktionierenden Parallel-Port und ich muss irgendwie an die Signale der Eingansleitung per Software rankommen um einige externe Sachen abzufragen.

Aber ich bin eigentlich ein reiner Programmierer unter Windows und das ist schon echt eine schlechte Vorraussetzung für mein Projekt.
 
Was für ein Parallel Port ist das? Ich kenne keine FritzBox, wo schon einer eingebaut ist. Wie ist er angeschlossen?

Und was heißt hier funktionierend? Daß es an einem PC funktioniert oder an der Box? Wenn es an der Box schon funktionieren würde, würdest Du wahrscheinlich hier nicht fragen.

Oder heißt es, Du kannst über den Port schon drucken, willst den Port aber für Eingabe-Signale zweckentfremden?
 
Gut hole ich noch ein wenig aus.

Es Handheld sich um ein USB->Parallel Printer Adapter der wie ich so sagen kann einbandfrei läuft in sein Aufgabenbereich („Drucken“)

Aber dafür habe ich die Sache nicht gedacht

und mein PC einfach mehr verbraucht versuche ich das über die AVM 7170 zu erledigen.

Dafür bräuchte ich die Möglichkeit

Input von Parallelport auszulesen:
ACK - PIN10 für Strom
BSY - PIN11 für Gas
PAP - PIN12 für Brennerlaufzeit
OFON- PIN13 Reserve
FEH - PIN15 Reserve


Ja kann man sagen ist kein Problem das kann Zugaar das original AVM web Menü unter

Usbprint.html mit („query ctlusb:settings/printer-status“)

Aber leider nicht mehrere Leitungen immer nur eine

Das System legt ja auch unter var/System/log/printer_status ab aber leider auch nur wie
(„query ctlusb:settings/printer-status“)

Wird wohl wie ich heute so gesehen habe durch etc/hotplug/printer zugewiesen (Vermutung)


Weiß immer noch nicht wie kann ich die Datenleitungen unter Linux auslesen oder wie macht es AVM um es abkupfern zu können.


Es wäre nahklar auch wünschenswert die Ausgang zu benutzen.
 
Dann schlage ich vor, daß Du zuerst mal das Ganze auf dem PC zum Laufen bringst, bevor Du es auf die Box überträgst.

Dein Programm mit ioperm und Zugriff auf Port 0x379 würde auch auf einem PC nicht laufen, zumindest nicht mit dem USB Adapter. Über Port 0x379 kannst Du die im PC eingebaute Drucker-Schnittstelle ansprechen, aber keine USB Geräte, auch nicht USB Drucker-Adapter.

Du kannst mal folgendes probieren:
Code:
#include <fcntl.h>
#include <linux/lp.h>
#include <stdio.h>
int main ()
{
  int fd = open ("/dev/usb/lp0", O_RDONLY);
  int status;
  ioctl (fd, LPGETSTATUS, &status);
  printf ("%08x\n", status);
}
Da ich keinen USB-Adapter habe, kann ich das nicht ausprobieren, aber etwas in der Richtung könnte funktionieren.
 
Das ist ein guter Anfang bin dran. (Danke)
 
Kompilieren von Programmen unter ds-mod 26-15.2

Hallo Zusammen,
ich brächte mal einen Tip von Euch Experten. Ich möchte über meine Speedport 900V eine USB-Karte auslesen.

Derzeit habe ich bereits folgendes getan:
  • meinen Rechner mit aktuellem Knoppix (Linux Knoppix 2.6.19) am laufen
  • Unter Knoppix ein Programm geschrieben, welches die USB-Karte (K8055) ausliest. Das Programm benötigte zum Ansprechen der Schnittstellenkarte noch folgendes:
    [*]libusb-0.1.12 (gibt es zum Download bei SourceForge) heruntergeladen und installiert. Diese hat ein configure-Script und ein Makefile dabei. Es wird eine Libary erstellt
    [*]libk8055 heruntergeladen und kompiliert. Dieses tar-File hat nur ein Makefile (kein configure-script) dabei. Auch diese Library habe ich compiliert und installiert.
  • DS26-15.2 downgeloaded und installiert (Toolchain erstellt)
  • Speedport mit AVM-Image zum Laufen gebracht
  • die libusb mit der Toolchain kompiliert. Hilfe hierzu habe ich im wiki gefunden, wo beschrieben ist, wie man an das configure noch weitere Parameter anhängt um ein Programm für den Router zu kompilieren

Bei der Library libk8055 hänge ich nun aber leider fest:(. Da bei diesem "Bundle" kein configure-Script, sondern nur ein Makefile dabei war, weiss ich nicht, wass ich genau angeben muss um auch diese libk8055 für den Router zu erzeugen:confused:. Ich habe mal im Makefile den gcc-Aufruf in den mipsel-linux-gcc umgestellt und den Libraryverweis auf ...target/lib gesetzt, Die bereits kompilierte Library libusb nach ...ds-mod...target/lib kopiert, die Headerdateien nach ...target/include kopiert.

Allerdings hat auch das nicht ganz zum Erfolg geführt. Die libk8055.o wird erzeugt und ich bekomme folgende Fehlermeldung:
strip k8055
strip: Unable to recognise the format of the input file `k8055'
make: *** [k8055_prog] Fehler 1

Kann mir jemand sagen, was ich eigentlich hätte machen sollen, wenn keine configure-Datei in einem Projekt mit dabei ist? Wie kann ich die libk8055 erzeugen um letztendlich mein Programm zu kompilieren?
Anbei mal mein geändertes Makefile

Vielen Dank im Voraus für die Hilfe

Gruß
Peter
 

Anhänge

  • Makefile.tar
    10 KB · Aufrufe: 6
Erstens ist "strip" nicht absolut notwendig für die Funktion des Programms. Es macht aber die Datei kleiner, was auch sinnvoll ist.

Zweitens mußt Du nicht nur gcc -> mipsel-linux-gcc ersetzten, sondern auch strip -> mipsel-linux-strip, ld -> mipsel-linux-ld usw.
 
Zweitens mußt Du nicht nur gcc -> mipsel-linux-gcc ersetzten, sondern auch strip -> mipsel-linux-strip, ld -> mipsel-linux-ld usw.

Hallo,
vielen Dank für den Tip.:p Hatte ich im Makefile übersehen gehabt. Ich habe allerdings nur den Strip-Aufruf darin gefunden. Diesen habe ich im Makefile abgeändert. Einen LD-Aufruf fand ich nicht im Makefile und habe diese somit leider auch nicht abändern können. Danach lief der Kompiliervorgang ohne Probleme/Fehler ab.

Habe aber leider das nächste Problem:(

Die entstandenen Dateien libusb.lai, libusb.la, libusb.a habe ich nun wieder in die ...target/lib kopiert.

Habe nun versucht mein Programm zu kompilieren. Hierzu musste ich, als ich mein Programm mal unter Linux kompiliert habe folgenden Aufruf tätigen:

gcc -lusb -lk8055 -lm test.c -o test_prg

Die libusb und die libk8055 waren die Libraries, welche ich zuvor kompilieren musste. Da im Programm eine mathematische Funktion verwendet wird musste ich auch noch die libm mit verwenden.

Wenn ich nun das gleiche mit folgendem Aufruf mache:
ipsel-linux-gcc -lusb -lk8055 -lm power.c -o powerprg ,
so kommen folgende Fehlermeldungen:

Code:
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_strerror'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_find_busses'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_init'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_find_devices'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_open'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_get_busses'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_get_driver_np'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_detach_kernel_driver_np'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_interrupt_write'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_close'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_set_configuration'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_interrupt_read'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_claim_interface'
/KNOPPIX.IMG/home/knoppix/Desktop/ds26-15.2/toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/lib/libk8055.so: undefined reference to `usb_set_altinterface'
collect2: ld returned 1 exit status

Kennst Du die Lösung zu diesen Problem? Kann es sein, dass meine Aktion davor (erstellen der libk8055, wobei ich nur das strip-Kommando ersetzt habe und kein LD, da nicht gefunden) schon fehlerhaft war und dies die Folgefehler sind?

Vielen Dank für die Hilfe
Peter
 
Zuletzt bearbeitet von einem Moderator:
Wenn nirgends ein Aufruf von 'ld' ist, muß der auch nicht geändert werden.

Ich würde die Funktionen usb_* in der libusb vermuten.
 
Hallo,

mich würde interessieren, ob das Zugreifen mittels devpp über die /dev/usb/lp0
geklappt hat. Bei mir klappt das nämlich nicht, während Zugriffe (egal welches Register)
auf einem normalen PC (eingebauter Parallelport) einwandfrei funktionieren, klappt
das mit dem Kabel nicht.
Noch schöner wäre es, wenn Du sogar den Sourcecode Deines
Energiewächters zur Verfügung stellen könntest.
Vielen Dank im voraus
Micha
 
Hallo,

ich bin gerade beim Versuch einen I2C-Bus über die Serielle Schnittstelle der Fritzbox zu realisieren. Am Linux-PC funktionieren meine kleinen I2C-Programme längst tadellos. Leider schlägt das Cross-Compilieren für die FritzBox fehl.

Nun habe ich in diesem Thread gelesen, dass es die Funktionen inpb() und outb(), welche ich dafür benutze, für die Architektur der Box garnicht gibt. Gibt es alternative Funktionen, mit denen ich die Serielle Schnittstelle nutzen kann?

Oder kann mir vielleicht jemand die nötige(n) Funktion(en) nennen, um die GPIOs zu nutzen? Gibt es vielleicht eine gute Dokumentation darüber, die ich bisher nicht finden konnte?

Edit: PS: Ich nutze die Freetz-Toolchain

Edit2: Gibt es bereits Programme, die die RS232 Schnittstelle nutzen? Dann könnte ich mir davon mal die Sourcen ansehen.

Gruss biggerbabou
 
Zuletzt bearbeitet:
Hallo vielleicht kann mir jemand helfen, ich hab schon viel im internet gesucht aber nicht passendes gefunden
ich habe open_suse10.2 und ein USB_k8055, wenn ich es starte kommt immer die Fehlermeldung
(kernel: usb 3-1: usbfs: interface 0 claimed by usbfs while 'k8055' sets config #1) und die CPU geht auf ca.90%
muss das device vielleicht noch bei udev eingetragen werden?
 
@pedzi: Ich glaube, du bist hier falsch. Hier geht es um crosskompilieren, du willst aber was unter/für suse 10.2 machen.
Hast du es schon mal unter anderen Distributionen ausprobiert? SuSE ist immer einzigartig und ist nicht in erster Linie (wenigstens die Versionen 10 und 11) für kompillierungsfreudige Anwender gedacht. Außerdem ist die Version 10.2 von SuSE relativ alt.

MfG
 
dank für die Antwort. welches linux würdest du empfehlen?
mit 10.3 hb ich es schon probiert das gleich Problem.
 
spricht bei dir etwas gegen 11? Oder warum bleibst du gerne bei 10-Version. Ich kann es dir nicht versprechen, dass dein problem in 11 gelöst ist. Es kann sogar sein, dass du noch weitere Probleme (speziell mit Hardware) dir aneignest, wenn du zu 11 wechselst. Speziell bei letzten Kernel-Versionen gibt es da einige gewaltige Neuerungen (Stichwort ClosedSource-Treiber). Es könnte aber sein, dass du Glück hast. Hast du schon genug gegoogelt? Dieses Forum ist wirklich eine falsche Anlaufstelle für dich.

MfG
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.