STM32F1xx vlastn bootloader

milger milger na pobox.sk
Pátek Květen 16 20:03:43 CEST 2014


Mam nieco podobne vyriesene pre LPC2368. STM32F1xx nepoznam, ale 
predpokladam ARM ako ARM.
Koli motivacii kratko popisem + par poznamok zo SRC:

Je tam celkom problem s roznymi privilegovanymi rezimami procesora 
(napr. SW reset sa neda urobit z app. skokom na adresu 0).
Vyuzivam HW wdog na SW reset a HW detekciu 1.startu po zapnuti 
napajania. Po zapnuti napajania sa aktivuje loader, robi sa pripadny 
upgrade alebo sa hlada spustitelny SW a jeho adresa sa ulozi do RAM.  Po 
resete (HW, SW) sa uz iba odskoci vo vsetkych vektoroch prerusenia na 
spustitelny SW na adresu z RAM, je to rychle a nenarocne, iba zo 5 
instrukcii navyse.
Samozrejme to je chovanie ktore som potreboval ja, loader sa moze napr. 
aktivovat po kazdom resete a upgrade nemusi hladat v internej FLASH ale 
priamo cez USB...

/*    - Loader potrebuje 8B na kazdom STACKu, aj v beziacej aplikacii 
/SW/                                           */
/*    - Loader zaberie 4B na adrese ETHERNET RAM 0x7FE00000 (adresa 
platneho SW    pri resete)              */
/*                                                                 */
/*  - SW musi byt kompilovany medzi 0x00008000 a 0x0003FFFF     */
/*  - SW musi mat standardne vektory prerusenia                     */
/*  - SW musi mat kazdy STACK vecsi o 8B pre potreby loaderu */
/*  - SW nesmie pouzivat pamat RAM na 0x7FE00000-0x7FE00003             
     */
/*  - SW musi mat moznost zapisat upgrade do FLASH od bloku 15 a zapisat 
dlzku a CRC do bloku 22    */
/*                                                                 */
/*    - Upgrade musi byt ulozeny od bloku 15 FLASH (0x00040000)         */
/*  - Upgrade musi mat na adrese 0x00040000-0x00041000 ako prvu tabulka 
vektorov preruseni                */
/*    -    Upgrade musi obsahovat v bloku 22 FLASH na adrese 0x0007D000 
dlzku     */
/*    -    Upgrade musi obsahovat v bloku 22 FLASH na adrese 0x0007D004 
kontrolny sucet (U8 += U8)            */
/*                                             */
/*  - Loader po beznom resete okrem zapnutia napajania, spusti SW na 
ktory ukazuje RAM 0x7FE00000 */
/*  - Ak loader po zapnuti napajania najde upgrade, kopiruje ho do FLASH 
od 0x00008000 a spusti        */
/*    - Ak loader po zapnuti napajania nenajde upgrade, hlada vektory 
prerusenia ako prve na adrese    */
/*      FLASH 0x00008000-0x00008FFF, ulozi ich adresu do RAM 
(0x7FE00000) a spusti program resetom    (wDog)  */
/*    - Ak loader po zapnuti napajania nenajde ani vektory prerusenia 
ani upgrade,                                    */
/*      zastane v nekonecnej slucke a system sa definitivne posral     
     */
/*                                                                 */
/*    - Loader po zapnuti napajania signalizuje aktivaciu, 1s. rychlo 
blika ledkov                                    */
/*    - Loader pocas hladania upgrade, palenia upgrade a hladania SW 
trvalo svieti ledkov                        */
/*    - Loader po najdeni a uspesnom napaleni upgrade 1s. blika 
rychlejsie ako po zapnuti napajania    */
/*    - Loader po zisteni ze nema spravny SW na spustenie, trvalo blika 
ledkov kratkymi zableskami    */
/*    - Loader po beznom resete pokial ma spravny SW na spustenie 
nesignalizuje ledkov nic                    */
/*                                                                 */
/**************************************************************************************************/



On 16. 5. 2014 19:36, Jaroslav Buchta wrote:
> Neresil nekdo? Nejak me nenapada, jak to udelat, aby v procesoru 
> vzdycky zustal funkcni zavadec. Vektory predpokladam presmerovat 
> nejdou a nezbyva, nez program ukladat od adresy 0, cili pokud to selze 
> je to v pytli. Na tohle jsou dobre AVR.
> Na jedne desce jsem k tomuto ucelu pouzil dalsi ATMEGA8, ktery tam 
> nasype program z UART nebo externi FLASH, ale to je ponekud 
> tezkopadne. Melo by to byt ovladatelne pouze pres USB procesoru, asi v 
> rezimu VCP.
>
> ---
> This email is free from viruses and malware because avast! Antivirus 
> protection is active.
> http://www.avast.com
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list