Hi,
im Rahmen der Entwicklung von KONNEKTING beta5 fällt mir immer wieder auf, dass wir selbst mit heutigen, guten und schnellen Microcontrollern hier und da doch an Limits stoßen, die vor 20 Jahren auch schon galten, aber so "moderne Controller" noch nicht präsent waren...
Ein Beispiel:
Laut https://www.auto.tuwien.ac.at/~mkoeg...dex.php/bcusdk kann so eine BCU 85 KOs, 127 GA und 255 Verknüpfungen zwischen GA<->KO haben.
Wenn nun ein Telegramm eingeht, muss man schauen welche GA es anspricht. Klar. Und dann muss man schauen ob das Telegramm für einen bestimmt ist. Auch klar.
Dazu gibt es im Speicher der BCU "Tabellen" für die Adresse, die Verknüpfungen und die KOs.
Wenn jetzt also so ein Telegramm eingeht, dann muss ich im Worst-Case die GA mit bis zu 127 gespeicherten GAs vergleichen. Eine GA ist 2 byte groß.
Bei 127 GAs sind das schon 254 bytes.
Habe ich dann die GA gefunden, muss ich noch schauen welches KO damit verknüpft ist. Also muss ich im worst-case bis zu 255 Verknüpfungseinträge lesen. Das sind dann nochmal 255 bytes. Und pro gefundener Verknüpfung, muss ich dann noch die Nummer des KO lesen. Da es bis zu 85 KOs geben kann, ist eine GA im worst-case mit 85 KOs verknüpft. Also nochmal 85 bytes.
Macht zusammen 594 bytes.
Wenn man jetzt so schau was "damals" für eine Controller-Familie genutzt wurde (wenn ich richtig recherchiert haben dann ist das sowas: http://de.farnell.com/nxp/mc68hc705c...c44/dp/1661748) , dann können die 594 bytes unmöglich im RAM vorliegen, sondern müssten in einem EEPROM liegen.
Das alles im EEPROM nachzuschlagen kostet doch auch Zeit. Und nebenher muss ich ja schauen, dass ich weitere Telegramme die da eingehen können, vor lauter "im EEPROM suchen" nicht verpasse. Wenn auf dem Bus nix los ist..prima. Aber da kann ja auch mal die Hölle los sein...
Hat da jemand einen etwas tieferen Einblick und kann da ein bisschen darüber plaudern wie das alles gehen soll? Logo, ich bin nicht der Embedded/Microcontroller Experte, un die "echten Freaks" hauen da nochmal einiges an Performance raus wenn sie direkt in Assembler basteln. Aber das sind dennoch Dimensionen wo ich mir überlege: Wow, so ein Worst-Case-Szenario kann doch gar nicht funktionieren?!
im Rahmen der Entwicklung von KONNEKTING beta5 fällt mir immer wieder auf, dass wir selbst mit heutigen, guten und schnellen Microcontrollern hier und da doch an Limits stoßen, die vor 20 Jahren auch schon galten, aber so "moderne Controller" noch nicht präsent waren...
Ein Beispiel:
Laut https://www.auto.tuwien.ac.at/~mkoeg...dex.php/bcusdk kann so eine BCU 85 KOs, 127 GA und 255 Verknüpfungen zwischen GA<->KO haben.
Wenn nun ein Telegramm eingeht, muss man schauen welche GA es anspricht. Klar. Und dann muss man schauen ob das Telegramm für einen bestimmt ist. Auch klar.
Dazu gibt es im Speicher der BCU "Tabellen" für die Adresse, die Verknüpfungen und die KOs.
Wenn jetzt also so ein Telegramm eingeht, dann muss ich im Worst-Case die GA mit bis zu 127 gespeicherten GAs vergleichen. Eine GA ist 2 byte groß.
Bei 127 GAs sind das schon 254 bytes.
Habe ich dann die GA gefunden, muss ich noch schauen welches KO damit verknüpft ist. Also muss ich im worst-case bis zu 255 Verknüpfungseinträge lesen. Das sind dann nochmal 255 bytes. Und pro gefundener Verknüpfung, muss ich dann noch die Nummer des KO lesen. Da es bis zu 85 KOs geben kann, ist eine GA im worst-case mit 85 KOs verknüpft. Also nochmal 85 bytes.
Macht zusammen 594 bytes.
Wenn man jetzt so schau was "damals" für eine Controller-Familie genutzt wurde (wenn ich richtig recherchiert haben dann ist das sowas: http://de.farnell.com/nxp/mc68hc705c...c44/dp/1661748) , dann können die 594 bytes unmöglich im RAM vorliegen, sondern müssten in einem EEPROM liegen.
Das alles im EEPROM nachzuschlagen kostet doch auch Zeit. Und nebenher muss ich ja schauen, dass ich weitere Telegramme die da eingehen können, vor lauter "im EEPROM suchen" nicht verpasse. Wenn auf dem Bus nix los ist..prima. Aber da kann ja auch mal die Hölle los sein...
Hat da jemand einen etwas tieferen Einblick und kann da ein bisschen darüber plaudern wie das alles gehen soll? Logo, ich bin nicht der Embedded/Microcontroller Experte, un die "echten Freaks" hauen da nochmal einiges an Performance raus wenn sie direkt in Assembler basteln. Aber das sind dennoch Dimensionen wo ich mir überlege: Wow, so ein Worst-Case-Szenario kann doch gar nicht funktionieren?!
Kommentar