Forum: Mikrocontroller und Digitale Elektronik STM32F030F4P6 : Flashspeicher 32 kByte?


von Ralph S. (jjflash)


Lesenswert?

Ich bin etwas "verwirrt": Ich habe hier insgesamt 12 Stck. STM32F030F4P6 
und allesamt aus chinesischer Quelle.

Lt. Datenblatt sollen diese (F4P6) eine Flashspeichergröße von 16 kByte 
besitzen.

Erst ist es mir nicht aufgefallen (weil man ja, wenn alles so 
funktioniert wie es soll, die Bildschirmmeldungen nicht mehr wirklich 
liest):
1
root@porteus:/home/mcu/stm32f030/ili9163_bmp# make flash
2
stm32chflash -b 115200 -w ili9163_bmp.bin -g 0 /dev/ttyUSB0
3
  stm32chflash 0.5m F030 ver. 0b
4
5
Original authors of stm32flash:
6
   (2010) Geoffrey McRae, (2011) Steve Markgraf
7
   (2012-2016) Tormod Volden, (2013-2016) Antonio Borneo
8
9
   Original source in: http://stm32flash.sourceforge.net/
10
11
   special version for use with STM32F030 & CH340G  (2017) by R. Seelig
12
--------------------------------------------------------------------------
13
14
Using Parser : Raw BINARY
15
Interface serial_posix: 115200 8E1
16
Version      : 0x31
17
Option 1     : 0x00
18
Option 2     : 0x00
19
Device ID    : 0x0444 (STM32F03xx4/6)
20
- RAM        : 4KiB  (2048b reserved by bootloader)
21
- Flash      : 32KiB (size first sector: 4x1024)
22
- Option RAM : 16b
23
- System RAM : 3KiB
24
Write to memory
25
Erasing memory
26
Wrote address 0x08003f1c (100.00%) Done.
27
28
Starting execution at address 0x08000000... done.

Bei jedem der 12 Controller wird dieses gemeldet: 32 kByte. Hm, dann 
kommen natürlich die üblichen Verdachtsmomente (was mir im privaten 
Hobbybereich eher egal ist):

- nicht neu
- nicht original
- Ausschuß aus FAB und umgelabelt

"Lustig" ist, dass ich auch die angegebenen 32 kByte beschreiben kann 
(ich habe ein Bitmap Grafik im Flash gespeichert und das Programm dazu 
das es anzeigt, insgesamt eine Größe von 30993 Bytes) ... und das 
funktioniert.

Ist darüber etwas bekannt ?
Ist das bei anderen die diese Bausteine verwenden ebenso?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

ST produziert den STM32F030xx4/6 von gleichen Chip. Was als xx4 
gestempelt wird, hat den entweder ungetesteten Flash, oder Flash der 
kaputt getestet wurde, oder vielleicht auch  gut getesten Flash

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

Da bist du nicht der erste dem das auffaellt.

Also: keine Neuigkeit.

Das kann bei der naechsten Charge die ueber Fernost vertickt wird,
schon wieder anders aussehn...

von Zweifler (Gast)


Lesenswert?


von Ralph S. (jjflash)


Lesenswert?

... na ja, ich hab mich halt ans Datenblatt gehalten ... und bisher 
Programme eben auf 16 kB getrimt.

Zweifler schrieb:
> Du bist zu spät:
> Beitrag "Re: Basteltip: STM32F103 DIP40 Board"

Das war mir bekannt, und ich hab einige, die sich als 64k und andere die 
sich als 128k melden.

Uwe B. schrieb:
> ST produziert den STM32F030xx4/6 von gleichen Chip. Was als xx4
> gestempelt wird, hat den entweder ungetesteten Flash, oder Flash der
> kaputt getestet wurde, oder vielleicht auch  gut getesten Flash

Hmmmm... eine Fa. wie ST lässt Flash ungetestet ??? Als defekt 
getesteter Flash würde doch normalerweise nicht verkauft werden !

Ich "kenne" das so, das getestet wird, was auf dem Die funktioniert und 
als solche wird es verkauft. Wenn auch die "kleinste" Spezifikation 
eines Chips nicht eingehalten werden kann, ist es Ausschuß (wurde das 
nicht auch mal mit i80486 so gemacht, als DX und SX Variante ... die SX 
Variante ohne Koprozessor, weil der auf einigen Die's nicht funktioniert 
hat?)

Wie gesagt, dass eine unterschiedliche Speichergröße bei einem F030P4 
auftaucht wußte ich noch nicht !

BTW: wo wird denn dem Chip die Speichergröße hinterlegt, die dann 
ausgelesen werden kann, ist das nicht auch im Flash und ist diese Stelle 
"beschreibbar" ?

von Lutz (Gast)


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5029016:
> Da bist du nicht der erste dem das auffaellt.
>
> Also: keine Neuigkeit.
>
> Das kann bei der naechsten Charge die ueber Fernost vertickt wird,
> schon wieder anders aussehn...

