Forum: Mikrocontroller und Digitale Elektronik Raspberry pi direkt flashen?


von Manuel S. (doc-snyder)


Lesenswert?

Hallo,

Mein rPi ist unterwegs. Zielanwendung ist die Temperaturaufname über 15 
LM(1)75 und Ausgabe über nen Webserver. Allerdings gibts ja noch keine 
treiber in debian. Jetzt frage ich mich schon ne Weile ob es denn 
möglich ist, den ARM wie einen Mega32 direkt mit einer Hexfile zu 
flashen, da ich mich von den Megas her schon mit dem I2C auskenne. Für 
den Webserver gibts ja schon komplette Protokollstacks die ich nutzen 
könnte.

Hat das schon mal jemand versucht? Ist das überhaupt möglich?

von Peter II (Gast)


Lesenswert?

Manuel Schneider schrieb:
> Hat das schon mal jemand versucht? Ist das überhaupt möglich?

du kopiest einfach das image auf eine SD karten - fertig.

Schon bootet ein linux (z.b. debian)

Dann kannst du doch machen was du willt.

von Εrnst B. (ernst)


Lesenswert?

Manuel Schneider schrieb:
> Allerdings gibts ja noch keine
> treiber in debian

Echt?
/usr/src/linux/Documentation/hwmon/lm75
/usr/src/linux/drivers/hwmon/lm75.c

muss halt noch einen i2c-multiplexer dazwischenschalten, sonst reichen 
die Adressen nicht für 15 Stück davon.

von Manuel S. (doc-snyder)


Lesenswert?

Naja ich dachte eher an I2C direkt auf dem ARM. Vom OS hat man ja keinen 
direkten Zugriff auf die Register. Und der I2C Treiber der Wheezy bietet 
, so scheint mir laut Dokumentationen auch eher Alpha als Beta zu sein. 
Zudem habe ich gelesen, dass es sich um eine Softwareimplemetierung des 
I2C Protkolls handelt. Der ARM macht das aber schon auf Hardware Basis.
Da mir ARM Datenblätter nach Registern zu durchsuchen einfacher scheint 
als irgendwelche experimentelle Treibercodes nach Fehlern zu 
durchsuchen, fände ich das flashen(wenn es denn so einfach wie beim mega 
ist) gemütlicber.

Gruß

von Schroeder (Gast)


Lesenswert?

In Debian gibt es warscheinlich keine i2c Treiber. Oder die Module sind 
nicht geladen. Probier mal sudo modprobe i2c_bcm2708 und dann lsmod 
gucken ob das Modul geladen wurde. So bald ein i2c Bus vorhanden ist 
kanst den LM treiber laden.

von Schroeder (Gast)


Lesenswert?

Was du suchst ist wiring pi. ;)
Ansonsten wenn du driekt auf die Register zugreifen willst Treiber 
entwickeln. :)
Oder eignes Betreibssystem schreiben wenn du i2c und ethernet haben 
willst.

von Εrnst B. (ernst)


Lesenswert?

Manuel Schneider schrieb:
> Naja ich dachte eher an I2C direkt auf dem ARM.


Erm. Du hast schon verstanden, das am RPi der ARM das Linux ausführt, 
oder?
Da ist kein zusätzlicher "Linux-Chip" neben dem ARM verlötet oder so.

von Manuel S. (doc-snyder)


Lesenswert?

Εrnst B✶ schrieb:
> muss halt noch einen i2c-multiplexer dazwischenschalten, sonst reichen
> die Adressen nicht für 15 Stück davon.

Es geht der 175er mach 27 adressen.


> Erm. Du hast schon verstanden, das am RPi der ARM das Linux ausführt,
> oder?

Das soll ja auch anstatt dem Linux drauf.

Nach wiring Pi muss ich mal schauen.
Treiber schriebne kann ich nicht, bzw habs noch nie versucht. ;-)

von Stefan H. (stefan_h16)


Lesenswert?

Manuel Schneider schrieb:
> Hallo,
>
> Mein rPi ist unterwegs. Zielanwendung ist die Temperaturaufname über 15
> LM(1)75 und Ausgabe über nen Webserver. Allerdings gibts ja noch keine
> treiber in debian. Jetzt frage ich mich schon ne Weile ob es denn
> möglich ist, den ARM wie einen Mega32 direkt mit einer Hexfile zu
> flashen, da ich mich von den Megas her schon mit dem I2C auskenne. Für
> den Webserver gibts ja schon komplette Protokollstacks die ich nutzen
> könnte.
>
> Hat das schon mal jemand versucht? Ist das überhaupt möglich?

