Küsimus:
Kuidas alglaadurit põletada?
The Guy with The Hat
2014-02-27 04:09:57 UTC
view on stackexchange narkive permalink

Mulle tehti ülesandeks "kirjutada alglaadur" oma Arduinole, et parandada viga, mille sain. Kuidas ma seda teha saan? (Ja mis täpselt on alglaadur?)

Bootloaderi arduinosse kirjutamine on üsna lihtne, kui järgite õigeid samme. See video võib teid aidata: [YouTube - kuidas alglaadurit põletada ATMEGA328P-AU-le (SMD) | Omatehtud ARDUINO MINI] (https://youtu.be/mIq3ZsKPlTo)
Kaks vastused:
#1
+18
The Guy with The Hat
2014-02-27 04:09:57 UTC
view on stackexchange narkive permalink

Alglaadur on väike programm, mis on (peaaegu) alati Arduinol. See haldab teie tehtud visandite üleslaadimist ja käivitamist ning vilgutab nupu 13 valgusdioodi alati, kui tahvel lähtestatakse.


Alglaaduri põletamiseks tehke järgmist.

  1. Hankige AVR ISP, USBtinyISP, ParallelProgrammer või mõni muu Arduino tahvel. See on teie Interneti-teenuse pakkuja.
  2. Kui pole teisiti öeldud, ühendage Interneti-teenuse pakkuja oma plaadi ICSP-tihvtidega.
  3. Toitke oma plaati kas USB-kaabli või välise toiteallikaga.
  4. Avage Arduino IDE.
  5. Veenduge, et valisite IDE-s Tööriistad ► Laud ► õige tahvli, kuhu põletate. Kontrollige seda veel kord, isegi kui saate programme õigesti üles laadida; üleslaadimine ei nõua alati õiget tahvlit.
  6. Valige sobiv programmeerija menüüst Tööriistad ► Programmeerija ► .
  7. Klõpsake Tööriistad ► Burn Bootloader ja oodake. See ei tohiks võtta rohkem kui minut ja see võtab sageli vaid paar sekundit.

Allikad:

AVRISP on sel hetkel üsna EOL (elu lõpp). Minimaalselt soovite AVRISPmk2. Samuti on palju muid väljamõeldud tööriistu (näiteks AVR One!). Tõenäoliselt peaksite lihtsalt ütlema "{line 1} või mõni muu spetsiaalne Interneti-teenuse pakkuja programmeerija."
Sellistel tahvlitel nagu Arduino Yun, põletate iga kord, kui laadite üles wifi kaudu, alglaadija, mis on ühendatud teie visandiga. Seda tänu asjaolule, et Linuxi protsessor on SPI kaudu ühendatud AVR MCU-ga, nii et saate tarkvara abil Interneti-teenuse pakkujat jäljendada.
@FedericoFissore - kas sellepärast võtab see nii kaua aega?
Jah, see ja asjaolu, et GPIO bitbanging on aeglasem. Selle kiirendamiseks tehakse pidevalt jõupingutusi.
#2
+9
Nick Gammon
2015-07-21 02:11:40 UTC
view on stackexchange narkive permalink

Mis on alglaadur?

Ja mis on alglaadur?

Alglaadur on väike kooditükk, mis asub programmimälu "kõrge" osas. Uute visandite üleslaadimisel seda tavaliselt ei kustutata. Selle eesmärk on aktiveerida kohe pärast lähtestamist (kaitsmed on konfigureeritud alustama koodi alglaadija aadressilt, mitte aadressilt 0x0000). Alglaadur ootab lühikese aja (näiteks ühe sekundi), et näha, kas jadaporti saabub "programmeerimise" andmeid.

  • Kui jah, siis loeb ta neid andmeid ja dekodeerib see ülejäänud välkmälu ümber programmeerimiseks. Töötades koos üleslaadimisprogrammiga (tavaliselt avrdude), saadetakse uus visand jadapordi kaudu. Alglaadija kustutab välkmälu lehed ja asendab need uue koodiga. Kui see on valmis, käivitab see uue koodi.

  • Kui juhiseid ei saabu, hüppab alglaadur aadressile 0x0000, et käivitada laual olemasolev visand.


Kuidas alglaadurit asendada

Alternatiivne meetod alglaaduri programmeerimiseks on kasutada mõni aeg tagasi kirjutatud visandit, mis töötab järgmiselt:

  • Uno (või sarnane, näiteks Duemilanove)
  • Leonardo
  • Mega2560

"Programmeerimis" tahvel käivitab visandi, mis on alglaadurid paljude tahvlite jaoks kõvasti kodeeritud. Ühendate programmeerimisplaadi sihtplaadiga (alglaadurit sooviva tahvliga) 6 kinnitusjuhtmega, nagu näidatud.

Bootloader programmer for Uno

See konkreetne foto illustreerib üht Uno programmeerimist teist üks.

Käivitate visandi (käskude andmiseks töötate seerianumbriga). Kõigepealt tuvastab see sihtkiibi:

  Atmega kiibi programmeerija. Kirjutas Nick Gammon. Sisestatud programmeerimisrežiim on OK. Allkiri = 0x1E 0x95 0x0F protsessor = ATmega328PFlash mälu = 32768 baiti. LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lukustusbait = 0xCF Bootloaderi aadress = 0x7E00Bootloaderi pikkus = 512 baiti.
Lilypadi (8 MHz) laaduri kasutamiseks tippige "L" või Uno (16 MHz) laadija jaoks "U" ... Tippige "G" kiibi programmeerimiseks alglaaduriga ...  

Selle programmeerimiseks vajutate klahvi G .

  Kiibi kustutamine ... Alglaadija kirjutamine ... Lehe kinnitamine algusega 0x7E00Lehe kinnitamine algusega 0x7E80Lehe kinnitamine algusega 0x7F00Kohustus leht algab numbriga 0x7F80Written. Kontrollimine ... Vigu ei leitud. Kaitsmete kirjutamine ... LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Done. Tippige "C", kui olete valmis jätkama teise kiibiga ...  

Uno jaoks võtab see ühe sekundi. Mega2560 programmeerimine võtab 3 sekundit.

Üksikasjalikud juhised leiate aadressilt Atmega alglaaduri programmeerija

Koodi saab alla laadida saidilt Github: nickgammon / arduino_sketches

Kas peate valima kiibi tüübi, kuhu kirjutate (Tööriistad-> Laud ..)? Millise plaadi ma valin, kui põletan alglaadurit eraldiseisva kiibina?
Valite IDE-s parda tüübi *, mida kasutate alglaaduri * põletamiseks. Alglaadija eskiis tuvastab sihtplaadi tüübi automaatselt.


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...