STM32F103RBT6–RET6: Flash-muistin tiheyden vaihtamisen opas

STM32F103RCT6 guide cover using a real STMicroelectronics STM32F103 LQFP64 microcontroller photograph

STM32F103RBT6–RET6: Flash-muistin tiheyden vaihtamisen opas

STM32F103RCT6 sekä sen RBT6- ja RET6-sisarmallit käyttävät samaa 64-nastaista LQFP-koteloa ja samaa Cortex-M3-ydintä, minkä vuoksi tämän tuoteperheen flash-päivitystä pidetään usein suoraan yhteensopivana, vaikka se ei sitä ole. Nastayhteensopivuus on mekaaninen. Flash-muistin poistosivun koko, SRAM ja käynnistyslataimen omat oletukset eivät määräydy kotelon perusteella, ja ST:n oma ohjelmointikäsikirja dokumentoi eron suoraan.

1. Mikä oikeastaan muuttuu mallien RBT6, RCT6 ja RET6 välillä?

Kaikki kolme ovat STM32F103-suorituskykytuoteperheen mikro-ohjaimia, joiden perustana on sama 72 MHz Arm Cortex-M3 -ydin ja sama oheislaitteisto sekä sama LQFP64-kotelo, jonka runko on 10 × 10 × 1.4 mm. "F103":n jälkeinen kirjain ja numero ilmaisevat flash-muistin koon: RBT6:ssa on 128 Kbytes flash-muistia ja 20 Kbytes SRAM:ää, RCT6:ssä 256 Kbytes flash-muistia ja 48 Kbytes SRAM:ää, ja RET6:ssä 512 Kbytes flash-muistia sekä enintään 64 Kbytes SRAM:ää. Mikään piirin ominaisuus ei muuta nastojen määrää, nastajärjestystä tai ydinperiferialaitteita; vain sirulla olevan muistin määrä muuttuu.

Sama kotelo ja suurempi muisti tekevät tästä todellisen "kapasiteettipäivityksen" eivätkä toimittajien välisen korvaamisen. Piirilevyä ei tarvitse suunnitella uudelleen, uutta juotoskuviota ei tarvita eikä SWD- tai JTAG-debug-liitin muutu. Jäljelle jäävä työ on kokonaan ohjelmistossa: on varmistettava, ettei koonti, linkkerikomentosarja tai flash-ajuri ole olettanut pienemmän komponentin muistirakennetta.

ST:n oma korkean tiheyden datasivu (DS5792, joka kattaa 256–512 Kbyte-mallit) sekä keskitihentymän datasivu viittaavat samaan suorituskykytuoteperheen kuvaukseen, ja STM32F103x8/B-kaupallinen datasivu ilmoittaa tuoteperheen olevan suunniteltu täydelliseen nasta-, ohjelmisto- ja toiminnalliseen yhteensopivuuteen. Tämä lausunto koskee tuoteperheen suhdetta, eikä korvaa kohteena olevan komponentin tarkan muistialueen tarkistamista.

2. Onko nastajärjestys todella sama?

Mekaanisesti kyllä, tämän kolmen mallin osalta. RBT6, RCT6 ja RET6 ilmoittavat kaikki ST:n tilaustietosivuilla vaihtoehdoksi LQFP 64-, 10 × 10 × 1.4 mm-kotelon, jossa on 51 yleiskäyttöistä I/O-nastaa. Samoja osanumeroita on saatavana myös muissa koteloissa (esimerkiksi RBT6 lisää TFBGA64-vaihtoehdon), joten kotelopääte ja tarkka tilauskoodi on tarkistettava erikseen. Väite "sama nastamäärä" ei ole sama asia kuin käytössä olevan tilattavan komponentin varmennettu kotelosopivuus.

STM32F103RBT6, RCT6 and RET6 LQFP64 pinout showing identical pin assignment with only the flash and SRAM capacity changing between the three densities
Kuva 1. Alkuperäinen Chip-seek-nastakartta LQFP64-kotelolle, jota käyttävät RBT6, RCT6 ja RET6, perustuu ST-datasivujen nastataulukoihin. Kolmen mallin välillä eroaa vain muistikapasiteetti; nastojen nimet ja sijainnit eivät muutu.
Komponentti Flash-muisti SRAM Tiheysluokka LQFP64 saatavana
STM32F103RBT6 128 KB 20 KB Medium-density Yes
STM32F103RCT6 256 KB 48 KB High-density Yes
STM32F103RET6 512 KB 64 KB High-density Yes