Die Wahrscheinlichkeit, daß die Maske ausgetauscht wird, ist wohl nicht 
so groß. Und selbst wenn: Die haben ja einen Grund, warum sie die Chips 
so fertigen, wie sie es tun. Das wurde ja nun schon x-mal diskutiert.

von avr (Gast)


Lesenswert?

Ralph S. schrieb:
> Hmmmm... eine Fa. wie ST lässt Flash ungetestet ??? Als defekt
> getesteter Flash würde doch normalerweise nicht verkauft werden !

Wo ist das Problem? Wenn die oberen 16 KB nicht funktionieren, und der 
µC mit nur 16 KB Flash verkauft wird, ist doch noch alles innerhalb der 
Specs. Nur weil der µC 32 KB hat, heißt das nicht, dass diese auch 
funktionieren müssen.

von Thomas H. (flaretom)


Lesenswert?

Hi,

Zeigt das FLASH_SIZE Register die richtige Größe an, also die auch von 
ST OK- getestet wurde?
Es dürfte nämlich mit normalen Mitteln unmöglich zu testen sein, ob der 
evt. zusätzlich vorhandene Flash die Daten auch langfristig hält.
@Ralph:
Man müsste mit dem Teil im Backofen ein paar Rampen fahren und dann 
schauen, ob die Daten noch ok sind ;)

BG, Tom

Edit: Gerade gesehen im andern Thread 
(Beitrag "Re: Basteltip: STM32F103 DIP40 Board"): Das 
FLASH_SIZE zeigt die garantierte Größe.

von Zweifler (Gast)


Lesenswert?

Ralph S. schrieb:
> Zweifler schrieb:
>> Du bist zu spät:
>> Beitrag "Re: Basteltip: STM32F103 DIP40 Board"
>
> Das war mir bekannt, und ich hab einige, die sich als 64k und andere die
> sich als 128k melden.

Du hast nicht den von mir extra verlinkten Beitrag gelesen.

Deswegen Vollzitat:

Gerd E. schrieb:
> Gerd E. schrieb:
>>>> Ich hab gestern mal probiert, der
>>>> STM32F030F4P6 lacht einen auch mit 32kB Flash an.
> [...]
>> Vielleicht kann man beim 030 ja jetzt nicht nur 32 kb Flash, sondern
>> auch den Timer 2 benutzen?
>
> Ich habs grad mal ausprobiert:
>
> Der STM32F030F4P6 hat nicht nur 32kB Flash wie Ollus oben herausgefunden
> hat, sondern es funktioniert auch der Timer 2 (32 Bit). Damit hat man
> auch auf dem STM32F030F4P6 einen 32 Bit Timer zur verfügung, was ich
> gerade für den Timerinterrupt sehr hilfreich finde. Ich sehe keinen
> Unterschied zwischen dem STM32F030F4P6 und STM32F031F6P6.
>
> Also ich finde das wertet den sowieso schon sehr günstigen STM32F030F4P6
> nochmal deutlich auf. Für 39 Cent pro Stück kann man da echt nicht viel
> falsch machen:
> http://www.aliexpress.com/item//32479516689.html

von Hmmhmm (Gast)


Lesenswert?

avr schrieb:
> Wo ist das Problem? Wenn die oberen 16 KB nicht funktionieren, und der
> µC mit nur 16 KB Flash verkauft wird, ist doch noch alles innerhalb der
> Specs. Nur weil der µC 32 KB hat, heißt das nicht, dass diese auch
> funktionieren müssen.

