Introducerea fișierelor în firmware

Am scris deja despre metoda de adăugare a fișierelor externe la firmware-ul microcontrolerului, chiar am scris un convertor online al fișierului binar în acest scop în c-header. Cu toate acestea, există o modalitate mai simplă și mai convenabilă pe care IAR o oferă și, strict vorbind, orice linker trebuie să poată face acest lucru.

Desigur, ați înțeles deja - vom intra în parametrii linkerului.

Una dintre sarcinile mele cele mai frecvente în ultimul timp este asamblarea firmware-ului dispozitivului principal în care se compilează firmware-ul fiicei de bord. Dispozitivul principal verifică la început versiunea firmware a plăcii suplimentare, iar dacă este mai mică - actualizează-o la proaspăt. Prin urmare, trebuie să includ un fișier binar cu un firmware copil în firmware-ul principal.

Deschideți fereastra Options -> Linker -> Input:

Introducerea fișierelor în firmware

Mai jos vedem opțiunile "Imagine binară brut". Acesta este exact ceea ce avem nevoie, specificăm fișierul.

Ce înseamnă celelalte opțiuni?

  • Simbolul este un simbol global al codului, acesta este numele care va fi atribuit unui matrice cu conținutul fișierului. Am scris aici batp_fw, pentru că acesta este firmware-ul boardului BATP.
  • Secțiune - secțiune a linkerului în care va fi plasat fișierul. Vom scrie aici "fw_section", dar va fi necesar să creați și să plasați această secțiune.
  • Aliniați - aliniați marginea octeților, jumătate de cuvinte sau cuvinte. De obicei am pus aici 4 (aliniați la limita cuvintelor).

Specificați numele simbolului în caseta "Păstrați simbolurile", altfel simbolul (și întreaga matrice) vor fi aruncate de linker în timpul montării.

Introducerea fișierelor în firmware

Salvați modificările și mergeți la editarea scriptului de link-uri. Se află în dosarul proiectului, ceva de genul stm32f4xx_flash.icf.

Am adăugat o linie

Introducerea fișierelor în firmware

Introducerea fișierelor în firmware

Cireșele de pe tort, utilizarea acestei bucăți de memorie, ca o matrice în program - este foarte ... nu, este extrem de simplu!

Desigur, tipul de date poate fi orice convenabil pentru tine. Dacă doriți să accesați byte-byte - utilizați caracterul char sau mai bine uint8_t, doriți să accelerați citirea - vă rugăm să o adresați prin unsigned int sau better uint32_t.

Cu toate acestea, această metodă permite includerea unui singur fișier, dacă trebuie să activați mai mult de unul, va trebui să editați manual linia de comandă a linkerului.

Articole similare