Ennen kuin päätät piirilevyn uudelleensuunnittelusta kumpaankaan suuntaan, hae hankittavan tarkan tilauskoodin ajantasainen datasivun laitetaulukko. ST:n luettelo, kuten useimpien valmistajien, lisää tai poistaa tiettyjä kotelovaihtoehtoja osanumeroittain ajoittain, ja tilauskoodin pääte (tässä "T6" sekä mahdolliset lopussa olevat kotelo- tai lämpötilakirjaimet) määrittää, mitä jakelija tosiasiassa varastoi.

3. Miksi ST kutsuu näitä eri "tiheys"-luokiksi?

ST:n STM32F10xxx-viitekäsikirja (RM0008) ja flash-ohjelmointikäsikirja (PM0075) jakavat STM32F101/F102/F103-tuoteperheen matalan tiheyden (16–32 Kbytes flash-muistia), keskitihentymän (64–128 Kbytes), korkean tiheyden (256–512 Kbytes) ja XL-tiheyden luokkiin. RBT6 kuuluu keskitihentymään; RCT6 ja RET6 kuuluvat korkeaan tiheyteen. Tämä ei ole markkinointinimike: tiheysluokka määrittää sisäisen flash-muistiryhmän rakenteen, joka vaikuttaa ohjelmistoon.

Tarkemmin PM0075 ilmoittaa, että pääflash-muistilohko on järjestetty pienitiheyksisissä laitteissa 32-sivuksi, joiden koko on 1 Kbyte, keskitihentymän laitteissa 128-sivuksi, joiden koko on 1 Kbyte, ja korkean tiheyden laitteissa 256-sivuiksi, joiden koko on 2 Kbytes. Poistotarkkuus eli pienin lohko, jonka flash-ohjain voi poistaa yhdellä toiminnolla, liittyy tiheysluokkaan eikä nastayhteensopivaan tuoteperheeseen.

4. Mikä on flash-muistin poistosivu, ja miksi sen koolla on merkitystä?

Sirun flash-muistia ei voi ohjelmoida uudelleen tavu kerrallaan samalla tavalla kuin RAM:ta. Jotta aiemmin ohjelmoidut bitit voidaan muuttaa takaisin tilasta 0 tilaan 1, flash-ohjaimen on ensin tyhjennettävä kokonainen sivu, minkä jälkeen siihen voidaan ohjelmoida uudet tiedot. Sivu on siksi kaikkien kenttäpäivitysten atominen yksikkö, olipa kyse käynnistyslataimesta, joka kirjoittaa uuden sovelluskuvan, uudelleen kirjoitettavasta asetuskentästä tai uuden laiteohjelmistoversion valmistelevasta langattomasta päivityksestä.

Flash memory map comparison showing RBT6 organized as 128 pages of 1 Kbyte and RCT6/RET6 organized as larger pages of 2 Kbytes, from the STM32F10xxx flash programming manual
Kuva 2. Alkuperäinen Chip-seek-kaavio ST:n PM0075-ohjelmointikäsikirjassa kuvatusta flash-rakenteesta: keskitihentymän laitteissa sivu on 1 Kbyte ja korkean tiheyden laitteissa 2 Kbyte.

RBT6:n varaan rakennettu suunnittelu, joka tyhjentää flash-muistia 1 Kbyte-yksiköissä ja tallentaa kaksi toisistaan 1 Kbyte-etäisyydellä olevaa tietolohkoa, koska se oli kyseisellä komponentilla turvallinen poistoväli, perustuu keskitihentymän flash-muistiryhmän ominaisuuteen. Kun sama ohjelmisto siirretään malliin RCT6 ilman uutta tarkistusta, poistokomento tyhjentää nyt kerralla 2 Kbytes: toinen tietolohko, jonka ohjelmisto edelleen uskoo olevan erillään, sijaitsee juuri ensimmäisen kanssa tyhjennettävän sivun sisällä.

Tämä vikatila ei aluksi näytä flash-ongelmalta. Se ilmenee hiljaisesti palautuvina asetuksina, päivityksen jälkeen vioittuvana sovellusosiona tai OTA-kuvana, joka käynnistyy kerran mutta epäonnistuu seuraavan kirjoitussyklin jälkeen. Koska oire ilmenee käytön aikana eikä ohjelmoinnin aikana, ajoitusta, virransyöttöä tai keskeytyksiä tutkitaan helposti, ennen kuin todellinen syy eli sivukoko-oletus tarkistetaan.

5. Missä kovakoodattu sivukoko rikkoo käynnistyslataimen?

