STM32 bootloader

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

STM32 bootloader

Inlägg av Rick81 »

Jag håller på med en STM32 bootloader där tanken är att använda ST inbyggda bootloader för att ladda in min bootloader och sedan använda min bootloader till att ladda in applikationsprogramvaran.


Jag använder Coocox IDE och GCC 4.8.2 (inte helt säker på versionen då jag sitter vid en annan dator nu).

Defaultaddressen när man använder ST bootloader är 0x08000000

Jag har tänkt lägga upp adressen på följande vis:
* Bootloader 0x08000000 - 0x08005000, dvs 20 kB reserverade för bootloader
* Applikation 0x08005000 och uppåt (beroende på STM32 variant)

Nu till mina frågor:
* Kan jag lägga flashaddressena på detta visa eller måsta jag göra någon memory remapping från 0x08000000 till 0x08005000 innan hopp till applikationen (eller i applikationen)?
* Hur det blir interrupt vektorer när man lägger applikationnen på address 0x08005000? Kommer detta "lösa sig självt" med GCC eller måste jag göra någon specialare
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: STM32 bootloader

Inlägg av Micke_s »

Ändra i irom1 på applikationsproj så lär det funka rakt av i coocox.

Den inbyggda bootloadern i stm kommer du åt med bootpinnarna. När du startar i vanligt läge så kommer den starta ditt program/din bootloader i flashen. Då är den inbyggda inte inblandad.

Varför skriver du en egen bootloader?
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: STM32 bootloader

Inlägg av Rick81 »

Jag skriver en egen bootlooder helt enkelt för att ST inte stödjer det interface jag behöver.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: STM32 bootloader

Inlägg av blueint »

Vilket gränssnitt behöver du?
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: STM32 bootloader

Inlägg av Korken »

De Flash adresser du valt nu kommer inte fungera.
Du måste aligna med dess interna "pages" vilket är på 32kB bland de första sen blir de större.

Detta står dock i deras flash programing appnote.

När det gäller flash offset för vektortabellen så ska applikationen göra det.
Applikationen måste vara kompilerad för att inte ta upp flashet som bootloadern ligger i annars stämmer inte adresser.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: STM32 bootloader

Inlägg av Micke_s »

Korken: måste behöver man inte, blir bara mycket enklare att kunna radera hela sektorn utan behöva hantera delar av innehållet....
Men jag håller med att det är mycket rekommenderat att lägga koden så den ligger efter flash-bankerna
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: STM32 bootloader

Inlägg av Korken »

Måste va kanske ett lite starkt ord. ;)
Kan säga det som extremt mycket rekommenderat istället. :)
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: STM32 bootloader

Inlägg av Korken »

Lite kvällsläsning. :)

Flash programming manual för STM32F40xxx och STM32F41xxx:
http://www.st.com/st-web-ui/static/acti ... 023388.pdf

Flash programming manual för STM32F10xxx:
http://www.st.com/st-web-ui/static/acti ... 283419.pdf
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: STM32 bootloader

Inlägg av Rick81 »

Jag behöver GSM interface, dvs GPRS via UART för programmering.

Vad gäller adresserna så har de STM32F1 jag använder en page på 1 kB dvs det bör gå att ha 20 kB som bootloader. Man raderar alltså en 1kB page i taget.

Micke_S:
Jag har ändrat i memory.ld till
MEMORY
{
/*rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x00010000*/ /* Ingen boot loader*/
rom (rx) : ORIGIN = 0x08005000, LENGTH = 0x0000B000 /* Boot loader */
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00005000
}
men hex filen säger fortfarande address 0x08000000

Var hitta jag irom1 i Coocox?
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: STM32 bootloader

Inlägg av Rick81 »

Hittade det
Man höger klickar på projektet, väljer Configuration och sedan Link. Där kan man välja start och size på IROM1. Nu definerar hexfilen rätt startaddress!
sc3
Inlägg: 179
Blev medlem: 10 januari 2011, 11:05:40
Ort: Umeå

Re: STM32 bootloader

Inlägg av sc3 »

Rick81 skrev:Jag behöver GSM interface, dvs GPRS via UART för programmering.
Låter spännande! Berätta gärna mer om projektet om det är möjligt.
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: STM32 bootloader

Inlägg av Rick81 »

Tror jag fått ordning på programmeringen nu (visserligen kör jag bara UART nu, inte GSM) och de addresser och checksummor jag kollat stämmer mot STs bootloader.

Desssvärre får jag att stm32 kraschar när den hoppar till applikationen oavsett om jag använder ST eller min bootloader.

När jag gjorde en bootloader till en STR912 hade jag också problem med hopp från bootloader till applikationen. Har för mig att hoppet var tvunget att göras i 16 MHz och inte 96 MHz. Någon som vet om det finns nåt liknande begränsning för STM32?
Skriv svar