Neseniai išbandžiau “bootloaderį” ant Atmega128 mikrovaldiklio. Atrodytų nieko ypatingo, tačiau tai padariau su standartine Windows programa – Hyper Terminal. Hyper Terminal yra universali komunikavimo programa kurios pagalba galima jungtis prie telnet, įvairių modemų, kito kompiuterio null modemo pagalba ir t.t. Taigi ši programa turi galimybę jungtis prie kompiuterio COM porto.
Pirmiausia reikia Atmega128 bootloaderio kuris palaikytų kurį nors HyperTerminal komunikavimo protokolą (mano atveju Xmodem). Bootloaderio rašyti nereikia – jį parsisiunčiam iš čia http://piconomic.co.za arba tiesiogiai bootloader byla.
Pirmiausia įrašom bootloaderį į Atmega128 naudojantis vienu iš programatorių-dažniausiai ISP. Kaip mikrovaldiklis upžrogramuotas, belieka sutvarkyti fuse bitus kad po reset mikrovaldiklis pradėtų vykdyti nuo bootloader pozicijos. Taigi mano nustatymai (naudojamas išorinis kvarcas):
Kai bootloader'is paruoštas galima bandyti užprogramuoti Atmega128 jo pagalba. Prijungiama savo plokštę prie kompiuterio COM (mano atveju COM2) porto ir tada Iš Start->All Programs->Accessories->Communication->HyperTerminal. Pasirenkame connection type – COM2:
Paspaudę “OK” atsivers COM2 prisijungimo nustatymai:
Kai nustatymai paruošti gali pradėti mikrovaldiklio programavimą. Toliau viskas paprasta -meniu punte pasirinkite Transfer->Send file:
Atsivėrusiame “Send File” dialoge nurodykite kurią programą norite įrašyti į mikrovaldiklį. Nepamirškit jog sukompiliuota programa turi būti BIN, o ne HEX formato. Kitame laukelyje pasirinkite reikiamą protokolą. Mūsų atveju booloader'is supranta Xmodem protokolą:
Spaudžiame send mygtuką po kurio Hyper Terminal laukia booloader atsakymo:
Belieka paspausti įvykdyti mikrovaldiklio pertraukimą kad bootloader'is pradėtų Atmega128 programavimą. Procesas vyksta automatiškai-po mikrovaldiklio užprogramavimo programa pradedama vykdyti iškarto.
Kaip ir minėjau AVR fuse bitas užprogramuotas taip, kad po perkrovimo programos vykdymas prasidėtų nuo bootloader sekcijos. Tai reiškia jog bootloaderis bus visada vykdomas pirmiausia, tačiau jeigu po 1 sekundės nebus gaunamas XMODEM-CRC duomenų paketas programos skaitiklis bus nukreiptas į adresą 0x0000, kur prasideda normali mikrovaldiklio programa. Todėl męs pirmiausia ir paleidom Hyper terminal siuntimą o tik po to perkrovėm mikrovaldiklį – kad pataikytumėm į pirmą 1 sekundės intervalą kol vykdomas bootloader'is.
Naujausi komentarai
prieš 10 savaičių 4 dienos
prieš 11 savaičių 3 dienos
prieš 12 savaičių 3 dienos
prieš 12 savaičių 5 dienos
prieš 12 savaičių 6 dienos
prieš 14 savaičių 1 diena
prieš 14 savaičių 1 diena
prieš 14 savaičių 2 dienos
prieš 14 savaičių 2 dienos
prieš 14 savaičių 6 dienos