Есть необходимость загрузки прошивки по ethernet. Нашел ветке viewtopic.php?f=1&t=6 упоминание про avr-etherboot. Поделитесь плиз опытом, кто использовал. Живое оно, и работает ли вообще? Может лучше использовать какие либо альтернативы? Надо для atmega328p и atmega1284P + enc28j60. Сейчас пробую на 328p, второй железки пока нет под рукой.
Пробовал следующим образом.
Исходники взял тут: https://github.com/OpenEscapeControl/AVR-Etherboot - это форк оригинального проекта https://github.com/cniweb/avr-etherboot. Там разные makefile config.h eemem.c в директории device_001. Оригинальный собрать удалось только с makefile от OpenEscapeControl. Пробовал и оригинальный с makefile from OpenEscapeControl.
enc28j60 к атмеге подключена через стандартные пины (SS-10, MOSI-11, MISO-12, SCK-13). Железка рабочая, с библиотекой UIPEthernet работает нормально.
В качестве tftp сервера использую tftpd-hpa. Сервер работает, файлы по tftp отдает.
config.h
Код: Выделить всё
#define ENC28J60_CONTROL_DDR DDRB
#define ENC28J60_CONTROL_PORT PORTB
#define ENC28J60_PIN_SCK 5
#define ENC28J60_PIN_MISO 4
#define ENC28J60_PIN_MOSI 3
#define ENC28J60_PIN_SS 2
#define ENC28J60_PIN_CS 0
Код: Выделить всё
unsigned long EEMEM mlIpEEP = IP(10,0,0,CONFIG_IP_ADDRESS_4);
unsigned long EEMEM mlTFTPipEEP = IP(10,0,0,5);
TFTPREQ maTFTPReqStr EEMEM = {0x0100, "d01\0octet"};
Код: Выделить всё
MCU = atmega328p
EMB_FLASHEND = 0x7FFF
EMB_BOOTLOADER_SECTION_START = 0x7C00
EMB_LINKER_SCRIPT = -T ../make.files/eth-avr5.x
F_CPU = 16000000
EMB_BOOTLOADER_FLAVOR = 1
Код: Выделить всё
AVRDUDE_PROGRAMMER = stk500v1
AVRDUDE_PORT = /dev/ttyACM0
AVRDUDE_BAUD = 19200
LFUSE = 0xff
HFUSE = 0xde
EFUSE = 0x05
AVRDUDE_VERBOSE = -v -v
AVRDUDE_FLAGS = -p $(MCU) -c $(AVRDUDE_PROGRAMMER) -P$(AVRDUDE_PORT) -b$(AVRDUDE_BAUD)
Код: Выделить всё
$ make MAC_BYTE_6=0xB1 IP_ADDRESS_4=31 all
$ make program
$ make fuse
Вывод команд тут: https://pastebin.com/pUCs7bCg
Собирается, прошивается, но не работает, в логах tftp сервера ничего.
Подскажите плиз, что я делаю не так?
ps: Если альтернатива, то хотелось бы, что бы собиралась avr-gcc.