AtMega1284p/644p и W5500 Ethernet

Множество тестовых примеров использующих ATMEGA 1284p/644p и Ethernet контроллер W5500.
Собственно выкладываю ссылку на «распатроненный» мной Ethernet-стек для дешевого Ethernet контроллера на Wiznet 5500 SPI: m1284p_wiz5500Основано на примерах для W5500 EVB (LCP13xx + W5500). Не Arduino С-код, довольно серьезно модифицировано(по причинам различий в архитектуре процессоров ARM и AtMega, a также немалого количества багов в коде приложений для W5500 EVB). Собиралось при помощи Eclipse Kepler с плагином AVR-Eclipse и тулчейном avr-gcc 4.9.2 (посредством самописного Makefile, думаю тоже соберется при желании).
Почему Eclipse:
STM32, LPCxx, AVR, Mbed, Arduino-code — все собирается на нём вполне пристойно и меня эта IDE вполне устраивает. Или использую console + gcc + make + Geany в качестве редактора (ну тут конечно, дело личных предпочтений, привычек, корпоративных правил и тд..).
AVR-Studio — извините после AVR Studio 4.xx новые «поделия ATMEL-Microchip», мне не нравятся (btw. MPLAB X-IDE также в топку)…
Железо проекта:
- Плата MCU на базе AtMega1284p/644p (1284p конечно же предпочтительнее, если хотите запустить самые «толстые» примеры).
- Дешевый адаптер W5500 c Aliexpress.
- Плата SD-адаптера (потянет с Aliexpress или самопальная).
- USB-Serial adapter, можно такой (если хотим смотреть Serial-debug).
Фото тестовой системы:

Софт. Что сделано (в порядке усложнения и времени создания):
- Wiznet Loopback TCP/UDP Static IP
- Wiznet Loopback TCP/UDP DHCP IP
- DNS пример
- SNTP + DNS пример
- Telnet server пример
- ICMP(ping) пример
- Простой Веб-сервер (одна страница HTTP POST/GET запросы)
- HTTPD Веб-сервер со всем содержимымым в AVR FLASH-памяти (используются AJAX запросы)
- HTTPD Веб-сервер со всем содержимымым на SD-карте (Chang FAT FS библиотека) (AJAX запросы)
- FTP-клиент (работает только в активном режиме) c сохранением контента на SD-карте ( диалог FTPC посредством последовательно терминала например: Terminal v1.9b by Bray, putty и тд.)
- FTP-сервер (работает в обоих режимах активный/пассивный) c сохранением контента на SD-карте, проверена работа с FTP клиентами: Windows 7 cmd — т.е ftp, FAR, Total Сommander (в нем надо добавить небольшой паттерн на выборку), WinSCP.
- HTTPD + FTPD для динамической загрузки страниц Веб-сервера, весь контент на SD-карте (Chang FAT FS библиотека) (AJAX запросы)
- ZEVERO SD PetitFS бутлоадер (для двух процессоров): M1284p/M644p
- C обновлением через бутлоадер: Wiznet Loopback TCP/UDP Static IP + FTP-сервер (для обновления программы через FTP-клиент) + SD-бутлоадер ZEVERO, (для двух процессоров): M644p/M1284p
- C обновлением через бутлоадер: Веб-сервер (с AJAX) + FTP-сервер (для обновления программы через FTP-клиент и загрузки контента Веб-сервера) + SD-бутлоадер ZEVERO, только для M1284p
- IOT(Интернет вещей) Blynk-клиент пример с Blynk-приложением для смартфона (проверен только на Android (должен работать и в IOS)) — КОД НЕ АРДУИНО, использована библиотека Wiznet-сокетов
- C обновлением через бутлоадер: IOT(Интернет вещей) Blynk-клиент + FTP-сервер (для обновления программы через FTP-клиент)+ SD-бутлоадер ZEVERO
- TFTP клиент (тестировал на Windows7 Tftpd64 server)
- MQTT клиент (LAN Mosquitto server)
Софт. Что хочу добавить :
- TFTP-client bootloader (combined with Zevero SD-Bootloader)
- CoAP/microCoAP example
- Support for EUI-48 MAC generator (25AA02E48 — Microchip OUI)
AVR и Ethernet:
Ethernet ENC28J60 от Lifelover (предварительное ознакомление с этим крайне рекомендую)
AVR и Eclipse:
- Установка и Настройка Eclipse C/C++ для программирования AVR
- AVR и Eclipse от Andy Brown
- Создание Arduino программ на Eclipse (на примере Arduino 1.6.5)
PS.
Долго думал, стоил ли выкладывать вообще, чтобы не начинать очередной «вселенский срач» время AVR ушло и тд… — но все-таки решил оставить «зарубку».
PPS.
Лучше брать «свежак» c гитхаба, так как пока подчищаю код…
- +6
- 10 апреля 2019, 23:25
- maxxir
- 1
Файлы в топике:
m1284p_wiz5500_10_04_2019.zip
W5500 от ЭМ помех зависает на мертво, при чем вся цифровая часть работает отлично, но вот сетевая висит, ни программный ни аппаратный сброс не спасает, только снятие питания. Столкнулся с этим на одном из заводов. Для теста дома брал контактор на 220 В и замыкал «сам на себя», получал импульсы с частотой 50 Гц. Проверил W5100, W5200 и W5500, зависают все, но 5100 и 5200 через аппаратный сброс восстанавливают свою работу, а 5500 нет :(
Не тестировали?
Не тестировали?
А вот это уже интересно. Т.е. STM32 c аппаратным MII/RMII PHY, не вырубился, там где Wiznet'ы сбоят?
хотя, нет. вот такую плату проверял ziblog.ru/2013/11/23/pervoe-vklyuchenie-udk-32f107v-ot-unidk.html тоже виснет, но сброс помогает.
В условиях сильных ЭМ помех, применил бы экранированный пактчкорд FTP/SSTP,
а также были бы весьма желательны ферритовые фильтры ZCAT.
а также были бы весьма желательны ферритовые фильтры ZCAT.
А есть какой-нибудь список или табличка по ресурсам для avr по каждому проекту? Я тоже как-то делал httpd, ftpd и telnetd на avr, но очень трудно после них ещё что-то туда засунуть даже если это atmega256. Дело в объёме ОЗУ. Я даже интерпретатор C делал и те же проблемы с оперативкой.
HTTPD + FTPD + FAT FS — ресурсы RAM ~ 8kb. Поэтому да — AtMega 2560/2561 RAM под завязку.
AtMega 1284 — 16kb RAM — свободно приблизительно половина.
AtMega 1284 — 16kb RAM — свободно приблизительно половина.
Да, с удивлением для себя узнал, что есть меги с 16К ОЗУ. Давно хотел сделать что-то подобное на avr, но упирался в либо в железо, либо в софт. Я переделывал arduino исходники, убирая лишнее. Надо будет заценить, жаль только, что плату придётся делать. Надеюсь, что сокеты там более менее человеческие.
Комментарии (12)
RSS свернуть / развернуть