Hallo Microcontroller community, Ich versuche gerade die Programmierzeiten unserer µC zu omptimieren. Speziell geht es dabei um die Programmierung des Flash Speichers. Ich möchte die Programmierung über serielle Schnittstelle (UART) und die Programmierung über ein JTAG / Boundary scan interface miteinander vergleichen. Der momenten in unseren Produkten eingesetzte Prozessor ist der M30626FJPGP. Bei diesem Prozessor möchte ich nun die Dauer berechnen die es benötigt, 2MB Daten in den Flash Speicher zu schreiben. Ich bin mit jetzt jedoch unsicher, ob ich die typische Geschwindigkeit pro geschriebenes Wort aus dem Datasheet http://documentation.renesas.com/doc/products/mpumcu/rej03b0001_16c62pds.pdf oder die Baudrate der UART nehme, über welche die Programmierung erfolgt (9600 Baud schätz ich mal, steht nichts genaueres drin..). Weiterhin stellt sich mir die Frage, ob ich den Flash eines Microcontrollers auch unabhängig von dessen maximaler Frequenz programmieren kann wenn ich den Flash über die Leitungen mit einem Boundary Scan fähigem Device verbinde welches eine höhere Taktfrequenz zulässt. Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt, bin noch ein relativer Neuling auf dem Gebiet :-) Beste Grüße Manuel
Manuel Reisser schrieb: > jetzt jedoch unsicher, ob ich die typische Geschwindigkeit pro > geschriebenes Wort aus dem Datasheet > http://documentation.renesas.com/doc/products/mpum... > oder die Baudrate der UART nehme, Beides, plus Firmwarelaufzeit, um eine Flashpage über einen RAM-Puffer zu aktualisieren.
Hallo Herr Ballhause, Vielen Dank für die Information. Wie man einen Flash über BS programmiert weiß ich mitlerweile, außerdem wie man die ungefähr benötigte Zeit berechnet.. Bei der normalen Programmierung über UART tu ich mich da noch etwas schwer.. Hätten sie vielleicht ein Beispiel wie man solch eine Programmierzeit berechnet? Vielen Dank & Beste Grüße Manuel
Guten Morgen, kann mir vielleicht Jemand weiterhelfen? Optimal wäre es wenn Jemand ein Beispiel posten könnte wie man die Programmierzeit berechnet (irgendeinen Flash Speicher, vielleicht den aus dem Datenblatt oder schon berechnete Flash Speicher) Danke! Gruß Manuel
1. Die Zeit, 2MB über den UART zum Prozessor-RAM zu schaufeln t_1 = Datenmenge/Bitrate 2. Die Zeit, die benötigten Flashpages zu beschreiben Datenblattangaben: a) Schreibzeit einer Flashpage nachsehen b) Größe einer Flashpage nachsehen n = Datenmenge/Flashpage-Größe t_2 = n * Schreibzeit (2A. Die Zeit, 2MB über den UART zum PC zu schaufeln für einen Verify) t_2a = ... wie 1 ... t_ges_min = t_1 + t_2 (+ t_2a) 3. ca. +10% Protokoll-Overhead, ca. +10% Wartezeiten durch Synchronisationsmechanismen PC<->Prozesssor t_ges = ca. 1,21 * t_ges_min mfg mf
Hallo MF, Danke, das hilft mir schon einmal weiter. Ich hab hier mal den Ausschnitt aus dem Datenblatt. Hier steht nichts für die Zeit die benötigt wird um einen Block zu beschreiben. Die Zeit t1 aus deinem Beispiel ist ja die Zeit die ich benötige um in den Puffer des Flash Speichers zu schreiben. Ist die pro Wort Zeit nun die die der Baustein benötigt um die Daten vom Puffer aus in die Blöcke zu schreiben? Wenn mein Baustein zunächst unbeschrieben ist brauch ich die Löschvorgänge für die Blöcke nicht zu berücksichtigen, oder? Danke Gruß Manuel
Manuel Reisser schrieb: > Hier steht nichts für die Zeit die benötigt wird um einen Block zu > beschreiben. block_size / word_size * Word Programm Time. Bei 9600 Baud, brauchst Du Dir über die Programmierdauer keine Gdanken zu machen. Ein Prozessor/Stunde ist machbar.
Hi Willi, Danke für deine Hilfe. Ja, das ist ja das Gute, bei uns wird über RS232 programmiert, deshalb ist hier ein Optimierungspotential definitiv gegeben. Ich würde nur gerne anhand von Berechnungsbeispielen zeigen, wie groß diese Optimierungen ausfällen können, bei Verwendung von JTAG, Programmierung über BS und andere Techniken die mir vielleicht kurzfristig noch einfallen :-)
Du könntest nachsehen, ob das Flash fertig programmiert ist. Check the FMR00 bit in the FMR0 register to see if auto programming has finished. The FMR00 bit is “0” during auto programming and set to “1” when auto programming is completed. Check the FMR06 bit in the FMR0 register after auto programming has finished, and the result of auto programming can be known. (Refer to “Full Status Check.”
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.