TiLDA MK3/build: Difference between revisions
Marekventur (talk | contribs) No edit summary |
(→USB Permissioning on Linux: - spelling error) |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 11: | Line 11: | ||
On Ubuntu you can follow these instructions: https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa | 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=== | === pyusb=== | ||
<pre>sudo pip install pyusb</pre> | <pre>sudo pip install pyusb</pre> | ||
== 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 | |||
<pre> | |||
# 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" | |||
</pre> | |||
And then restart the udev service: | |||
<pre> | |||
sudo udevadm control --reload-rules | |||
</pre> | |||
== Flashing == | == Flashing == | ||
Line 19: | Line 41: | ||
<pre> | <pre> | ||
# Clone this repo | # Clone this repo | ||
git clone | git clone --recursive https://github.com/emfcamp/micropython.git | ||
# Switch to our work branch | # Switch to our work branch | ||
Line 28: | Line 50: | ||
# You have to boot the badge into dfu mode by pressing down the center | # 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 | # joystick button while pressing the reset button to trigger a reboot | ||
make -C stmhal BOARD=STM32L475_EMFBADGE | make -C stmhal BOARD=STM32L475_EMFBADGE deploy | ||
</pre> | </pre> | ||
== 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. | |||
<pre> | |||
$ 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 | |||
</pre> | |||
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 |
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