Jump to content
ELFORUM - Forumul electronistilor

Programare stm32f429igt6 ARM.


Cilibiu
 Share

Recommended Posts

Bootloader-ul integrat prezent in uC STM32 este scris in ROM la facerea microcontroller-ului si nu poate fi modificat.

Activarea acestui bootloader (care permite incarcarea firmware-lui si/sau a unui bootloader) se face functie de tipul de microcontroller  (ex: conform AN2606, pentru STM32F429 se foloseste "pattern 5"). Mai pe scurt, pinul BOOT0 se pune in "1" logic si BOOT1, in "0" logic pentru a programa intreaga memorie FLASH si se conecteaza fie un dispozitiv RS232-TTL la UART1, fie se foloseste programatorul ST_link v2 si se scrie fisierul in microcontroller.

Atentie la bitii optionali de securitate! Setarea RDP cu valoarea 0xCC DUCE DIRECT IN NIVELUL DE PROTECTIE 2, CARE ESTE IREVERSIBIL SI BLOCHEAZA COMPLET uC, FARA POSIBILITATEA DE REPROGRAMARE ULTERIOARA!

@Cilibiu: fie incarci bootloaderul furnizat si te lamuresti cum trebuie actionat ulterior pentru a face update de firmware, fie incarci firmware-ul (daca zici ca contine si bootloaderul) si din softul de programare selectezi functia "RESET and RUN after programming".

Link to comment
Share on other sites

  • Replies 40
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Acum 22 ore, Cilibiu a spus:

Eu am incercat un firmware update si nu functiona corespunzator programul, ulterior am primit fisierele bootloader.hex si firmware.hex.

Acum sa vad daca bag firmware.hex rescrie si bootloader-ul, din ce stiu eu bootloader-ul este deja prezent in firmware.

Daca au bootloader custom made, ai doua posibilitati de update:

1. prin aplicatia companion pereche bootloaderul lor, operatie care este in general safe, operatie care nu se face pe pinii swd de programare, ci pe alti pini, in general o seriala este folosita, vezi ce conectori de interfata ai pe placa. In acest caz scrii doar FW

2. prin programator standard, gen st-link utility, insa trebuie grija cum faci scrierea hex-ului, operatia fiind cu un grad mai mare de a strica software. Aici ai alte doua cazuri:

a) scrii atat BL-ul cat si FW-ul, prima data dai full erase cip, apoi scrii BL, apoi scrii FW, sau invers, dar atetie, la ultima scriere sa nu ai bifa de stergere blocuri flash. In general BL si FW nu se suprapun peste aceleasi blocuri, si este necesar doar o stergere si doua scrieri. O alta posibilitate e sa combini cele doua hex-uri, intr-unul singur,  si sa scrii o singura data.

b) scrii doar unul din hex-uri, dar trebuie sa verifici hex-ul sa nu contina adrese in afara blocurilor cu care lucreaza, altfel risti sa stergi si BL daca scrii doar FW, sau invers.

Link to comment
Share on other sites

A sosit programatorul. M-am conectat la uc si pot citi si scrie.

Cum pot citi doar BL si sa il salvez separat si cum salvez FW sa il salvez separat?

Ma jos cu un integrat functional. Citesc ceva din el, salvez, sterg, dupa scriere imi porneste BL dar imi cere FW update.

Nu am reusit sa am salvate si BL si FW ca sa le pot scrie sa functioneze fara update.

 

Link to comment
Share on other sites

Posteaza o imagine cu mesajul transmis de bootloader. Ai un software dedicat pentru lucrul cu bootloader-ul? Este afisat pe un ecran? Ai posibilitatea de a accesa un card de memorie, un stick USB sau PC-ul? Ai vreo informatie cu privire la modul in care se face firmware update?

Link to comment
Share on other sites

Am reusit sa salvez intregul program BL+FW. Daca pun pe alt uC merge. Asta valabil pentru stm32f429, daca incerc sa fac acelasi lucru pentru stm32f101 64k nu merge.

