Jump to content
Sign in to follow this  
dan_e

Totul despre "bootloader" ?!

Recommended Posts

Am cautat pe net diverse informatii despre folosirea unui mic program in memoria flash a unui MCU Atmega, care poate ajuta la protectia datelor scrise ulterior in MCU. Spre exemplu, cu un asemenea minisoft denumit bootloader se poate realiza pe PC o interfata (un alt soft) cu ajutorul caruia sa scrie un program intr-un alt limbaj de programare ca ulterior sa-l incarcam in MCU? Sau, ce anume se poate face cu acest bootloader? Am citit ca platforma Arduino are asa ceva. De ce?

 

intreb lucrurile astea pentru ca altfel inteleg de la cineva care imi explica in lb romana treburile astea.

 

cu stima,

dan 

Share this post


Link to post
Share on other sites

Nu e vorba despre protectia datelor, asta se poate realiza activand un fusebit. Bootloader-ul este un soft care practic pune uC-ul sa se autoprogrameze folosind un canal de comunicatii implementat (USB, COM, ETHERNET, etc.). De asemena poate ajuta la debug-ul unui program. Bootloaderul ruleaza doar in uC si de obicei vine cu platforma de dezvoltare (ex. Arduino). Dupa teste, programul se pune direct in controler folosind un programator extern, asta pentru ca bootloaderul ocupa si el memorie si introduce unele intarzieri in pornirea softului propriuzis.

Share this post


Link to post
Share on other sites

Booloader-ul are simpla functie de a incarca programul executabil dintr- un tip de memorie in altul (de obicei de pe un mediu extern, disk, memory card, NAS etc) in locul unde se va executa, RAM sau Flash, Cache etc. Dupa incarcare preda controlul executiei codului proaspat incarcat.

Unele boot-loadere fac mai mute lucruri, programeaza interfete, accepta parmetrii care pot controla incarcare si executia si parmetrii pentru programarea interfetelor (adrese IP, baud rate etc.)

In cazul microcontrolerelor bootloader-ul are si functia de a programa memoria flash (destinatie)  nefiind nevoie de un programator. Unele microcontolere au bootloader din fabricatie in memorie ROM

unul din bootloader-ele mai populare de la Arduino e "optiboot" care e facut dupa unul mai vechi facut de atmel pentru o placa a lor de dezvoltare (stk500) - avrdude (un program de PC pentru a trimite fisierul hex in formatul acceptat de bootloader) stie sa comunice cu optiboot.

RR

Edited by roadrunner

Share this post


Link to post
Share on other sites

Multumesc pentru raspunsuri.

 

Am inteles ca transfera programul de pe memoria unui card in flash-u MCU dar nu am inteles cum stie bootloader-ul sa seteze fusebiti ?

Eu din ce am inteles, pe card se scrie fisierul hex. Cardul se conecteaza la MCU printr-o conexiune uzuala iar apoi, bootloader-ul din MCU vede hex-ul si il scrie in flash-ul MCU dar cum seteaza fusebiti? Trebuie sa-i setez tot eu prin interfata ISP inainte de a scrie MCU-ul. Sau treaba asta cu bootloader-ul e buna numai in cazul in care vreau sa actualizez flash-ul MCU !!!!!!

 

Cu stima,

dan 

Edited by dan_e

Share this post


Link to post
Share on other sites

fuse biti sunt setati cand "arzi" bootloader-ul, mai mult protejezi (setand corect fuse-biti) regiunea de flash in care e scris bottloader-ul (ca sa nu poate fi sters de el insusi in caz ca receptioneaza un hex gresit)

ai nevoie de un programator sau ISP numai odata la inceput dupa care poti acualiza softul folosindu-te de bootloader.

RR

  • Like 1

Share this post


Link to post
Share on other sites

Acum am inteles care e treaba.

 

Exista bootloadere universale sau trebuiesc personalizate? Si daca sunt universale, de unde le pot descarca ? Cat la suta din memoria flash MCU ocupa un bootloader ?

Share this post


Link to post
Share on other sites

nu exista booloadere universale pentru ca depind de hardware, in general ocupa 1K-2K la microcontrolere mici (mici adica cu falsh 8K-256K) dar si unele mai maride exemplu 16K-128K  la procesoarele ARM care incarca soft-ul (sau OS-ul) in RAM si-l ruleaza acolo. Un exemplu de bootloader mai mare si popular este U-boot (folosit la ARM, MIPS, PowerPC, Atom, Quark)

RR

 

PS - la procesoarele mai mari de cele mai multe ori sunt doua booloadere unul primar (fsbl - firt stage boot loader) care se ocupa de setarea procesorului, clock-uri, intreruperi, interfete) urmat de un bootloader secundar de obicei U-boot. Practic FSBL e dependent de arhitectura hardware iar U-boot e independent (u-boot lucreaza cu interete standard deja pregatite de catre FSBL)

Edited by roadrunner

Share this post


Link to post
Share on other sites

Multumesc inca o data dar pe mine ma interesa in mod special un bootloader pentru PIC-uri si Atmega de 8bit? 

Share this post


Link to post
Share on other sites

la atmel pe website sunt cateva AN (aplication note) care vorbesc despre bootloadere (presupun ca la fel si la MIcrochip) - in directorul ..\Arduino\hardware\arduino\avr\bootloaders\ sunt cateva bootloadere diferite si compatibile cu IDE-ul de la arduino (si cu avrdude)

Succes la citit,

RR

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.