So ein großer ARM ist mindestens eine Größenordnung komplexer als ein 
AVR was allein schon die Initialisierung angeht. Man wird da wenig 
Wissen von den AVRs her recyceln können.

Es gibt die Möglichkeit direkt auf das I2C Interface zuzugreifen. 
Zumindest Raspbian stellt direkt und /dev/i2c* die beiden I2C Interfaces 
zur Verfügung - wenn die richtigen Treiber geladen sind (i2c-dev)

Gibt aber auch die Möglichkeit in C direkt auf dem Registerlevel zu 
arbeiten, hier ein Beispiel:
http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/

von Norbert (Gast)


Lesenswert?

Manuel Schneider schrieb:
> Zielanwendung ist die Temperaturaufname über 15
> LM(1)75 und Ausgabe über nen Webserver.
> Allerdings gibts ja noch keine treiber in debian.
> Für den Webserver gibts ja schon komplette Protokollstacks die ich nutzen
könnte.

Manuel Schneider schrieb:
> Das soll ja auch anstatt dem Linux drauf.

Das darauf laufende Debian Linux (Raspbian) kann bereits:
* I2C (i2c_bcm2708.ko wurde bereits genannt)
* Ethernet/IP/TCP & UDP
* Webserver
* sowie eine Million anderer nützlicher Dinge

Das willst Du alles wegschmeissen und den ARM komplett neu und selbst 
programmieren?

von Oliver J. (skriptkiddy)


Lesenswert?

Manuel Schneider schrieb:
> Das soll ja auch anstatt dem Linux drauf.

Verstehe ich das richtig? Du willst eine bare-metal-app für das Ra-Pi 
schreiben ganz ohne OS?

Gruß Oliver

von .... (Gast)


Lesenswert?

Irgendwas muss ja auch den first stage bootloader des pi von der sd 
karte laden.... das muss ja dann zumindest schonmal sd karten ansteuern 
und fat lesen können.... code in den ram laden und ausführen...

zum firststage bootloader ist das soweit ich weiss auch schon nicht so 
viel bekannt... der gehört zu den blobs und wird soweit ich weiss nicht 
veröffentlicht.... soweit mit bekannt is lädt der dann den video core 
und so ...

von Manuel S. (doc-snyder)


Lesenswert?

Ohje ich bin wie der Lukas auf dem Rummel ;-D

Alsooo, ja ich will/würde den ARM gerne selbst programmieren, aber nur 
wenn es nicht anders geht. Mit anders meine ich auf eine schöne Weise, 
nicht irgend einen experimentellen Ansatz. Wenn Raspbian das macht dann 
ist gut, dann bin ich zufrieden und werde es auch benutzen. Aber ich 
habe eben in einigen Quellen gelesen, dass das nur eine Software 
Implementierung ist und das finde ich unschön, da der ARM einen 
"Hardware-TWI/I²C" Treiber hat. Und solange ich da nicht "Stable" o.ä. 
lese oder das Paket offiziell unterstützt (Chris Boot’s forked kernel 
nur wegen I²C?) wird, ist das für mich gefühlt der falsche Weg.

Tut mir Leid wenn ich einige von euch (offen gestanden pragmatischer 
Denkenden) enttäuschen muss, aber ich habe es eben gerne ordentlich und 
vor allem habe ich es gerne verstanden.

Hier sind mittlerweile eine ganze Menge Stichwörter gefallen, die ich 
mir erst einmal alle anschauen muss. Ich fass alles nochmal zusammen und 
wenn jemand andere Ansätze hat, darf er mir die gerne Mitteilen.

- lm75.c
- i2c_bcm2708
- wiring pi
- i2c-dev
- Chris Boot’s forked kernel
- ...

Vielen Dank für die Hilfe bisher.

Gruß

von Norbert (Gast)


Lesenswert?

Manuel Schneider schrieb:
> Aber ich
> habe eben in einigen Quellen gelesen, dass das nur eine Software
> Implementierung ist und das finde ich unschön,

Falsche Quellen gelesen ;-)

> da der ARM einen "Hardware-TWI/I²C" Treiber hat.

Das stimmt und der wird auch genutzt. Wenn das Kernel Modul geladen und 
I2C angesprochen wird, so hat man per default 250kBit/s ohne 
nennenswerte CPU Belastung. Kann also nur Hardware sein.

> Und solange ich da nicht "Stable" o.ä.
> lese oder das Paket offiziell unterstützt (Chris Boot’s forked kernel
> nur wegen I²C?) wird, ist das für mich gefühlt der falsche Weg.