Deci am extras programul din F101, am identificat BL si FW, daca scriu din nou programul in uC dupa restart ramane numai BL si nu functioneaza deloc uC.

Am separat BL de FW, introduc BL dupa care scriu FW, uC functioneaza pana la primul restart, dau restart si FW dispare ramane doar BL.

Nu mai inteleg nimic, am analizat tot, nu gasesc unde este problema.

Daca las BL si folosesc softul de update FW pentru uC f101 merge si ramane scria FW.

Ca programe folosesc Cube programer si St-link.

Edited by Cilibiu
Link to comment
Share on other sites

Eu asa cred. Prima oara am dat start adress de la 0x00000000 la 0x00010000 ca sa vad unde sunt scrise datele, dupa care am schimbat adresa pe undeva la 0x00009a10 ca dupa adresa asta aveam scris doar FF.

Am facut exact aceasi metoda ca la 32f429, doar ca sterge FW dupa restart, daca bag tot programul nu porneste deloc uC, si cand verific ramane doar BL.

Ce ai nevoie sa imi confirmi daca am setat ok adresele?

20200718_123947.jpg

20200718_124009.jpg

20200718_124022.jpg

20200718_124047.jpg

Edited by Cilibiu
Link to comment
Share on other sites

Incearca sa copiezi softul de pe o placa functionala (cu st link) Am patit ceva asemanator cand l_am pus la treaba. @Nico_2010,referitor la rs232-ttl am renuntat deoarece necesita timp. (jtag-ul executa operatia in cateva secunde) 

Edited by q_acdc
Link to comment
Share on other sites

Pai asta si fac, am o placa functionala cu tot cu soft de update, si vrea sa copiez programele din 2 32f429 si 1 32f101 de placa functionala pe cealalata placa, la 32d429 totul functioneaza cum trebuie, insa la 32f101 apare problema asta, am o versiune de soft primita de la producator BL separat si FW separat, daca le incarc pe astea merg , doar ca nu este compatibila cu denumirea butoanelor, insa cand incerc sa fac varianta care vreau eu nu functioneaza corect.

 

Link to comment
Share on other sites

Producatorul a furnizat un soft de update dedicat placi mele, eu vreau sa sparg programul uC-ului in BL si FW, asta o fac ca sa prind experienta. 

Deci ca sa ma fac mai bine inteles.

2 placi cu uC stm32f101 identic din punct de vedere schema electronica.

Prima are V0.1

A doua are V1.1

Prima are soft automat de update.

A doua nu are soft de update.

Prima are ca exemplu 4 butoane, LOAD, PRELOAD,ADJUST,CONTROL

A doua are ca exemplu aceleasi 4 butoane dar cu alte functi, CONTROL,INCR,DECR,ACTIV.

La prima varianta am scos programul din ea si am incercat sa il sparg in BL si FW >>> rezultatul este ca dupa ce scriu FW merge pana la primul restart dupa care se sterge FW.

La a doua varianta am BL extras din uC si FW oferit de producator, introduc BL dupa care scriu FW >>>>functioneaza corect.

La prima am pus BL de la a doua varianta, am rescris FW de la a doua varianta >>>>>functioneaza corect (dar cu alte functi la butoane)

La prima varianta am incercat sa bag si tot programul din uC , nu functioneaza uC iar dupa restrat are doar BL.

 

 

 

Link to comment
Share on other sites

In imaginile postate care este versiunea? V0.1 sau V1.1.?

Posteaza imagini cu Cube Programmer dupa ce ai incarcat in memorie V0.1.

Pentru mai multa claritate a imaginii foloseste Snapshot (de aici: https://snapshot.en.softonic.com)

 

L.E. In imagini ai doua zone de memorie folosite:

1: de la 0x8000000 la 0x80035CC --> cred ca este bootloader-ul;

2: de la 0x8004000 la 0x8009A00 --> aplicatia in sine

Nu stiu care este versiunea!

Edited by nico_2010
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share




×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines