Programming Smoothieboard V2 Mini

I’m testing the Smoothieboard V2 Mini

The JP10 (BOOT2) is in the position 0 (tied to ground) because I will program it using SWD instead using the LPCScript DFU/bootloader.

First we need to clone the repositories:

$ git clone https://github.com/Smoothieware/smoothie-nuttx
$ git clone https://github.com/Smoothieware/smoothie-v2

Enter inside “smoothie-nuttx” and compile the nuttx for smoothie v2 mini alpha:

$ cd smoothie-nuttx
$ cd nuttx
$ cd tools
$ ./configure.sh smoothiev2-mini-alpha/smoothiedev
$ cd ..
$ make export
...
CC:  lpc43_ostest.c
CC:  lpc43_autoleds.c
CC:  lpc43_timer.c
AR:   lpc43_boot.o lpc43_appinit.o lpc43_mmcsd.o lpc43_highpri.o lpc43_ostest.o lpc43_autoleds.o lpc43_timer.o 
make[2]: Leaving directory '/smoothie-nuttx/nuttx/configs/smoothiev2-mini-alpha/src'
make[1]: Leaving directory '/smoothie-nuttx/nuttx/arch/arm/src'

Just confirm the the file “nuttx-export.zip” was created correctly:

$ ls -l nuttx-export.zip 
-rw-rw-r-- 1 alan alan 2932905 Set  3 20:00 nuttx-export.zip

We need to copy this file to smoothie-v2 directory to compile the final firmware:

$ cp nuttx-export.zip ../../smoothie-v2/Firmware/

Then go to there and decompress the nuttx-export:

$ cd ../../smoothie-v2/Firmware/
$ unzip nuttx-export.zip
...
  inflating: nuttx-export/include/machine/_types.h  
  inflating: nuttx-export/include/machine/ieeefp.h  
  inflating: nuttx-export/include/math.h

Case you are using a version of gcc crosscompiler different from 6.3.1:

$ arm-none-eabi-gcc -v
...
Thread model: single
gcc version 6.3.1 20170620 (release) [ARM/embedded-6-branch revision 249437] (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 

Then you need to export the variable the “ARMVERSION” with your version, see the Rakefile for more info.

We can compile the Unit Tests just executing:

$ rake testing=1
...
Compiling /tmp/smoothie-v2/Firmware/TestUnits/TEST_timer1.cpp for Bambino
Compiling /tmp/smoothie-v2/Firmware/TestUnits/main.cpp for Bambino
Linking for Bambino
   text	   data	    bss	    dec	    hex	filename
 394553	   1128	  11800	 407481	  637b9	smoothiev2_Bambino/smoothiev2.elf

Finally enter inside “smoothiev2_Bambino” and flash the firmware.

I’m using a STLink-v2 clone (low cost: about U$ 2.00) with only three pins: SWDIO, SWCLK and GND connected to JTAG header of the board:

$ cd smoothiev2_Bambino
$ sudo openocd -f interface/stlink-v2.cfg -f target/lpc4330.cfg -c init -c "reset halt" -c "flash write_image erase smoothiev2.bin 0x14000000"
Open On-Chip Debugger 0.10.0+dev-00172-g7719e96 (2017-08-24-16:57)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '.
adapter speed: 500 kHz
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : clock speed 480 kHz
Info : STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.270400
Info : lpc4350.m4: hardware has 6 breakpoints, 4 watchpoints
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x10402c40 msp: 0x10087ff0
auto erase enabled
Info : Found flash device 'win w25q64cv' (ID 0x001740ef)
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x10000154 msp: 0x10087ff0
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x10000198 msp: 0x10087ff0
wrote 458752 bytes from file smoothiev2.bin in 12.150717s (36.870 KiB/s)

Connect the USB/Serial 3.3V adapter to UART0 header pin and you will get:


Starting tests...
There are 35 registered tests...
  PlannerQueue-basic
  PlannerQueue-iteration
  ConfigTest-get_sections
  ConfigTest-load_section
  ConfigTest-load_sub_sections
  Dispatcher-check_callbacks
  Dispatcher-Remove_second_G1_handler
  Dispatcher-one_off_dispatch
  GCodeTest-basic
  GCodeTest-subcode
  GCodeTest-copy
  GCodeTest-Multiple_commands_on_line_no_spaces
  GCodeTest-Modal_G1_and_comments
  GCodeTest-Line_numbers_and_checksums
  MemoryTest-stats
  MemoryTest-AHBn
  Module-single_module
  Module-single_module_destructed
  Module-multi_module
  SDCardTest-mount
  SDCardTest-directory
  SDCardTest-write_read
  SDCardTest-read_config_init
  SDCardTest-unmount
  SlowTicker-test_20_hz
  SlowTicker-test_10_hz
  StreamsTest-stringstream
  StreamsTest-cout
  StreamsTest-OutputStream_null
  StreamsTest-OutputStream_sstream
  StreamsTest-OutputStream_fdstream
  StreamsTest-OutputStream_prependok
  StreamsTest-OutputStream_long_line
  TimeTest-delta_ik
  TimerTest-test_20_hz
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_PlannerQueue.cpp:7:PlannerQueue-basic:PAS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_PlannerQueue.cpp:53:PlannerQueue-iteratiS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_config.cpp:15:ConfigTest-get_sections:PAS
[(enable, false)]
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_config.cpp:31:ConfigTest-load_section:PAS
elapsed time 20000 us
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_config.cpp:51:ConfigTest-load_sub_sectioS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_dispatch.cpp:51:Dispatcher-check_callbacS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_dispatch.cpp:78:Dispatcher-Remove_secondS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_dispatch.cpp:91:Dispatcher-one_off_dispaS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_gcode.cpp:7:GCodeTest-basic:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_gcode.cpp:31:GCodeTest-subcode:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_gcode.cpp:52:GCodeTest-copy:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_gcode.cpp:80:GCodeTest-Multiple_commandsS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_gcode.cpp:100:GCodeTest-Modal_G1_and_comS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_gcode.cpp:118:GCodeTest-Line_numbers_andS
             total       used       free    largest
Mem:        191152      41840     149312     115232
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_mem.cpp:7:MemoryTest-stats:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_mem.cpp:16:MemoryTest-AHBn:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_module.cpp:18:Module-single_module:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_module.cpp:40:Module-single_module_destrS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_module.cpp:62:Module-multi_module:PASS
/home/alan/nuttxspace/SmoothieProject/smoothie-v2/Firmware/TestUnits/TEST_sdcard.cpp:26:SDCardTest-mount:FAIL: Exp1

-----------------------
20 Tests 1 Failures 0 Ignored 
FAIL
Done

One thought on “Programming Smoothieboard V2 Mini

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s