roboforum.ru

Технический форум по робототехнике.


Marlin 2.0 (32bit)

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Marlin 2.0 (32bit)

Сообщение alexxy » 29 окт 2017, 20:54

Как известно одна из популярных прошивок для 3D принтеров Marlin обзавелась поддержкой 32битных контроллеров на базе следующих чипов:
  • AT91SAM3X8E (на базе Arduino Due) (например RAMPS-FD, RADDS)
  • LPC176x (Всем известные девайсы на базе Smoothieboard) (работают ReARM, MKS Sbase, Azteeg X5 GT, AZSMZ mini)
  • STM32F1
  • Teensy 3.5/3.6 (они уже Cortex-M4 с FPU)

Предыстория: Товарижчь setar подбросил мне плату Azteeg X5 GT с драйверами BigFoot BSD2660. В оригинале плата работала на Smoothiware, но мне хотелось попробовать Marlin на ней. Собственно дело оставалось за малым, добавить в Marlin поддержку этой платы. К плате прилагался дисплей Viki2.

На фото ниже, Marlin запущенный на Azteeg X5 GT с Viki2 (к принтеру пока не подключал, драйвера tmc2660 не удалось запустить, надо написать или найти библиотеку для них)
DSC_0339.JPG

DSC_0340.JPG

DSC_0341.JPG

DSC_0342.JPG


Что сейчас работает:
  • Мапинг базовых пинов
  • Эндстопы
  • Грелки
  • Сервы
  • Термисторы
  • Экран Viki2
  • Драйверы (пробовал drv8825 и tmc2100)
Что не работает:
  • Драйверы BSD2660 (нет библиотеки, надо написать)
  • Ну и потенциально всё что не проверялось ;)

Как всё это было: вся проблема заключалась в том, что по этой борде нет нормальной спецификации с пинами, а предположение что все пины будут совпадать с тем что заявлено для Smoothieboard мягко говоря не оправдалось =). Так что пины искались методом реверс энжиниринга и научного тыка. Порт по сути делался не с нуля, а в качестве базы использовалось то, что было сделано уже для re-arm. Фотки и может пара видео этого дела будет в следующих постах.

Мой код поддержки Azteeg X5 GT смержили в основное дерево Marlin, так что берем бранч bugfix-2.0.x и пользуем

Базовая инструкция для сборки
  • Ставим platformio
  • Клонируем основную репу марлина
    Код: Выделить всёРазвернуть
    git clone https://github.com/MarlinFirmware/Marlin
  • Переключаем бранч на bugfix-2.0.x
    Код: Выделить всёРазвернуть
    git checkout -b bugfix-2.0.x origin/bugfix-2.0.x
  • Конфигурим как обычно, выставляем нужные параметры для платы и тип платы
  • Собираем
    Код: Выделить всёРазвернуть
    pio run -e LPC1768
  • В итоге получится файл firmware.bin (смотрим где он в выводе pio), копируем его на флешку, и перезапускаем плату
  • Радуемся Marlin на 32битной борде
alexxy
 
Сообщения: 90
Зарегистрирован: 05 фев 2015, 22:58

Re: Marlin 2.0 (32bit)

Сообщение setar » 21 апр 2018, 00:31

пины тут вооюще не при чем,
сейчас гляну

Добавлено спустя 1 час 15 минут 20 секунд:
все обычно

#define EEPROM_SETTINGS
#define EEPROM_CHITCHAT
#define SDSUPPORT

но использование SD как хранилища EEPROM это часть HAL (Hardware Abstraction Layer) и задается таргетом сборки бинарного кода.
для примера посмотрите src/HAL/HAL_LPC1768/persistent_store_impl.cpp
Аватара пользователя
setar
Site Admin
 
Сообщения: 10143
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Marlin 2.0 (32bit)

Сообщение Rockman256 » 21 апр 2018, 10:57

setar писал(а):пины тут вооюще не при чем,
сейчас гляну

