nico_2010 Posted July 14, 2020 Share Posted July 14, 2020 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". Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 14, 2020 Author Share Posted July 14, 2020 Ok. Azi trebuie sa ajunga programatorul. Va tin la curent. Spor Quote Link to comment Share on other sites More sharing options...
core Posted July 14, 2020 Share Posted July 14, 2020 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. Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 14, 2020 Author Share Posted July 14, 2020 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. Quote Link to comment Share on other sites More sharing options...
nico_2010 Posted July 15, 2020 Share Posted July 15, 2020 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? Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 18, 2020 Author Share Posted July 18, 2020 (edited) 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 July 18, 2020 by Cilibiu Quote Link to comment Share on other sites More sharing options...
q_acdc Posted July 18, 2020 Share Posted July 18, 2020 Sigur ai copiat softul in intregime? (ma refer la cube programmer, size) Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 18, 2020 Author Share Posted July 18, 2020 (edited) 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? Edited July 18, 2020 by Cilibiu Quote Link to comment Share on other sites More sharing options...
q_acdc Posted July 18, 2020 Share Posted July 18, 2020 (edited) 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 July 18, 2020 by q_acdc Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 18, 2020 Author Share Posted July 18, 2020 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. Quote Link to comment Share on other sites More sharing options...
core Posted July 19, 2020 Share Posted July 19, 2020 Poate FW de 101 are o protective bazata pe serial number. Producatorul stie ce id are chip-ul care ti l-a vandut si iti da un FW customizat pentru tine. Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 19, 2020 Author Share Posted July 19, 2020 Nu are protectie. Am un BL si FW care nu este de la placa cu pricina si daca il scriu pe acela , uC-ul functioneaza perfect, doar ca comenzile sunt inversate. Quote Link to comment Share on other sites More sharing options...
nico_2010 Posted July 20, 2020 Share Posted July 20, 2020 In cazul asta cere producatorului FW adecvat placii tale! Altceva nu poti face. Quote Link to comment Share on other sites More sharing options...
Cilibiu Posted July 20, 2020 Author Share Posted July 20, 2020 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. Quote Link to comment Share on other sites More sharing options...
nico_2010 Posted July 20, 2020 Share Posted July 20, 2020 (edited) 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 July 20, 2020 by nico_2010 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.