MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.11k stars 19.2k forks source link

[FR] Teensy 4.1 board support (based on NXP i.MX RT106x platform) #17973

Closed Hedda closed 3 years ago

Hedda commented 4 years ago

Teensy 4.1 was just released today by its developer @PaulStoffregen and compared to Teensy 4.0 (see #16666 feature request by @limitz )

IMHO this controller board has the potential to be a competitor to the Re-ARM board is fitted to RAMPS shield in a smart way.

The biggest hardware features news with Teensy 4.1 compared to Teensy 4.0 is the addition of a MicroSD (SD-card) slot, more I/O pins, as well as a header for integrated 10/100 Mbit Ethernet PHY (network physical layer) support. USB devices are supported by the USBHost_t36 library (which is installed into the Arduino IDE automatically by the Teensyduino installer).

The Fast Ethernet port has IEEE1588 precision packet timestamping, and Teensy 4.1 now also supports hot-plugging to directly connect a USB device at any time.

Teensy 4.1 specifications:

Teensy 4.1 product page:

Teensy 4.1 Arduino compatible board is powered by the same RT1062 Cortex-M7 crossover MCU with a CPU core clocked at 600 MHz from NXP i.MX RT Series as Teensy 4.0, (RT1060 family: https://www.nxp.com/imxrt1060 ), however, Teensy 4.1 design is about double in length in order to add a 10/100 Mbit Ethernet PHY, a MicroSD card slot, and offer more I/Os.

Teensy 4.1 specifications

The software is mostly software compatible with Teensy 4.0, and can also be programmed in Arduino IDE using Teensyduino software add-on.

The bottom side of Teensy 4.1 has locations to solder 2 memory chips as optional RAM and flash memory expansion. Footprints are for 2x extra QSPI chips such as flash or 8MB PSRAM chip. The smaller location is meant for a PSRAM chip. The larger location is intended for flash memory.

PS: I have no direct or indirect affiliation with this or any of its resellers, (I'm just a hobby enthusiast).

EvilGremlin commented 4 years ago

Don't forget to send hardware to interested developers ;)

Hedda commented 4 years ago

Don't forget to send hardware to interested developers ;)

I have no affiliations to Teensy, however I'm sure developers can contact @PaulStoffregen at PJRC for donations -> paul@pjrc.com

Hedda commented 4 years ago

FYI, as per #16666 @limitz was working on a Marlin bugfix branch port for the Teensy 4.0 board here:

https://github.com/limitz/Marlin/tree/teensy40

He, however, put that project on the backburner for various reasons:

I was just breadboarding it with some external mosfets and tmc5160s, don't think you need much more than that. However, I got lost in some preprocessor hell because several dependencies of marlin don't use the marlin HAL (obviously) and the arduino port for teensy didn't work for them (u8g2 for instance). Also tried to fix some PROGMEM stuff instead of just defining it as NOP, but that just opens another can of worms with bugs introduced by the fact that a lot of HALs "fix" pgm compilation errors by just defining it empty (serial writes expecting progmem string called with strings allocated on heap or stack. In the meantime I got an ultratronic board and put this project on the backburner, because I think that the way marlin is structured now is flawed and would rather spend time on fixing those flaws than working around those flaws to get the teensy working :)

EvilGremlin commented 4 years ago

I don't think it works like "hey some random guys want us to do complex unpaid work so we can support your new board, please send a few to us for free"... Well, first and foremost developer must be personally interested.

Hedda commented 4 years ago

I don't think it works like "hey some random guys want us to do complex unpaid work so we can support your new board, please send a few to us for free"... Well, first and foremost developer must be personally interested.

@EvilGremlin I know that is not how open source development projects works. but companies will quite often sponsor open source developers for free hardware these days if asked since many of them know that they will sell more if their hardware is supported.

Again this is only a feature request, as in a suggestion, however, Marlin already runs on Teensy 3.x (Teensy 3.5 and Teensy 3.6) and the new Teensy 4.1 (+ a RAMPS 1.5 or 1.6 shield) does look like it could be the perfect high-performance 32-bit board for Marlin Firmware, so my guess is that it will only be a matter of time before there are Marlin developers with a personal interest in the new Teensy 4.1 board.

According to embeddedartists.com, and Arm's own comparison table for the Cortex-M family, the NXP i.MX RT1062 platform is among the highest performing Cortex-M7 solutions, with its CPU core delivering 3036 CoreMarks (when running core at 600 MHz), which is 13 times higher in CoreMark per MHz than NXP's LPC1788 microcontroller (when running its Cortex-M3 core at 120 MHz). In addition to the high-speed performance, it provides very fast real-time responsiveness with ultra-low latency.

Another upcoming board featuring same MCU is the Feather MIMXRT1062 (for Adafruit CircuitPython):

To compare, STM32F7x6 (STM32F746 and STM32F756) platform which is used by 3D-printer controller boards already supported by Marlin Firmware HAL, (like The Borg and RemRam V1 boards), has a slower Cortex-M7 CPU core running at max 216 MHz that deliver 1082 CoreMark, which is almost three times slower than the NXP i.MX RT1062 platform.

SJ-Innovation commented 4 years ago

I have a few on the way, and would love to see & help this happen.

CrazzyFrenchDude commented 4 years ago

Hello guys, so happy and excited to finally be on Github, as a fast learner I have been snicking here and there in the 3D community, reading silently and learning. All this began with the need of a Pick and Place Machin for my "daily" DIY's!Then found out that the makers were using 3D printing controller boards for that matter! And some would have issues with using the thermistors input to plug in there vacuum sensor or other little annoying problems which are not real because the 3D controllers were not especially built for that (Pick And Place Machines)! So I went to the Open Pnp Forum and launched a thread, asking them what would their dream controller for OPNP be. Then started a humble design pcb design around the new comer Teensy 4.1, the PeeNaPle_V1.1b. With it's modularity it joins 3 worlds, not so different! 3D printing, CNC and Pick and Place Machines! With an array of extension boards, stepper driver adapters, Mosfet switches, extension boards, etc and not to mention what the makers will come up with! Still in revision mode I just can't wait for Marlin to be supported or GrblHAL or any gerber firmware! So I give you an early glance at this little baby! All Fab files available here https://gitlab.com/CrazzyFrenchDude/peenaple_v1.1b/ Screenshot 2020-08-13 at 14 23 10

rarens commented 3 years ago

@Hedda I have created a fork to support Teensy 4.1. So far it compiles and uploads. Plus, I somehow got the SD card working. It seems to run fine issuing G and M codes through the serial monitor though I haven't verified with a scope.

I'm a mobile dev by trade and I really don't have a clue what I'm doing. All of the nondescript defines in mcu programming make my head spin. I just tinkered with it until it worked. I would really like to get the SD to show up as a mass storage device. So far I've been unsuccessful. Any help would be greatly appreciated. I would ultimately like to submit a pull request so that teensy 4.0/4.1 are officially supported.

I did my best on the implementation of the timer HAL. I'm pretty sure it works but I really don't know how to verify it. If anyone more knowledgeable than myself could assist I would be truly grateful!

https://github.com/rarens/Marlin/tree/teensy41

CrazzyFrenchDude commented 3 years ago

Check this fork https://github.com/bilsef/Marlin/tree/Teensy4.x

Le jeu. 3 sept. 2020 à 08:40, rarens notifications@github.com a écrit :

@Hedda https://github.com/Hedda I have created a fork to support Teensy 4.1. So far it compiles and I somehow got the SD card working. I'm a mobile dev by trade and I really don't have a clue what I'm doing. All of the nondescript defines in mcu programming make my head spin. I just tinkered with it until it worked. I would really like to get the SD to show up as a mass storage device. So far I've been unsuccessful. Any help would be greatly appreciated. I would ultimately like to submit a pull request so that teensy 4.0/4.1 are officially supported.

I did my best on the implementation of the timer HAL. I'm pretty sure it works but I really don't know how to verify it.

https://github.com/rarens/Marlin/tree/teensy41

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MarlinFirmware/Marlin/issues/17973#issuecomment-686288648, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQBX6PRROU6SJL5BP4S56BTSD426HANCNFSM4M6VE6LQ .

Gamester17 commented 3 years ago

FYI, it looks like Teensy 4.1 (and Teensy 4.0) support has now been merged via https://github.com/MarlinFirmware/Marlin/pull/19311 via PR from @bilsef

Marlin Firmware bugfix-2.0.x branch README.md now specifically list these as supported controller boards:

https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/README.md

Teensy 4.0 / 4.1 boards processor speed flash sram logic fpu
Teensy 4.0 IMXRT1062DVL6A ARM-Cortex M7 600MHz 1M 2M 3.3V yes
Teensy 4.1 IMXRT1062DVJ6A ARM-Cortex M7 600MHz 1M 2M 3.3V yes

Teensy 4.x is also supported in MarlinFirmware stable release branch but the description in the readme file is not as good:

https://github.com/MarlinFirmware/Marlin/blob/2.0.x/README.md

Gamester17 commented 3 years ago

@rarens did you test / verify the pull request from @bilsef in https://github.com/MarlinFirmware/Marlin/pull/19311 pull request?

nanotuxi commented 3 years ago

@Gamester17 tested on a bare teensy41 board. It's working connected to RepetierHost with dry-run enabled. See my comment.

Gamester17 commented 3 years ago

Another FYI, just read about newly announced "iMX RT1064 uCOM" board from Embedded Artists so submitted a feature request:

https://github.com/MarlinFirmware/Marlin/issues/19749

Maybe depending on its price when general availability it might be an option for those looking at developing BoBs for Teensy 4.1

github-actions[bot] commented 3 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.