Diagram showing three places a firmware build encodes flash erase page size: linker script regions, the flash driver erase routine, and third-party OTA or settings storage libraries
Kuva 3. Alkuperäinen Chip-seek-kaavio kolmesta kohdasta, joissa tyypillinen STM32F103-laiteohjelmiston koonti koodaa oletuksen pyyhintäsivun koosta; jokainen niistä on tarkistettava, kun kohdekomponentin tiheysluokka vaihtuu.

Tyypillisessä laiteohjelmiston koonnissa oletus pyyhintäsivun koosta koodataan kolmessa kohdassa, ja kaikki kolme on tarkistettava siirryttäessä tiheysluokasta toiseen:

  1. Linkkerikomentosarjan flash-muistialueiden määrittelyt. Mukautettu käynnistyslataimen ja sovelluksen jako kohdistaa alueet usein kehityksen aikana käytetyn pyyhintäsivun rajan mukaan. Jos rajaksi valittiin 1 Kbyte komponentilla RBT6, alueet ovat edelleen kelvollisia osoitteita komponentilla RCT6, mutta ne eivät enää kohdistu kyseisen komponentin todelliseen 2 Kbyte-pyyhintärajaan, jolloin päivityksen aikana sovellus- ja käynnistyslataimen alueiden väliin voi jäädä osittaisia sivuja.
  2. Flash-muistin ajurin pyyhintärutiini. Sekä ST:n HAL että standardi oheislaitteistokirjasto tarjoavat flash-muistin pyyhintäfunktioita, jotka vastaanottavat sivuosoitteen, mutta tarvittavien pyyhintäkutsujen määrän tai seuraavan sivun aloituskohdan laskemiseen käytetty sivukokovakio määritellään joskus paikallisesti sovelluskoodissa sen sijaan, että se luettaisiin komponentin omasta muistirakenteesta.
  3. Mikä tahansa ulkopuolelta HAL:een tuotu OTA- tai asetustallennuskirjasto. Kolmannen osapuolen flash-muistiin perustuvat tallennuskirjastot käyttävät usein oletuksena määritettävää sivukokoa, joka on asetettava kohteen mukaan; 1 Kbyte-oletuksen jättäminen hiljaisesti voimaan, kun käytetään RCT6-piitä, aiheuttaa saman korruptioriskin ilman linkkeritasolla näkyvää oiretta.

Käytännön korjaus on kaikissa kolmessa tapauksessa sama: etsi koonnista jokainen pyyhintäsivun kokoon liittyvä viittaus, varmista, että se luetaan kohdekomponentin todellisesta muistirakenteesta tai että se vastaa sitä nykyisen datalehden ja PM0075:n perusteella, ja suorita koko pyyhintä-/ohjelmointi-/tarkistusjakso uudelleen edustavalla osoitealueella, ei vain alkuperäisen käyttöönoton aikana käytetyissä osoitteissa.

6. Mitä muuttuu flash-muistin lisäksi?

Bar chart comparing flash and SRAM capacity across STM32F103RBT6, RCT6 and RET6, showing SRAM growing proportionally faster than flash
Kuva 4. Alkuperäinen Chip-seek-kaavio, jossa verrataan kolmen komponentin flash- ja SRAM-kapasiteettia kunkin komponentin nykyisen ST-datalehden perusteella.

SRAM kasvaa flash-muistin tavoin, mutta suhteellinen kasvu on suurempi: 20 KB komponentissa RBT6 verrattuna 48 KB:een komponentissa RCT6 on yli kaksinkertainen, ja 64 KB komponentissa RET6 on yli kolminkertainen. Pienemmän komponentin RAM:n suhteen tiukaksi mitoitettu rakenne saa merkittävästi lisätilaa suuremmille puskureille, suuremmalle keolle tai lisätehtäville, kuten RTOS. Rakenteen, joka mitoitti RAM:n tarkasti komponentin RBT6 20 KB:lle, on tarkistettava, ovatko kiinteäkokoiset staattiset varaukset, pinokoot ja linkkerisymbolit edelleen järkeviä; siirtyminen komponenttiin, jossa on enemmän käytettävissä olevaa RAM:ta, ei edellytä kaiken sen käyttämistä, mutta kaikki koodi, joka laski osoitteita suhteessa kiinteään, pienempään RAM-kokoon, on tarkistettava samalla tavoin kuin flash-oletukset.

