TiLDA MK3/build: Difference between revisions

From EMF Badge
Jump to navigation Jump to search
 
Line 24: Line 24:


<pre>
<pre>
# 0483:df11 - Tila Mk3 based on Micropython board
# 0483:df11 - Tilda Mk3 based on Micropython board
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ENV{MTP_NO_PROBE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ENV{MTP_NO_PROBE}="1"

Latest revision as of 22:30, 25 August 2017

Dependencies

You can use either windows or linux, although windows will not have most things installed by default

git, make, python, etc

I will just assume you have this

arm-none-eabi-gcc

https://launchpad.net/gcc-arm-embedded/+download You will have to make the arm-none-eabi-gcc from the bin directory available to your system (add to PATH, symlink or copy)

On Ubuntu you can follow these instructions: https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa

On Debian (in Stretch, maybe earlier versions too, also Raspbian Jessie) you can `sudo apt-get install gcc-arm-none-eabi`

pyusb

sudo pip install pyusb

USB Permissioning on Linux

On some Linux distributions it may be necessary to add additional udev rules in order to allow the REPL to work:

copy the following text to /etc/udev/rules.d/49-tilda-mk3.rules

# 0483:df11 - Tilda Mk3 based on Micropython board
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ENV{MTP_NO_PROBE}="1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"

And then restart the udev service:

sudo udevadm control --reload-rules

Flashing

# Clone this repo
git clone --recursive https://github.com/emfcamp/micropython.git 

# Switch to our work branch
cd micropython
git checkout tilda-master

# Now we can build the firmware and flash it to the badge
# You have to boot the badge into dfu mode by pressing down the center
# joystick button while pressing the reset button to trigger a reboot
make -C stmhal BOARD=STM32L475_EMFBADGE deploy

What to do when the firmware update.py script fails

When attempting an update from linux, some users have hit timeouts during hte mass_erase step. This leaves the badge in an ususable state.

$ python update.py 
Hello - Welcome to the automated TiLDA firmware updater
We found your badge. So far, so good...
Traceback (most recent call last):
  File "update.py", line 556, in <module>
    main()
  File "update.py", line 530, in main
    mass_erase()
  File "update.py", line 114, in mass_erase
    "\x41", __TIMEOUT)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 1043, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 883, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 110] Operation timed out

If you have access to a Windows PC, you can download the STMicroelectronics DfuSe USB device firmware updater software http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html and use the 'Upgrade or Verify Action' part of the GUI to update the firmware instead.

  • Install the STMMicroelectronics util from the link above.
  • Download the firmware.dfu file from https://update.badge.emfcamp.org/firmware.dfu and save it off.
  • Start up DfuSeDemo.exe, and click the 'Choose' button - select the firmware.dfu file and then hit 'Upgrade'
  • Your badge should now be un-bricked