POL
ENG

Budowanie kodu AVR - build.py tool 1.0

Jeżeli zawitałeś tutaj tylko po skrypt to jest on do pobrania tutaj:

I generalnie mógłbyś przestać czytać, ale jeżeli chcesz dowiedzieć się więcej, to czytaj dalej. Do niedawna, do zabawy z kodem dla procesorów AVR używałem IDE AVR-Studio. Niestety, to środowisko w najnowszych wersjach jest dość opasłe. Ostatnio odkryłem jak przyjemnie korzysta się z Visual Studio Code - takiej lżejszej wersji Visual Studio od Microsoftu. Niestety trochę trzeba się nagimnastykować, aby zmusić je do działania jako środowisko dla AVRów. Borykając się z kolejną przeszkodą odczuwałem narastającą pokusę napisania prostego narzędzia w Pythonie, które zrobi za mnie całą brudną robotę. Dostęp do źródła sprawia, że mogę dodawać dowolne funkcjonalności na jakie przyjdzie mi ochota. I wiesz co? Opłaciło się. Gdy implementowałem bootloader, musiałem porównywać kody wynikowe kompilacji i w tym skrypcie zrobiłem to w parę linijek dokładając wywołanie dodatkowych aplikacji. Potem przyszła chęć dodania testów jednostkowych z pomocą GMock-a i GTesta. I to też zajęło tylko chwilę. Potem naturalnym okazało się dodanie automatycznego programowania procesora gdy kompilacja się powiedzie. Przełącznik do programowania bootloadera lub zwykłego kodu? Nic trudniejszego.

build.py

Kilka podróży pociągiem do i z pracy i oto jest. To dość żywy kod, ponieważ często modyfikuję go do aktualnych potrzeb.

Aby zacząć czerpać nieprzerwaną przyjemność z korzystania z tego skryptu, trzeba poświęcić chwilę i ustawić dane w jego wnętrzu. Na początek najważniejszą rzeczą jest typ procesora z którym będziemy współpracować:

mcu = "atmega32"

Kolejną rzeczą jest podanie, które pliki wchodzą w skład projektu i gdzie można znaleźć pliki nagłówkowe. W sekcji list flag przekazywanych do poszczególnych aplikacji można zdefiniować m.in stopień optymalizacji kodu, czy prędkość zegara z jakim współpracujemy.

Dostępne opcje:

Options:
  -h, --help            show this help message and exit
  -u, --unittests       runs unit tests
  -b, --bootloader      compile code as for boot loader purposes
  -s CODE_PATH, --source=CODE_PATH
                        top level code path
  -t TARGET, --target=TARGET
                        Executable file name
  -c, --clear           Removes all output files
  -r, --rebuild         Rebuilds whole project
  -x, --run-tests       Executes unit tests
  -d, --debug           Shows executed commands
  -p, --program_dev     Program device
  -a, --disassembly     Generates assembler code from elf file
  --filter-tests=TEST_FILTER
                        Regex to pick up only some tests

Typowe wywołanie:

python.exe build.py -s sciezkadoźródeł -t avr_program.elf

Zachęcam do pobrania i pozostawienia komantarza.

Uwaga!

Do poprawnej pracy wymagane jest podanie ścieżek do pakietu avr-gcc. Może pochodzić ono z WinAvr albo Arduino

Wszelkie prawa zastrzeżone. Projekt i wykonanie strony SrcPro.pl