Forum: Mikrocontroller und Digitale Elektronik Gibt es einen ATtiny I2C Bootloader _ohne_ Interrupts?


von Funko B. (funkobongrip)


Lesenswert?

Genauer gesagt geht es darum, ob es hierfür schon ein gut dokumentiertes 
Projekt geht.

Habe länger nach einem I2C Bootloader gesucht der dann nicht die 
Interrupts für I2C für sich beansprucht, wie es zum Beispiel der im 
Bootloader Artikel tut.

Nun habe ich einen selbst geschrieben und bevor ich mir die Arbeit 
mache, alles ordentlich zu dokumentieren und online zu stellen möchte 
ich sicher gehen, dass nicht noch ein funktionsgleicher Bootloader im 
Umlauf ist.

Der Bootloader ist "leider" in C geschrieben und belegt dadurch stolze 
576bytes flash, dazu gibt es ein in C geschriebenes Update-Tool.

Sollte auf jedem ATtiny mit USI laufen. Der PC Seitige I2C Code läuft 
aktuell mit einem Arduino und nur unter Linux/OSX, wird aber in jedem 
Fall noch für direkte Linux I2C-Schnitstellen erweitert.

Gibt es was vergleichbares?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Richtig interessant wär das Update Tool wenns per SMBus (gibts auf jedem 
Mainboard) mit dem Tiny kommunizieren könnte.

von Funko B. (funkobongrip)


Lesenswert?

Martin Wende schrieb:
> Richtig interessant wär das Update Tool wenns per SMBus (gibts auf jedem
> Mainboard) mit dem Tiny kommunizieren könnte.

Ich bin mir nicht sicher, inwieweit ein SMBus anders ist als ein 
normaler I2C Bus.
Zumal ich auch keinen Computer mit zugänglichem SMBus habe werde ich das 
wohl auch nicht in Betracht ziehen.

Implementieren werde ich es in jedem Fall für ARMs mit Linux und I2C.
Aber darum ging mein Post eigentlich nicht.

von weinbauer (Gast)


Lesenswert?

SM-Bus ist langsamer, maximal 100k-Bit/s

von weinbauer (Gast)


Lesenswert?

ah, glatt vergessen, der Timeout, SM-Bus muss Minimum 10kHz am CLK 
haben, sonst resettet das Interface.

von F. F. (foldi)


Lesenswert?

Selbst wenn es einen solchen Bootloader geben sollte, du hast ihn nicht 
gefunden und wenn du deinen nun zur Verfügung stellst, dann freuen sich 
sicher einige (ich) hier. :-)
Also: "Hau raus den Scheiß!"

... und nicht so zaghaft.
Es werden dann sowieso wieder jede Menge "Gäste" alles besser wissen und 
können.

Tolle Sache, mach das bitte öffentlich!

von c-hater (Gast)


Lesenswert?

David Brandt schrieb:

> Habe länger nach einem I2C Bootloader gesucht der dann nicht die
> Interrupts für I2C für sich beansprucht, wie es zum Beispiel der im
> Bootloader Artikel tut.

Wo ist das Problem? Ein Bootloader mit Ints beansprucht diese Ints doch 
nur, solange der Bootloadercode aktiv ist.

Wen zum Teufel stört das? Doch höchstens Leute, die nicht begriffen 
haben, daß es mehr als eine Interruptvektortabelle geben kann...

von Funko B. (funkobongrip)


Lesenswert?

c-hater schrieb:
> Wo ist das Problem? Ein Bootloader mit Ints beansprucht diese Ints doch
> nur, solange der Bootloadercode aktiv ist.
>
> Wen zum Teufel stört das? Doch höchstens Leute, die nicht begriffen
> haben, daß es mehr als eine Interruptvektortabelle geben kann...

Für den nächsten mit starken defiziten in welchem Bereich auch immer:
Es geht um ATtinys, die haben nur eine Interruptvektortabelle.

von c-hater (Gast)


Lesenswert?

David Brandt schrieb:

> Für den nächsten mit starken defiziten in welchem Bereich auch immer:
> Es geht um ATtinys, die haben nur eine Interruptvektortabelle.

Für die gibt es dann immer noch Funktionspointer, die dann trotzdem noch 
austauschbare ISRs ermöglichen würden.

Aber selbst das ist nur die halbe Wahrheit. Tatsächlich ist doch auf der 
Protokollebene keine Unterscheidung zwischen Bootloader und App 
sinnvoll. I2C ist I2C.

Sinnvoll wäre also, den gesamten I2C-Code (inclusive ISRs) zwischen 
Bootloader und App zu sharen. Umgeswitcht werden müssen nur die 
Funktionszeiger für die Ereignisse, die das Protokoll-Level verlassen.

Kapierst du die Logik?

von holger (Gast)


Lesenswert?

>Sinnvoll wäre also, den gesamten I2C-Code (inclusive ISRs) zwischen
>Bootloader und App zu sharen. Umgeswitcht werden müssen nur die
>Funktionszeiger für die Ereignisse, die das Protokoll-Level verlassen.

Das ist ungefähr so sinnvoll wie ein zweites Loch im Arsch.
Der Bootloader sollte nichts von der Applikation wissen und
die Applikation nichts vom Bootloader. Alles andere ist Unsinn.

von c-hater (Gast)


Lesenswert?