Ydin, kellopuu, GPIO-rakenne ja tiedonsiirron oheislaitteet (I2C, SPI, I2S, USART, USB, CAN) eivät muutu näiden kolmen komponentin välillä. Näiden oheislaitteiden sähköiset ominaisuudet, käyttöjännitealue ja ajoitus määräytyvät suorituskykylinjaperheen suunnittelusta, eivät muistikapasiteetista, joten oheislaitetason kelpuutusta ei tarvitse toistaa pelkästään flash-muistin päivityksen vuoksi.

7. Mitä on tarkistettava ennen komponentin päivittämistä?

Tämän perheen tiheysluokan päivitys on turvallinen, kun viisi asiaa on tarkistettu kohdekomponentin nykyisestä datalehdestä ja flash-ohjelmointioppaasta, eikä niitä ole oletettu pelkän nastayhteensopivuuden perusteella.

  1. Tilattava pakettikoodi. Varmista, että kohteen tiheysluokkaa vastaava tarkka LQFP64-tilauskoodi on ajan tasalla ja saatavilla aiotusta lähteestä; pakettivaihtoehdot voivat saman valmistajan eri tiheysalueilla poiketa toisistaan.
  2. Flash-muistin pyyhintäsivun koko. Varmista, olettaako käynnistyslatain, OTA-kirjasto tai asetustallennus kiinteän sivukoon, ja päivitä vakio vastaamaan kohdekomponentin tiheysluokkaa (1 Kbyte keskitiheyksisille, 2 Kbyte suuritiheyksisille komponenteille).
  3. Linkkerikomentosarjan alueiden kohdistus. Tarkista uudelleen, että sovellus- ja käynnistyslataimen alueet kohdistuvat uuteen pyyhintäsivun rajaan eivätkä vain kelvolliseen flash-osoitteeseen.
  4. RAM-suhteellinen osoitteistus. Tarkista kaikki koodi, joka laski puskurien sijainnit tai pinorajat tietyn SRAM-koon perusteella työkaluketjun linkkerisymbolien käytön sijaan.
  5. Täydellinen pyyhintä-/ohjelmointi-/tarkistustesti. Suorita koko päivityspolku, mukaan lukien keskeytyneen kirjoituksen simulointi, jos sovellus tukee vikasietoisia päivityksiä, ennen uuden komponentin hyväksymistä tuotantoon.

Dokumentoi, mitä tiettyä komponenttia (RBT6, RCT6 tai RET6) tietty laiteohjelmistokoonti tavoittelee, ja vältä yhden binääritiedoston toimittamista eri tiheysluokkien komponenteille ilman nimenomaista sivukokotarkistusta itse flash-ajurissa.

8. Onko ST-perheen ulkopuolella nastayhteensopivia vaihtoehtoja?

Muilta valmistajilta on saatavana STM32F103-yhteensopivia vaihtoehtoja, joita myydään yleensä vastaavien tiheysluokkien osalta samalla LQFP64-nastajärjestelyllä, aiemman tällä sivustolla olevan STM32F103C8T6-ristiviiteoppaan logiikan mukaisesti. Varoitus on tässä sama: nastayhteensopivuus on pakettia koskeva mekaaninen väite, eikä se yksin osoita samanlaista flash-ohjainta, samaa pyyhintäsivun kokoa tai samaa flash-ohjelmoinnin ajoitusta. Tarkista kyseisen valmistajan omasta ohjelmointioppaasta pyyhintäsivun koko ja flash-käyttöjakson asetukset, ennen kuin oletat toisen valmistajan komponentin toimivan laiteohjelmistotasolla kuten alkuperäinen ST.

9. Mitä hankintapyyntöön kuuluu?

Tiheysluokan päivitystä hankittaessa tarkasta kohdekomponentista nimetty pyyntö saa käyttökelpoisen vastauksen nopeammin kuin pyyntö, jossa ilmoitetaan vain flash-muistin koko. Toimittaja voi vahvistaa saatavuuden täydellisen tilauskoodin perusteella, mutta pelkkä "256 KB STM32F103" ei määritä pakettia, lämpötilaluokkaa tai tarkkaa jälkiliitettä.

Hyödyllisiä tietoja ovat täydellinen tilattava osanumero (paketti- ja lämpötilajälkiliitteineen), koontikohtainen määrä vuosivolyymeineen, se, ollaanko siirtymässä tietystä pienemmästä komponentista (ilmoita tarkka lähdeosanumero), sekä se, onko nykyisen laiteohjelmiston flash-pyyhintärutiini jo päivitetty kohteen tiheysluokkaa varten. Jos vain kohteen tiheys on tärkeä ja joko RCT6 tai RET6 sopii, ilmoita se; jos tarvitaan tietty RAM-koko, ilmoita se sen sijaan, että pyytäisit "suurinta saatavilla olevaa".