Добавлено спустя 1 час 15 минут 20 секунд:
все обычно

#define EEPROM_SETTINGS
#define EEPROM_CHITCHAT
#define SDSUPPORT

но использование SD как хранилища EEPROM это часть HAL (Hardware Abstraction Layer) и задается таргетом сборки бинарного кода.
для примера посмотрите src/HAL/HAL_LPC1768/persistent_store_impl.cpp

Да вот только этот файл для arduino due какой-то кастрированный.
Код: Выделить всёРазвернуть
#ifdef ARDUINO_ARCH_SAM

#include "../persistent_store_api.h"

#include "../../inc/MarlinConfig.h"

#if ENABLED(EEPROM_SETTINGS)

extern void eeprom_flush(void);

namespace HAL {
namespace PersistentStore {

bool access_start() {
  return true;
}

bool access_finish(){
#if DISABLED(I2C_EEPROM) && DISABLED(SPI_EEPROM)
  eeprom_flush();
#endif
  return true;
}

bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
  while (size--) {
    uint8_t * const p = (uint8_t * const)pos;
    uint8_t v = *value;
    // EEPROM has only ~100,000 write cycles,
    // so only write bytes that have changed!
    if (v != eeprom_read_byte(p)) {
      eeprom_write_byte(p, v);
      if (eeprom_read_byte(p) != v) {
        SERIAL_ECHO_START();
        SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE);
        return true;
      }
    }
    crc16(crc, &v, 1);
    pos++;
    value++;
  };
  return false;
}

bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc, const bool writing/*=true*/) {
  do {
    uint8_t c = eeprom_read_byte((unsigned char*)pos);
    if (writing) *value = c;
    crc16(crc, &c, 1);
    pos++;
    value++;
  } while (--size);
  return false;
}

}
}

#endif // EEPROM_SETTINGS
#endif // __AVR__
Rockman256
 
Сообщения: 76
Зарегистрирован: 21 авг 2013, 02:29
Откуда: Теперь Питер
Skype: Rockman256
ФИО: Стельмах Роман

Re: Marlin 2.0 (32bit)

Сообщение Rockman256 » 22 апр 2018, 10:13

Получил ответ с гитхаба. Грусть печаль, придется ждать чип еепром
At this time the EEPROM functions for DUE write to an EEPROM, and do not support writing the data to SD. In fact, none of the platforms support using an external SD card for this purpose. The ARM platforms all use the onboard SD card that contains the FIRMWARE.CUR.
Rockman256
 
Сообщения: 76
Зарегистрирован: 21 авг 2013, 02:29
Откуда: Теперь Питер
Skype: Rockman256
ФИО: Стельмах Роман

Re: Marlin 2.0 (32bit)

Сообщение setar » 23 апр 2018, 11:04

печально, но глядишь через пол годика допилят ...
Аватара пользователя
setar
Site Admin
 
Сообщения: 10143
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Marlin 2.0 (32bit)

Сообщение karabas2011 » 23 апр 2018, 21:21

setar писал(а):
karabas2011 писал(а):А кардридер на дисплее так и не починили?
а в чём нестабильность смузи?

кардридер работает и на дисплее и на маме
смузи периодически подвисает, в том числе частенько при смене карты на дисплее - приходится выключать и включать по питанию

более 100 принтеров на mks sbase. Вешается только на HC флешках если врубать питание. Горячий ресет нормально.

Кардридер на марлине2 у меня не пахал - нужно отдельный spi для него отводить. это надо мутить ещё провода.
У тебя какой дисплей и смузя?
karabas2011
 
Сообщения: 1597
Зарегистрирован: 04 мар 2012, 01:06
Откуда: Севастополь-Москва

Re: Marlin 2.0 (32bit)

Сообщение setar » 23 апр 2018, 21:29

первый пост - мое железо
Аватара пользователя
setar
Site Admin
 
Сообщения: 10143
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Пред.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 20

Mail.ru counter