@all, leider konnte ich keinen passenden Beitrag finden und werde nun einen selber schreiben. Ich habe ein Programm geschrieben das sehr viel Daten speichern muss. Um nun den Bereich zu erweitern zu können, kann ich zwischen 2 Bänken umschalten das funktioniert auch. Nun ist aber mein Problem, wie kann ich der Keil Software beibringen, dass nicht nur 64K existieren sondern 128k. Habe schon alles ausprobiert jedoch ohne Erfolg. Hat eventuell schon jemand Erfahrung bzw. hat es schon jemand gemacht und kann mir ein paar Tipps geben. Mein HW 80C517A(Lab 537) und Keil µvision2. Danke TOM
Hast Du schon mal auf der Keil Webseite gesucht ? Steht denn in der Doku zum Board nichts dazu drin ? Unterstützt Deine Keil-Version überhaupt Speicher-Banking ? Wenn Du einen Datenlogger baust, ist es oft günstiger einen EEPROM oder Flash zu nehmen, dann bleiben die Daten auch beim Abschalten erhalten. Dann braucht man sich nur eine Funktion zu schreiben, die einen Datenblock aus einem SRAM-Bereich in den Flash/EEPROM kopiert. Im Prinzip so, wie man z.B. einen UART-Puffer programmiert. Müssen aber die 128kB wirklich ständig wahllos zugegriffen werden, dann muß man irgendwo dem Compiler eine Funktion angeben, die die Adreßumschaltung durchführt. Natürlich werden damit sämtliche Datenzugriffe über diese Funktion umgeleitet und damit arschlahm. Es liegt also in Deinem Ermessen, ob Du wirklich arschlahme 128kB flat SRAM haben willst oder nur einige Datenblöcke ab und zu auslagerst. Peter
P.S.: Man muß den Compiler auf das Huge memory model einstellen. Peter
@Peter, "Hast Du schon mal auf der Keil Webseite gesucht ?" Ja,habe jedoch leider nichts passendes gefunden. Das einzige was ich gefunden habe ist hier http://www.keil.com/support/docs/2103.htm . Eigentlich sollte doch der Software einfach mitgeteilt werden, dass mehr Speicher verfügbar ist das umschalten will ich selbst programmieren. "Steht denn in der Doku zum Board nichts dazu drin ?" Da steht nur drin wie die Umschaltung funktioniert und das funktioniert auch. Nur kann ich der Keil Software nicht mitteilen Dass mehr als 64K zu Verfügung stehen. "Unterstützt Deine Keil-Version überhaupt Speicher-Banking ?" Für den Codebereich gibt es ein Häckchen(Anhang). Für den Datenspeicher müsste dies auch existieren?!? Bin um Hilfe dankbar. Tom
Ich hab mich noch nie dafür interessiert, da 64kB Code + 64kB Data immer dicke ausreichten und ich also immer das small memory model nutzen konnte. Dein Link ist doch goldrichtig und enthält alles nötige. Wenn Du also nicht das Profikit PK51 hast, dann ists Essig mit far Variablen. Keil ist also doch nicht so doof, wie ich dachte. Du must nur die erweiterten Variablen als far deklarieren, alle anderen werden entsprechend dem Memory model weiterhin gleich schnell zugegriffen. Peter
@Peter, sorry aber ich versteh nur Bahnhof?!?!?!?!?!?!? Programmiere zwar schon einige Monate und habe auch so einiges hinbekommen doch da blicke ich nicht durch. Was macht dieses XBANKING.A51 eigentlich. Wäre nett wenn Du es mir mal erklären könntest da ich in Assembler nicht so bewandert bin(leider). Gruß TOM
"Wäre nett wenn Du es mir mal erklären könntest da ich in Assembler nicht so bewandert bin(leider)." Daran führt kein Weg vorbei, wenn Du es haben willst. Ich vermute mal, daß Du da die Assemblerbefehle eintragen mußt, mit denen die Umschaltung erfolgt. Erzähl dochmal, warum Du soviel Speicher brauchst. Du weißt aber schon, daß man viel mehr lokale Variablen haben kann, als physisch an SRAM vorhanden ist ? Ich hab z.B. in einem Projekt etwa 1000Byte Variablen gehabt, die trotzdem alle in die 256Byte internen SRAM paßten. Peter
P.S.: Du weißt hoffentlich auch, daß nicht alle Variablen immer nur double float sein müssen, sondern auch unsigned char sein dürfen, wenns ausreicht. Eine sehr sehr gute Hilfe für effiziente Programmierung ist der C51-Primer. Peter
@Peter, ich werte Sensoren aus d.h. aktuelle Daten und alle 15min einen Mittelwert. Also 12 Sensoren x 4 Werte = 48 Datensätze Jeder datensatz besteht aus 4-6 integer Werten Also 48 x 5 = 240 integerwerte pro Std x 24Std = 5760 Werte pro Tag. Das sind so 11k pro Tag. Mein Speicher 64K reicht also so 6 Tage, da ich aber ein 128K SRAM auf meinem Board habe wollte ich diese auch nutzen. Das ist der ganze Gedanke.Eigentlich habe ich gedacht das geht etwas einfacher. TOM
@all, ich habe mich nun ein wenig durchgearbeitet und habe herausgefunden das man das irgentwie einstellen kann mit XBANKING.A51 oder L51_Bank.A51(link oben). Im OPTION OF TARGET kann ich unter dem Reiter Device 2 Hacken setzen dann wird 'far' memory support schwarz und ich kann es verwenden. Soweit so gut, es gibt auch unter C51\Samples\ einige Beispiele wie das gemacht wird.Hat eventuell jemand damit schon experimentiert oder kann mir sagen welches beim 80C517A passt. Gruß und Danke!!!!!! TOM
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.