Tämän perheen ajantasaisen saatavuuden tarkistamiseksi hae STM32F103RCT6-luettelosta, STM32F103RBT6-luettelosta ja STM32F103RET6-luettelosta sivustolla chip-seek.com. Nämä sivut näyttävät reaaliaikaisia luettelotuloksia eivätkä lupaa varastotilannetta; vahvista määrä ja päivämääräkoodi tarjouksesta. Aiempi STM32F103C8T6-ristiviiteopas ja STM32F103CBT6-opas käsittelee saman perheen pienempiä LQFP48-jäseniä projekteihin, joissa ei ole vielä sitouduttu 64-nastaisen kotelon käyttöön. Monirivisen hankintapyynnön voi lähettää seuraavan kautta: BOM- ja RFQ-lomake.

Usein kysytyt kysymykset

Voinko käyttää samaa laiteohjelmistobinaaria kohteissa RBT6 ja RCT6 ilman muutoksia? Vain jos laiteohjelmisto lukee flash-muistin rakenteen suoraan komponentin omista määrittelyistä eikä määritä sivukokoa kiinteästi. Useimmat yhdelle kohteelle kirjoitetut käyttöönotto-ohjelmistot määrittävät sen kiinteästi, joten tarkista flash-ajuri ja linkkerin komentosarja ennen binaarin uudelleenkäyttöä.

Onko LQFP64-jalanjälki todella sama kohteissa RBT6, RCT6 ja RET6? Kyllä, kussakin komponentissa ilmoitetun nykyisen ST-tilaustiedon mukaisessa LQFP 64-, 10 × 10 × 1.4 mm -kotelossa. Vahvista kohdekomponentin tarkka tilattava tuotekoodi, sillä kotelon saatavuus voi muuttua tuotteen elinkaaren aikana.

Mitä medium-density ja high-density tarkoittavat ST:n terminologiassa? Kyseessä on ST:n RM0008-viitekäsikirjassa määritelty flash-kapasiteettiluokka: medium-density kattaa 64–128 Kbyte flash-muistia, high-density 256–512 Kbyte. Luokka määrittää flash-muistiryhmän sisäisen rakenteen, mukaan lukien tyhjennyssivun koon.

Edellyttääkö suurempi SRAM itsessään muutoksia laiteohjelmistoon? Ei. Käyttämätöntä RAM:ta ei tarvitse käyttää. Tarkistus on tarpeen vain koodille, joka laskee osoitteita tai rajoja pienemmän komponentin kiinteän RAM-koon perusteella sen sijaan, että käyttäisi linkkerin tarjoamia symboleja.

Muuttuvatko ADC-, ajastin-, USB- ja CAN-oheislaitteet näiden kolmen komponentin välillä? Eivät. Ydinoheislaitteisto, sähköiset ominaisuudet ja kellopuu määräytyvät performance-line-perheen rakenteen mukaan eivätkä muutu tämän kolmikon muistitiheyden mukana.

Mitä tapahtuu, jos tyhjennyssivun koko on väärä tuotantolaitteisto-ohjelmistossa? Saman fyysisen tyhjennyssivun sisällä olevat viereiset tiedot voidaan tyhjentää tahattomasti yhden alueen tyhjennyksen yhteydessä. Tämä näkyy yleensä vioittuneina asetuksina tai epäonnistuneena päivityksenä, ei välittömänä ohjelmointivirheenä.

Lähteet

Tarvitsetko apua oikean tiheyden hankintaan?

Lähetä lähdekomponentin osanumero (jos siirryt pienemmästä tiheydestä), kohteen flash-koko ja tarkka kotelon jälkiliite. Pyydä vahvistetut määrät, erä-/päiväyskoodi ja varaston omistajuus ennen hyväksyntää. Tämä opas ei ole tarkistanut ajantasaista varastotilannetta; pelkät luettelotulokset eivät osoita omaa varastoa tai laiteohjelmiston yhteensopivuutta.

Hae reaaliaikaisesta varastostaLähetä RFQ

Työskenteletkö sen sijaan 48-nastaisen perheen kanssa? Tämä STM32F103C8T6-ristiviiteopas käsittelee pienempää LQFP48-koteloa.

Check stock by part number

Turn this insight into a sourcing decision.

Need pricing or a drop-in alternative? Submit a BOM / RFQ or talk to our team.