Trochę „szybszy” micronucleus dla Digispark

Po włączeniu zasilania, Digispark „czeka” około 6 sekund zanim rozpocznie wykonywanie właściwego programu. Te 6 sekund należy do bootloadera Digisparka – micronucleus’a. W tym czasie bootloader upewnia się, czy przypadkiem na porcie USB nie czeka nowy program. Takie oczekiwanie może być praktyczne podczas tworzenia oprogramowania, ale nie w gotowym produkcie. Czy można ten czas skrócić?

Po podaniu zasilania (lub zresetowaniu Digisparka), proces ładowania oprogramowania wygląda tak:

  • start bootloadera,
  • micronucleus rozpoczyna skanowanie portu USB,
  • jeżeli nic nie jest podłączone do USB – micronucleus uruchamia zapisany we flashu program użytkownika,
  • jeżeli coś jest podłączone do USB – micronucleus będzie czekał na zainicjowanie komunikacji przez urządzenie podłączone do USB (host),
  • jeżeli micronucleus „dogada” się z hostem, host może wysłać nowe oprogramowanie,
  • jeżeli to nie nastąpi – bootloader w ciągu 6 sekund przystąpi do ładowania programu, który jest już we flashu.

I to właśnie te 6 sekund chciałbym ograniczyć.

Zmiana

Kod źródłowy micronucleus możecie pobrać z repozytorium git-owego:

Teraz interesuje was plik „bootloaderconfig.h” w katalogu: „./micronucleus/firmware/configuration/t85_default”. „t85_default” jest domyślą konfiguracją micronucleus (zob. w pliku Makefile, linijka „CONFIG ?= t85_default”). W „bootloaderconfig.h” znajdziecie linijkę:

W opisie tej stałej znajdziecie:

Raczej nie ustawiałbym na „0” – bo to może spowodować niemożność załadowania kodu na Digispark.

Jeżeli ustawicie na mniej niż 1000, przy kompilacji pojawi się błąd:

Można więc śmiało:

Pozostaje skompilować booloader:

Nowy bootloader zostanie zapisany w pliku „main.hex”. Pozostaje go wypalić na Digisparku. Tu polecam tekst Digispark i programowanie przez ISP, który opisuje ten proces.

Teraz Wasz Digispark wystartuje 1 sekundę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *