Using the bootloader

Pentru a folosi placile de acasă, pașii sunt următorii:

Alternativa 1: folosiți mașina virtuală pusă la dispoziție

Importați OVA-ul de la http://low-level.wiki/large_files/pm-vm-1.0.ova.

md5: 1f1fc7bb8c399a081ef1ccdc3a2bc5ea

sha1: 977d83633896d597e0a4a21c76987d9dca1bfb44

Alternativa 2: Instalați softul de scriere a binarelor pe microcontroller și compilatorul

Pentru asta downloadați și desfaceti arhiva de aici: http://cs.curs.pub.ro/wiki/pm/_media/bootloader_2015.zip.

Dacă sunteți pe Windows: rulați gui/HIDBootFlash.exe, și o sa apară o interfață grafică.

Dacă apare eroarea “The application failed to start because its side-to-side configuration is incorrect”, lipsește o dependință, și anume “Visual Studio 2005 Runtime”, se poate downloada de aici: https://www.microsoft.com/en-us/download/details.aspx?id=26347.

Dacă sunteți pe Linux: există în arhivă utilitarul commandline/bootloadHID.

Pentru Windows: puteți instala fie tool-urile din linie de comanda (http://www.microchip.com/avr-support/avr-and-arm-toolchains-(c-compilers)), fie IDE-ul de la Microchip bazat pe Visual Studio, care conține și tool-urile de CLI (http://www.microchip.com/avr-support/atmel-studio-7).

Pentru Ubuntu: sudo apt-get install gcc-avr binutils-avr avr-libc.

Testarea și folosirea plăcii

Scrieți niște cod, ca să ne asigurăm că sa obținem un binar, compilați, și generați un fișier hex:

Exemplu:

// test.c
#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>
int main() {
    DDRD |= (1 << PD7);
    while(1) {
        PORTD ^= (1 << PD7);
        _delay_ms(500);
    }
    return 0;
}
avr-g++ -mmcu=atmega324p -Os -Wall -o test.elf test.c
avr-objcopy  -j .text -j .data -O ihex test.elf test.hex

Hint: LED-ul este pe PD7, iar butonul pe PB2 (butonul are nevoie de rezistența de pull-up internă pentru a fi folosit normal).

Puneți placa în modul de bootloader

!!! Alimentați placa prin mufa USB.

!!! Apăsați ambele butoane (BTN + RESET), așteptați o secundă, ridicați degetul de pe RESET, așteptați încă o secundă, ridicați degetul de pe BTN, așteptați încă o secundă.

!!! Acum placa este în modul “bootloader”.

(VM-only) Atașați conexiunea USB la VM

Bifați “Devices -> USB -> obdev.at HIDBoot”

Scrieți hex-ul pe placă

După ce placa este conectată la calculator și a intrat în modul de bootloader.

Pe Windows: deschideți HIDBootFlash.exe, apăsați “Find Device” - “Open .hex file” - bifați “Reboot AVR” - “Flash Device”.

Pe Linux:

sudo ./bootloadHID -r ./file.hex

Așteptați să fie copiat hex-ul pe placă.

Acum LED-ul ar trebui să “blinkăne”.

Rularea binarului încărcat de voi

Dacă software-ul se resetează (fie este apăsat butonul “RESET”, fie placa nu mai este alimentată o vreme), își păstrează ultimul program scris, și pornește automat (opțiunea default, dacă nu e ținut apăsat butonul la start-up).

Dacă apar probleme, anunțați asistentul.