atmega328p/1284P avr-etherboot

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Ответить
Samsonla
Сообщения: 1
Зарегистрирован: 25 апр 2017, 03:40

atmega328p/1284P avr-etherboot

Сообщение Samsonla » 25 апр 2017, 19:25

Добрброго времени суток всем!

Есть необходимость загрузки прошивки по 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
eemem.c

Код: Выделить всё

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"};
makefile.in

Код: Выделить всё

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
в makefile измениял

Код: Выделить всё

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
REQ_FILENAME_3SYM определять не обязательно. Его прописал вручную для maTFTPReqStr, как описано в readme не собиралось.

Вывод команд тут: https://pastebin.com/pUCs7bCg

Собирается, прошивается, но не работает, в логах tftp сервера ничего.

Подскажите плиз, что я делаю не так?

ps: Если альтернатива, то хотелось бы, что бы собиралась avr-gcc.

Ответить