Da sind einige eigentlich "unveränderiche" Daten falsch programmiert. 
Für ein Serienprodukt ist das völlig inakzeptabel, denn wer weiß schon, 
was noch alles falsch ist. Kalibrierdaten vom ADC zum Beispiel?
Na bravo :-(

Sicher fertigt ST nicht jede Chipgröße extra, das ist mir auch klar. 
Aber die werden ihre Chips richtig programmieren (aka der Chip liefert 
die korrekte Flashgröße, wenn man ihn liest).

ST ist keine kleine Bastelbude, daraus folgt, das ist entweder Aussschuß 
oder Fälschungen oder ein Fehler. Da es Fälschungen von STM32 wirklich 
gibt, ist das nicht aus der Luft gegriffen.

von Jim M. (turboj)


Lesenswert?

Ralph S. schrieb:
> Lt. Datenblatt sollen diese (F4P6) eine Flashspeichergröße von 16 kByte
> besitzen.

Und er ist der einzige der Serie mit TSSOP20 Gehäuse.

Wenn da ein Kunde mal >10k Stück mit 32KB Flash haben wollte, wird STM 
auch die in ein TSSOP gehäuse verpacken - ist derselbe Die. Eventuell 
sind die µC des OP aus so einer Serie übrig geblieben.

Andererseits könnte das auch ein Fuckup der Fabrik sein die die Chips 
"verpackt". Es ist durchaus möglich das die für 16KB vorprogrammierten 
Dice einfach alle waren - aber 32KB noch übrig.

Hmmhmm schrieb:
> Da sind einige eigentlich "unveränderiche" Daten falsch programmiert.
> Für ein Serienprodukt ist das völlig inakzeptabel, denn wer weiß schon,
> was noch alles falsch ist. Kalibrierdaten vom ADC zum Beispiel?

Nö. Da ist einfach ein Chip in ein anderes Gehäuse verpackt worden. 
Vermutlich kann man hinterher die Flash Size nicht mehr ändern - weil 
sie beispielsweise eingelasert sein könnte. Das hat aber keine 
Auswirkungen auf sowas wie ADC Kalibrierdaten.
Und die Daten sind auch nicht falsch: Offensichtlich funktionieren die 
32KB Flash ohne Probleme.

von noreply@noreply.com (Gast)


Lesenswert?

Weint doch rum. Ihr müßt den extended Flash ja nicht verwenden.

von Christopher J. (christopher_j23)


Lesenswert?

Hmmhmm schrieb:
> Da sind einige eigentlich "unveränderiche" Daten falsch programmiert.

Was ist denn "falsch"?


Jim M. schrieb:
> Und er ist der einzige der Serie mit TSSOP20 Gehäuse.

Hmmhmm schrieb:
> Sicher fertigt ST nicht jede Chipgröße extra, das ist mir auch klar.
> Aber die werden ihre Chips richtig programmieren (aka der Chip liefert
> die korrekte Flashgröße, wenn man ihn liest).

Der F031F6P6 hat 32kB Flash und mit an Sicherheit grenzender 
Wahrscheinlichkeit den gleichen Die wie der F030F4P6. Darüber hinaus 
besteht auch die Möglichkeit den gleichen Die in unterschiedliche 
Gehäuse zu stecken.

Was ist denn mit der Möglichkeit, dass STM32FLASH die größe gar nicht 
aus dem FLASH_SIZE Register bekommt, sondern aus einem anderen 
Parameter, den der UART-BL überträgt? Gleicher Die, d.h. gleicher BL, 
d.h. gleicher Parameter. Macht doch Sinn oder nicht?

von Christopher J. (christopher_j23)


Lesenswert?

So, um mal ein bisschen Klarheit zu schaffen habe ich es kurzerhand 
selber ausprobiert:

Das FLASH_SIZE Register sagt 16kB:
1
(gdb) tar rem localhost:3333
2
Remote debugging using localhost:3333
3
0x00000000 in ?? ()
4
(gdb) x/h 0x1FFFF7CC
5
0x1ffff7cc:     16

stm32flash sagt ("up to") 32kB:
1
stm32flash 0.5
2
3
http://stm32flash.sourceforge.net/
4
5
Interface serial_posix: 57600 8E1
6
Version      : 0x31
7
Option 1     : 0x00
8
Option 2     : 0x00
9
Device ID    : 0x0444 (STM32F03xx4/6)
10
- RAM        : Up to 4KiB  (2048b reserved by bootloader)
11
- Flash      : Up to 32KiB (size first sector: 4x1024)
12
- Option RAM : 16b
13
- System RAM : 3KiB

Version von stm32flash ist bei mir 0.5 aus "stm32flash-git" aus dem AUR. 
Scheinbar wurde da innerhalb gewisser Versionen mal das "up to" 
weggelassen bzw. hinzugefügt.

Jedenfalls braucht sich keiner Sorgen zu machen, dass irgendwelche 
"read-only" Daten den "falschen" Wert hätten, weil irgendwelche findigen 
Chinesen da irgendetwas gefälscht hätten.

> Device ID    : 0x0444 (STM32F03xx4/6)

Das sollte eigentlich Erklärung genug sein.

von Axel S. (a-za-z0-9)


Lesenswert?

Christopher J. schrieb:

> Das FLASH_SIZE Register sagt 16kB:
>
> stm32flash sagt
> ...
> Device ID    : 0x0444 (STM32F03xx4/6)
> - RAM        : Up to 4KiB  (2048b reserved by bootloader)
> - Flash      : Up to 32KiB (size first sector: 4x1024)
> - Option RAM : 16b
> - System RAM : 3KiB

>> Device ID    : 0x0444 (STM32F03xx4/6)
> Das sollte eigentlich Erklärung genug sein.

Es ist sogar die genaue Erklärung. AFAIK liefert der Bootloader nur die 
Device ID zurück. Und die kann für verschiedene Mitglieder der gleichen 
Familie auch identisch sein. Im hiesigen Fall haben die STM32F03xx4/6 
eben alle die Device ID 0x0444. Das Aufdröseln der Device-ID zu 
Flash/RAM Größe macht stm32flash per eingebauter Tabelle. Siehe 
dev_table.c

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.