holger schrieb:
>>Sinnvoll wäre also, den gesamten I2C-Code (inclusive ISRs) zwischen
>>Bootloader und App zu sharen. Umgeswitcht werden müssen nur die
>>Funktionszeiger für die Ereignisse, die das Protokoll-Level verlassen.
>
> Das ist ungefähr so sinnvoll wie ein zweites Loch im Arsch.
> Der Bootloader sollte nichts von der Applikation wissen und
> die Applikation nichts vom Bootloader. Alles andere ist Unsinn.

Das sagst du, aber frag' mal einen geistig Gesunden.

von F. F. (foldi)


Lesenswert?

Ich bin noch sehr weit weg von dem was ihr könnt und denke mir immer, 
wenn jemand sich Gedanken (und Arbeit) macht, dann muss doch was dran 
sein.

Also, statt euch gegenseitig jetzt hier Post für Post an die Fresse zu 
hauen, entwickelt das doch weiter zusammen.
Ich freue mich immer über fertige Lösungen. Nicht, damit ich das nicht 
selbst machen muss, sondern um aus lauffähigen Sachen zu lernen.

von Bastler (Gast)


Lesenswert?

Warum kann so ein Bootloader nicht eine Art BIOS darstellen, das 
grundlegende Kommunikation abhandelt. Per fester Sprungleiste an seinem 
Anfang, die dann vom Anwendungsprogramm genutzt wird. Besonders auf 
Tiny's muß man doch mit jedem Byte knausern.

von F. F. (foldi)


Lesenswert?

Bastler schrieb:
> Warum kann so ein Bootloader nicht eine Art BIOS darstellen, das
> grundlegende Kommunikation abhandelt. Per fester Sprungleiste an seinem
> Anfang, die dann vom Anwendungsprogramm genutzt wird. Besonders auf
> Tiny's muß man doch mit jedem Byte knausern.

Deswegen ist der Gedanke ja auch sicher berechtigt.

von Funko B. (funkobongrip)


Lesenswert?

Bastler schrieb:
> Warum kann so ein Bootloader nicht eine Art BIOS darstellen, das
> grundlegende Kommunikation abhandelt. Per fester Sprungleiste an seinem
> Anfang, die dann vom Anwendungsprogramm genutzt wird. Besonders auf
> Tiny's muß man doch mit jedem Byte knausern.

Die Frage ist doch:
Wird ein Bootloader kleiner, wenn er mit Interrupts arbeitet?
Sicher kann man eine gemeinsame ISR nutzen, aber dafür braucht man 
wieder mehr Code und das Programm muss darauf angepasst werden.

Und ich denke nicht, dass der Bootloader durch das nutzen von Interrupts 
viel kleiner wird, also warum sollte man das tun?

von Peter (Gast)


Lesenswert?

David Brandt schrieb:
> Wird ein Bootloader kleiner, wenn er mit Interrupts arbeitet?

Natürlich.

David Brandt schrieb:
> Und ich denke nicht, dass der Bootloader durch das nutzen von Interrupts
> viel kleiner wird, also warum sollte man das tun?

Die Frage ist vielmehr: Warum sollte man vorhandene, funktionierende und 
durchdachte Konzepte durch irgendwelche Schwachsinnsvorschläge in 
weniger funktionierende Umwandeln. Aber wir wissen ja:

Hobbybastler sind IMMER, intelligenter, schlauer, gewieferter und besser 
als jeder der professionell auf dem Fachgebiet arbeitet. Aus diesem 
Grund werden sie auch weitläufig als dilettantisch und unbelehrbar 
gehandelt. Das ist übrigens auch der Grund warum Hobbybastler dieser 
Spezies nie irgendwas vernünftiges hinbekommen. Nie. Ein Hobbybastler 
der sich von beanntem Schwachsinn befreit hat kann sich nicht mehr 
Hobbybastler nennen. Nur hier sind Hobbybastler unterwegs - ganz viele 
... Ehrlich sucht euch ne Freundin oder fragt jemanden der Ahnung hat 
von der Materie und nehmt den Ratschlag den er/sie euch gibt an. Das was 
bis jetzt hier steht ist erbärmlich niedrig.

von F. F. (foldi)


Lesenswert?

Peter schrieb:
> Die Frage ist vielmehr: Warum sollte man vorhandene, funktionierende und
> durchdachte Konzepte durch irgendwelche Schwachsinnsvorschläge in
> weniger funktionierende Umwandeln. Aber wir wissen ja:
>
> Hobbybastler sind IMMER, intelligenter, schlauer, gewieferter und besser
> als jeder der professionell auf dem Fachgebiet arbeitet. Aus diesem
> Grund werden sie auch weitläufig als dilettantisch und unbelehrbar
> gehandelt. Das ist übrigens auch der Grund warum Hobbybastler dieser
> Spezies nie irgendwas vernünftiges hinbekommen. Nie. Ein Hobbybastler
> der sich von beanntem Schwachsinn befreit hat kann sich nicht mehr
> Hobbybastler nennen. Nur hier sind Hobbybastler unterwegs - ganz viele
> ... Ehrlich sucht euch ne Freundin oder fragt jemanden der Ahnung hat
> von der Materie und nehmt den Ratschlag den er/sie euch gibt an. Das was
> bis jetzt hier steht ist erbärmlich niedrig.

Was Schwachsinn ist und ob die Idee Schwachsinn ist, das kann ich nicht 
beurteilen. Dazu weiß ich zu wenig von der Materie.

Zwei Dinge stehen aber fest!!!!

1. - Solche Aussagen kommen immer von Namenlosen, von den Gästen.
2. - Sie haben keinen geeigneten eigenen Vorschlag und beleidigen nur.

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.