Raspbian ist Debian Wheezy, das ist zur Zeit eingefroren und es wird auf 
Stable hingearbeitet.
Wheezy ist schon jetzt stabiler als so manches KaufOS nach dem dritten 
Servicepack ;-)

Hab das hier alles headless über ssh laufen und laufen und ...

von Norbert (Gast)


Lesenswert?

Ups, kleine Korrektur notwendig.

Ich meinte natürlich SPI mit 250kBit/s in Hardware, I2C hab ich noch 
nicht getestet.

Sorry dafür.

von Rainer U. (r-u)


Lesenswert?

Der Ansatz ohne Linux "selbststricken" nennt sich "bare metal", erste 
Schritte z.B. hier:

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=72&t=15387

aber es ist ein langer und steiniger Weg. Insbesondere der Webserver 
will dann das Linux benutzen, das Du ja weglassen willst, also musst Du 
den auch "zu Fuß" implementieren..

von Manuel S. (doc-snyder)


Lesenswert?

Was ich hier so lerne ist völlig abgefahren... :-D Gefällt mir.

Hab grad mal testweise die Module meines Homeservers ausgegeben. Ich 
wusste gar nicht dass ich Bluetooth habe. :-D Hab auch keins, obv lädt 
Linux falsche  Module. Okay also wenn ich "modprobe i2c-" und Tab tippe, 
steht da haufenweise Zeugs. Nur kein i2c-bcm****. Ich vermute, dass das 
Kernelmodul dann nur im Wheezy enthalten ist. Hab dann mal zum testen 
i2c-dev geladen. In dev sehe ich jetzt i2c-0, 1 und 2. Heißt das jetzt 
dass mein Intel-Core2-Duo E6850 3 I²C Busse hat?

> Raspbian ist Debian Wheezy ...
Komplett identisch oder ein Derivat? Wo finde ich heraus welche Pakete 
und Kernelmodule Raspbian beinhaltet?

> aber es ist ein langer und steiniger Weg. Insbesondere der Webserver
> will dann das Linux benutzen, das Du ja weglassen willst, also musst Du
> den auch "zu Fuß" implementieren..
Kurz angelesen, gestaunt und gemerkt das ist nichts für mich. Danke für 
den Hinweis. :D

von Norbert (Gast)


Lesenswert?

Es werden die Original-Debian Sources kompiliert für ARM hard-float.

Ziel ist so nahe wie möglich an 100% Übersetzung heranzukommen.

zZ. siehts schon wirklich gut aus!
root@raspberry:/home/pi# aptitude

Installierte Pakete: 609
Nicht installierte Pakete: 36351

von Norbert (Gast)


Lesenswert?

root@raspberry:/home/pi# modprobe i2c-dev
root@raspberry:/home/pi# modprobe i2c-bcm2708
root@raspberry:/home/pi# ls -l /dev/i2*
crw------T 1 root root 89, 0 Aug 30 16:20 /dev/i2c-0
crw------T 1 root root 89, 1 Aug 30 16:20 /dev/i2c-1

root@raspberry:/home/pi# i2cdetect -ya 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@raspberry:/home/pi# i2cdetect -ya 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

von Manuel S. (doc-snyder)


Lesenswert?

root@Homeserver:/dev$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- 3a -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Was heißt das jetzt? Dass da 2 Geräte dran sind mit den Adressen 50 und 
3a?

PS: Jetzt ist es aber langsam echt off-topic das passt eher zum alten 
Thread von mir... Beitrag "Raspberry Pi  GPIO  I2C Zugriff?"

von Norbert (Gast)


Lesenswert?

# man 8 i2cdetect  ;-)


DESCRIPTION
       i2cdetect  is  a userspace program to scan an I2C bus for 
devices. It outputs a table with the list
       of detected devices on the specified bus.  i2cbus indicates the 
number or name of the I2C bus to be
       scanned,  and  should correspond to one of the busses listed by 
i2cdetect -l.  The optional parame‐
       ters first and last restrict the scanning range (default: from 
0x03 to 0x77).

INTERPRETING THE OUTPUT
       Each cell in the output table will contain one of the following 
symbols:

       · "--". .......

       · "UU". .......

       · An address number in hexadecimal, e.g. "2d" or "4e".
         A chip was found at this address.

von Manuel S. (doc-snyder)


Lesenswert?

Verflucht ich bin wahnsinnig heiß auf den RPi. Der kommt aber erst in ca 
10 Wochen :´(.


Danke für die ganze Hilfe. Ich werd in ein paar Monaten über die 
Heizungsüberwachung berichten.

Vielen vielen Dank!

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.