A Smoothie firmware port to the Smoothieboard v2 boards.
Current status : Gcode processing, motion planning, and step generation work. Many secondary features need porting, and some major lower level things need implementation ( USB, Ethernet, SDIO ).
Jim Morris ( lead Smoothie1 dev ) and Alan Carvalho de Assis ( NuttX dev ) are working on a port of Smoothie v1 to the LPC43XX by rebuilding Smoothie on top of the NuttX RTOS ( nuttx.org ) and completing the LPC43XX port of NuttX. That work is expected to take several months, but is now the "official" route to a v2 firmware.
This "mBed" version of the v2 firmware currently in this repository is expected to be left aside, even though it has advanced to the point of being capable of moving motors. We want to apologize to those who have put effort into this version of the port so far. Hopefully the many advantages of moving Smoothie to a RTOS will outweigh the wasting of this codebase, and you will be as exited as we are about the new direction.
If you want to help with the NuttX version of the v2 firmware, please note there will be a period of construction during which only Jim and Alan will work on it, but after that help will be extremely welcome.
First, go into gcc4mbed
cd gcc4mbed/
Then, install the toolchain
./linux_install
Finally, setup the build environment
./BuildShell
Then go to the Smoothie2 source code
cd ../src/
And finally compile the code
make
Current major TODOs :
TODO functionality to port from v1 in more detail :
libs/Adc.cpp : Port low level ADC functionality, then re-enable it in TemperatureControl ( note : there is some weird pin configuration surrounding this that makes it more complicated than it seems, but I don't remember what it is. Logxen@gmail.com probably remembers what it is ).
libs/md5.cpp : Port and re-enable in SimpleShell
libs/Network : Port and enable
@adamgreen - libs/SDFAT.cpp : Port for SPI SD card access, not SDIO, and re-enable. Then add SDIO support.
@adamgreen - libs/SPI.cpp : Port and make to use the mBed library instead of registers
libs/USBDevice : Port and enable
libs/Watchdog : Port ( no mBed libraries available that I could find )
libs/Hook.h : Uses doubles instead of ints ( in v1 ) for some reason, should be fixed
modules/tools/drillingcycles : Port ( should be fairly simple )
modules/tools/extruder : Port
modules/tools/filamentdetector : Port
modules/tools/filamentdetector : Get PWM to work
modules/tools/scaracal : Port
modules/tools/spindle : Port and get PWM to work
modules/tools/temperaturecontrol : Finish porting, get the ADC to actually work, port the AD8495 temperature input
modules/tools/temperatureswitch : Port ( should be fairly easy )
modules/tools/toolmanager : Port ( should be trivial, is needed for Extruder )
modules/tools/touchprobe : Port ( could be quite easy )
modules/tools/zprobe : Port ( could be quite easy )
modules/tools/simpleshell : Port
The FPGA requires a SGPIO spi library
The FPGA requires a way to flash a .bin to it over JTAG from the M4
Things that are broken during the port and should be added back as things progress ( some things might be missing here. I try to use the TOADDBACK label when commenting things so search for that too ) :
Things changed from Smoothie1 :
Planned refactors ( only to be done when the basic port is done ) :