Moin, kann mir jemand mal den Sinn dieser Zeile erklären?
1 | |
Hier der Code Ausschnitt.:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
|
Anzeige
|
Verständniss Frage -> Bootloader KodeMoin, kann mir jemand mal den Sinn dieser Zeile erklären?
Hier der Code Ausschnitt.:
Gast
#5852625
Damit wird wohl die Startadresse der Page berechnet in der sich die aktuelle Adresse (hex_addr) befindet.
Gast
#5852629
moep schrieb: > Startadresse der Page Oder nur die direkte adresse unter Berücksichtigung einer Adressierung mit Page-Offset ?
Beitrag #5852631 wurde von einem Moderator gelöscht.
Jan H. schrieb: > Moin, > > kann mir jemand mal den Sinn dieser Zeile erklären? >
> > Hier der Code Ausschnitt.: >
hex_addr - hex_addr -> Da kommt doch jedes mal "0" raus oder habe ich was verpasst?
Gast
#5852645
Jan H. schrieb: > hex_addr - hex_addr -> Da kommt doch jedes mal "0" raus oder habe ich > was verpasst? Hast du, nämlich: % SPM_PAGESIZE Die Operation kommt zuerst.
Gast
#5852647
Jan H. schrieb: > oder habe ich > was verpasst? Ja, die "operator precedence". Auf gut Schuldeutsch: "Punkt vor Strich" moep schrieb: > Jan H. schrieb: >> oder habe ich >> was verpasst? > > Ja, die "operator precedence". > Auf gut Schuldeutsch: "Punkt vor Strich" Soll heißen ->
Richtig? :D
Gast
#5852757
Jan H. schrieb: > Richtig? Schaue doch bitte in die Spezifikation der Sprache, welche du verwendest, wenn du den Antwortenden nicht glauben magst. In jedem C Buch findest du diese Wahrheit. In Foren findest du Glauben, Überzeugungen und Meinungen, und diese stellst du ja hier Frage... moep schrieb: > Damit wird wohl die Startadresse der Page berechnet in der sich die > aktuelle Adresse (hex_addr) befindet. Wenn der Controller jetzt sagen wir mal 128 Pages hat.. Darf das Ergebnis der Rechnung nicht größer als 128 werden oder?
Gast
#5853283
Jan H. schrieb: > Wenn der Controller jetzt sagen wir mal 128 Pages hat.. Darf das > Ergebnis der Rechnung nicht größer als 128 werden oder? Du hast nicht begriffen, das die Startadresse einer Seite nicht die (fiktive) "Nummer" einer Seite ist, sondern eben diese fiktive Nummer multipliziert mit der Größe der Seiten. Denn genau das braucht der der SPM-Mechanismus. Datenblatt lesen bildet!
Gast
#5853284
Jan H. schrieb: > Richtig? Nein. Richtig ist: hex_addr - (hex_addr % SPM_PAGESIZE) c-hater schrieb: > Jan H. schrieb: > >> Wenn der Controller jetzt sagen wir mal 128 Pages hat.. Darf das >> Ergebnis der Rechnung nicht größer als 128 werden oder? > > Du hast nicht begriffen, das die Startadresse einer Seite nicht die > (fiktive) "Nummer" einer Seite ist, sondern eben diese fiktive Nummer > multipliziert mit der Größe der Seiten. > > Denn genau das braucht der der SPM-Mechanismus. Datenblatt lesen bildet! Hätte ich es verstanden, würde ich wohl kaum hier fragen oder? Unter was muss ich schauen? Flash Pages?
Gast
#5853297
Jan H. schrieb: > Unter was muss ich schauen? Kommt natürlich auf's konkrete DB an. Aber irgendwas mit "Bootloader support" oder "Self-programming the flash" kommt eigentlich überall im Titel des/der relevanten Abschnitte vor. c-hater schrieb: > Jan H. schrieb: > >> Unter was muss ich schauen? > > Kommt natürlich auf's konkrete DB an. Aber irgendwas mit "Bootloader > support" oder "Self-programming the flash" kommt eigentlich überall im > Titel des/der relevanten Abschnitte vor. Habe hier einen Mega32 vor mir liegen.
Gast
#5853317
Jan H. schrieb: > Habe hier einen Mega32 vor mir liegen. Sollen wir jetzt für dich vorlesen? Stefanus F. schrieb: > Jan H. schrieb: >> Habe hier einen Mega32 vor mir liegen. > > Sollen wir jetzt für dich vorlesen? Kannst Du denn lesen?
Gast
#5853325
Nicht pampig werden, Stefan. Das Forum ist dazu da Fragen zu stellen.
Gast
#5853327
Jan H. schrieb: > Habe hier einen Mega32 vor mir liegen. Schön für dich. Dann weißt du je wenigstens welches verdammte Datenblatt du herunterzuladen nd zumindest dessen Inhaltsverzeichnis durchzusehen hast. Mein Gott, das kann doch nicht so schwer sein, mal wenigstens irgendwas selbst zu tun... Schnauze schrieb: > Nicht pampig werden, Stefan. Das Forum ist dazu da Fragen zu stellen. Mache haben halt direkt alles in die Wiege gelegt bekommen und sind halt neunmalklug. c-hater schrieb: > Jan H. schrieb: > >> Habe hier einen Mega32 vor mir liegen. > > Schön für dich. Dann weißt du je wenigstens welches verdammte Datenblatt > du herunterzuladen nd zumindest dessen Inhaltsverzeichnis durchzusehen > hast. > > Mein Gott, das kann doch nicht so schwer sein, mal wenigstens irgendwas > selbst zu tun... Nette Aussage ?
Gast
#5853334
Schnauze schrieb: > Nicht pampig werden, Stefan. Das Forum ist dazu da Fragen zu stellen. Es ist aber nicht dazu da, exzessive chronische eigene Faulheit ohne jede Scham darzustellen. Ja, kann man machen, muss sich dann aber nicht über die Reaktion der Fleissigen wundern.... c-hater schrieb: > Schnauze schrieb: > >> Nicht pampig werden, Stefan. Das Forum ist dazu da Fragen zu stellen. > > Es ist aber nicht dazu da, exzessive chronische eigene Faulheit ohne > jede Scham darzustellen. > > Ja, kann man machen, muss sich dann aber nicht über die Reaktion der > Fleissigen wundern.... Dein Ego scheint sehr groß zu sein, zumindest im Netz.
Gast
#5853724
Ich brauchte 20 Sekunden, das Datenblatt zu finden, downzuloaden und die Worte "self programming" darin zu finden. Es ist ja wohl nicht zu viel verlangt, nach genannten Stichworten selbst zu recherchieren. So langsam dämmert mir, was unsere Regierungende Industrie mit Fachkräftemangel meint. Mir wird Angst und Bange vor den Lenkradlosen Autos, die unsere Facebook Generation gerade entwickelt.
Gast
#5853780
Du könntest ja auch einfach nicht antworten, wenn es so eine Zumutung ist. Oder lässt dein Zwang zu "helfen" das nicht zu? Oder musst du Überlegenheit demonstrieren wie eine ganze Reihe anderer Kandidaten hier?
Gast
#5853807
Schnauze schrieb: > Oder lässt dein Zwang zu "helfen" das nicht zu? Oder musst du > Überlegenheit demonstrieren wie eine ganze Reihe anderer Kandidaten > hier? Nach so viel gemecker habe ich Mitleid mit dem TO empfunden. Schnauze schrieb: > Du könntest ja auch einfach nicht antworten, wenn es so eine Zumutung > ist. > > Oder lässt dein Zwang zu "helfen" das nicht zu? Oder musst du > Überlegenheit demonstrieren wie eine ganze Reihe anderer Kandidaten > hier? Ich mag deine Art. Du weißt doch sicherlich "Hochmut kommt vor dem Fall". Im Netz große Klappe, zu Hause nichts zu sagen.
Gast
#5853817
Es gibt hier ein paar Menschen, die hassen es, wenn andere mehr Hilfsbereitschaft zeigen, als sie selber. Verständlich, denn es fühlt sich nicht gut an, zu merken dass man in gewissen Punkten ein schlechterer Mensch ist. Die einen akzeptieren ihre Unvollkommenheit, die anderen hadern ihr ganzes Leben damit. Denen sieht man es am Gesicht an und man merkt es auch an ihren Äußerungen.
Gast
#5853819
Herrlich! Eine Eskalation.... Fein! Darf ich mitmachen? Jan H. schrieb: > Mache haben halt direkt alles in die Wiege gelegt bekommen und sind halt > neunmalklug. Falsch. Manche haben sich ihr Wissen hart erarbeitet. Ich versuch einfach mal auf die Frage zu antworten. % ist der Modulo Operator. Der gibt dir den Rest einer Division zurück. Hatte man in der Grundschule mal. Ganz einfach ist das, wenn hinterm Modulo eine 1 mit vielen Nullen steht. Am Beispiel: 12345%100 = 45. Das geht auch Hexadezimal 0x12AB % 0x100 = AB oder Binär 0b1000001010 % 0b10000 = 0b1010. Speicher ist of in mehrere Blöcke (pages) fester größe Zerlegt. Also hat man beispielsweise 16 Blöcke mit je 1kB. Man kann das entweder mit 0-16383 addressieren oder mit einer Zahl von 0-15 und einer von 0-1023. 1kB ist jetzt SPM_PAGESIZE. hex_addr ist eine Adresse im linear addressierten Speicher. hex_addr%SPM_PAGESIZE gibt dir die Addresse im Block, ist im Beispiel also max 1023 groß. Wenn man den Wert von hex_addr abzieht, dann erhält man die Page-Nummer (gefolgt von ein paar Nullen). Blöcke haben praktisch immer die größe einer Zweierpotenz. Binär also eine 1 mit einigen Nullen. Damit schließt sich dann der Kreis zur Modulo "Erklärung" oben. Falls das alles schon klar war, dann einfach nochmal fragen.
Gast
#5854051
Mathias M. schrieb: > Falls das alles schon klar war, dann einfach nochmal fragen. Warum, damit es nochmal erklärt wird?
Gast
#5854074
Ach so geh das, Hilfsbereit sein. Stefan, sorry, aber du bist wirklich erbärmlich. Stefanus F. schrieb: > Mathias M. schrieb: >> Falls das alles schon klar war, dann einfach nochmal fragen. > > Warum, damit es nochmal erklärt wird? Ich gehe davon aus, dass er dann die Frage nicht 1 zu 1 nochmal postet, sondern neu formuliert, was er noch nicht verstanden hat. Hätte ich natürlich klarer ausdrücken können, damit du das verstehst.
Gast
#5854166
Mathias M. schrieb: > dass er dann die Frage nicht 1 zu 1 nochmal postet, > sondern neu formuliert So ergibt es mehr Sinn, als wie ich es vorhin aufgefasst habe. Mathias M. schrieb: > Falls das alles schon klar war, dann einfach nochmal fragen. Es gibt auch noch nette Menschen ;) Ich habe das bis jetzt so verstanden.. ( Da ich gerade mit einem "Mega32" arbeite, entnehme ich die Daten aus dem Datenblatt als Beispiel von dem.. ) Flash Pages = 256 Page Size = 64 Words ( 128 Bytes ) Meine bildliche Auffassung ->
Daher habe ich mit dieser Rechnung auch nicht viel anfangen können. Laut dieser Berechnung kommt nach 128 Bytes, als "flash_page" 128 raus. Dieser Sprung von 0 -> 128 war / ist mir nicht ganz klar. In meiner Vorstellung müsste nach der ersten geschrieben Page eine 1 raus kommen. Es wird wohl aber so nicht adressiert? Jan H. schrieb: > Meine bildliche Auffassung -> > Page[0] = 0..127 ( Bytes) > Page[1] = 127.. usw. Nein. Page[0] = 0..127 Page[1] = 128..255 Page[2] = 256..383 usw. Allerdings sind die Namen etwas unglücklich gewählt.
Gast
#5855842
Hab hier vom TO noch keine Frage gesehen die sich nicht jedes Toastbrot mit 2min überlegen selbst hätte beantworten können. Also kein Wunder dass man da genervt ist. Elektronik ist kein Hobby für jmd der es nicht mal schafft, bereits genannte Suchbegriffe in einem Datenblatt zu suchen. Und programmieren ist kein Hobby für jmd der erst in einem Forum fragen muss um merken, dass Punkt- vor Strichrechnung kommt wenn ein Code anders wie schon gemerkt ja keinen Sinn ergibt. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|