You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			330 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
			
		
		
	
	
			330 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
Metadata-Version: 2.1
 | 
						|
Name: uflash
 | 
						|
Version: 1.2.4
 | 
						|
Summary: A module and utility to flash Python onto the BBC micro:bit.
 | 
						|
Home-page: https://github.com/ntoll/uflash
 | 
						|
Author: Nicholas H.Tollervey
 | 
						|
Author-email: ntoll@ntoll.org
 | 
						|
License: MIT
 | 
						|
Platform: UNKNOWN
 | 
						|
Classifier: Development Status :: 4 - Beta
 | 
						|
Classifier: Environment :: Console
 | 
						|
Classifier: Intended Audience :: Developers
 | 
						|
Classifier: Intended Audience :: Education
 | 
						|
Classifier: License :: OSI Approved :: MIT License
 | 
						|
Classifier: Operating System :: POSIX
 | 
						|
Classifier: Operating System :: Microsoft :: Windows
 | 
						|
Classifier: Programming Language :: Python :: 2.7
 | 
						|
Classifier: Programming Language :: Python :: 3.3
 | 
						|
Classifier: Programming Language :: Python :: 3.4
 | 
						|
Classifier: Programming Language :: Python :: 3.5
 | 
						|
Classifier: Topic :: Education
 | 
						|
Classifier: Topic :: Software Development :: Embedded Systems
 | 
						|
License-File: LICENSE
 | 
						|
 | 
						|
uFlash
 | 
						|
======
 | 
						|
 | 
						|
**THIS MODULE ONLY WORKS WITH PYTHON 2.7 or 3.3+.**
 | 
						|
 | 
						|
A utility for flashing the BBC micro:bit with Python scripts and the
 | 
						|
MicroPython runtime. You pronounce the name of this utility "micro-flash". ;-)
 | 
						|
 | 
						|
It provides two services:
 | 
						|
 | 
						|
1. A library of functions to programatically create a hex file and flash it onto a BBC micro:bit.
 | 
						|
2. A command line utility called `uflash` that will flash Python scripts onto a BBC micro:bit.
 | 
						|
 | 
						|
Several essential operations are implemented:
 | 
						|
 | 
						|
* Encode Python into the hex format.
 | 
						|
* Embed the resulting hexified Python into the MicroPython runtime hex.
 | 
						|
* Extract an encoded Python script from a MicroPython hex file.
 | 
						|
* Discover the connected micro:bit.
 | 
						|
* Copy the resulting hex onto the micro:bit, thus flashing the device.
 | 
						|
* Specify the MicroPython runtime hex in which to embed your Python code.
 | 
						|
 | 
						|
Installation
 | 
						|
------------
 | 
						|
 | 
						|
To install simply type::
 | 
						|
 | 
						|
    $ pip install uflash
 | 
						|
 | 
						|
...and the package will download from PyPI. If you wish to upgrade to the
 | 
						|
latest version, use the following command::
 | 
						|
 | 
						|
    $ pip install --no-cache --upgrade uflash
 | 
						|
 | 
						|
**NB:** You must use a USB *data* cable to connect the micro:bit to your
 | 
						|
computer (some cables are power only). You're in good shape if, when plugged
 | 
						|
in, the micro:bit appears as a USB storage device on your file system.
 | 
						|
 | 
						|
Linux users: For uflash to work you must ensure the micro:bit is mounted as a
 | 
						|
USB storage device. Usually this is done automatically. If not you've probably
 | 
						|
configured automounting to be off. If that's the case, we assume you
 | 
						|
have the technical knowledge to mount the device yourself or to install the
 | 
						|
required kernel modules if they're missing. Default installs of popular Linux
 | 
						|
distros "should just work" (tm) out of the box given a default install.
 | 
						|
 | 
						|
Command Usage
 | 
						|
-------------
 | 
						|
 | 
						|
To read help simply type::
 | 
						|
 | 
						|
    $ uflash --help
 | 
						|
 | 
						|
or::
 | 
						|
 | 
						|
    $ uflash -h
 | 
						|
 | 
						|
To discover the version information type::
 | 
						|
 | 
						|
    $ uflash --version
 | 
						|
 | 
						|
If you type the command on its own then uflash will attempt to find a connected
 | 
						|
BBC micro:bit and flash an unmodified default version of the MicroPython
 | 
						|
runtime onto it::
 | 
						|
 | 
						|
    $ uflash
 | 
						|
    Flashing Python to: /media/ntoll/MICROBIT/micropython.hex
 | 
						|
 | 
						|
To flash a version of the MicroPython runtime with a specified script embedded
 | 
						|
within it (so that script is run when the BBC micro:bit boots up) then pass
 | 
						|
the path to the Python script in as the first argument to the command::
 | 
						|
 | 
						|
    $ uflash my_script.py
 | 
						|
    Flashing Python to: /media/ntoll/MICROBIT/micropython.hex
 | 
						|
 | 
						|
You can let uflash watch for changes of your script. It will be flashed
 | 
						|
automatically every time you save it::
 | 
						|
 | 
						|
    $ uflash -w my_script.py
 | 
						|
 | 
						|
or::
 | 
						|
 | 
						|
    $ uflash --watch my_script.py
 | 
						|
 | 
						|
At this point uflash will try to automatically detect the path to the device.
 | 
						|
However, if you have several devices plugged in and/or know what the path on
 | 
						|
the filesystem to the BBC micro:bit already is, you can specify this as a
 | 
						|
second argument to the command::
 | 
						|
 | 
						|
    $ uflash myscript.py /media/ntoll/MICROBIT
 | 
						|
    Flashing Python to: /media/ntoll/MICROBIT/micropython.hex
 | 
						|
 | 
						|
You can even flash multiple devices at once::
 | 
						|
 | 
						|
    $ uflash myscript.py /media/ntoll/MICROBIT /media/ntoll/MICROBIT1
 | 
						|
    Flashing Python to: /media/ntoll/MICROBIT/micropython.hex
 | 
						|
    Flashing Python to: /media/ntoll/MICROBIT1/micropython.hex
 | 
						|
 | 
						|
To extract a Python script from a hex file use the "-e" flag like this::
 | 
						|
 | 
						|
    $ uflash -e something.hex myscript.py
 | 
						|
 | 
						|
This will save the Python script recovered from "something.hex" into the file
 | 
						|
"myscript.py". If you don't supply a target the recovered script will emit to
 | 
						|
stdout.
 | 
						|
 | 
						|
If you're developing MicroPython and have a custom runtime hex file you can
 | 
						|
specify that uflash use it instead of the built-in version of MicroPython in
 | 
						|
the following way::
 | 
						|
 | 
						|
    $ uflash -r firmware.hex
 | 
						|
 | 
						|
or::
 | 
						|
 | 
						|
    $ uflash --runtime=firmware.hex
 | 
						|
 | 
						|
Development
 | 
						|
-----------
 | 
						|
 | 
						|
The source code is hosted in GitHub. Please feel free to fork the repository.
 | 
						|
Assuming you have Git installed you can download the code from the canonical
 | 
						|
repository with the following command::
 | 
						|
 | 
						|
    $ git clone https://github.com/ntoll/uflash.git
 | 
						|
 | 
						|
Ensure you have the correct dependencies for development installed by creating
 | 
						|
a virtualenv and running::
 | 
						|
 | 
						|
    $ pip install -r requirements.txt
 | 
						|
 | 
						|
To locally install your development version of the module into a virtualenv,
 | 
						|
run the following command::
 | 
						|
 | 
						|
    $ python setup.py develop
 | 
						|
 | 
						|
There is a Makefile that helps with most of the common workflows associated
 | 
						|
with development. Typing ``make`` on its own will list the options thus::
 | 
						|
 | 
						|
    $ make
 | 
						|
 | 
						|
    There is no default Makefile target right now. Try:
 | 
						|
 | 
						|
    make clean - reset the project and remove auto-generated assets.
 | 
						|
    make pyflakes - run the PyFlakes code checker.
 | 
						|
    make pep8 - run the PEP8 style checker.
 | 
						|
    make test - run the test suite.
 | 
						|
    make coverage - view a report on test coverage.
 | 
						|
    make check - run all the checkers and tests.
 | 
						|
    make package - create a deployable package for the project.
 | 
						|
    make publish - publish the project to PyPI.
 | 
						|
    make docs - run sphinx to create project documentation.
 | 
						|
 | 
						|
 | 
						|
Release History
 | 
						|
===============
 | 
						|
 | 
						|
1.2.4
 | 
						|
-----
 | 
						|
 | 
						|
* Updated to the latest version of MicroPython for micro:bit (1.0.1)
 | 
						|
* This is the version of uflash to be used in Mu 1.0.2.
 | 
						|
 | 
						|
1.2.3
 | 
						|
-----
 | 
						|
 | 
						|
* Update to the latest version of MicroPython for micro:bit (1.0.0).
 | 
						|
* This is the version of uflash to be used in Mu 1.0.1.
 | 
						|
 | 
						|
1.2.2
 | 
						|
-----
 | 
						|
 | 
						|
* Update to latest version of MicroPython for micro:bit (1.0.0-rc.3).
 | 
						|
 | 
						|
1.2.1
 | 
						|
-----
 | 
						|
 | 
						|
* Update to latest version of MicroPython. Thanks to Damien George and Carlos
 | 
						|
  Pereira Atencio for their hard work.
 | 
						|
* This is the version of uflash to be used in Mu 1.0.0 (final).
 | 
						|
 | 
						|
1.2.0
 | 
						|
-----
 | 
						|
 | 
						|
* Update to latest version of MicroPython. Thanks to Damien George.
 | 
						|
* Add attribute called MICROPYTHON_VERSION to report the version of MicroPython
 | 
						|
  bundled with uflash.
 | 
						|
 | 
						|
1.1.1
 | 
						|
-----
 | 
						|
 | 
						|
* Update to the latest version of MicroPython for the BBC micro:bit -- fixes a
 | 
						|
  bug relating to flooding and the radio module. As always, many thanks to
 | 
						|
  Damien George for his work on MicroPython.
 | 
						|
 | 
						|
1.1.0
 | 
						|
-----
 | 
						|
 | 
						|
* Update to latest version of MicroPython for the BBC micro:bit (many thanks to Damien George for his amazing efforts!).
 | 
						|
* Add a --version flag to uflash that causes it to print the current version number (many thanks to Lenz Grimmer for this work).
 | 
						|
* Allow uflash to accept the content of a script as well as the path to a script (many thanks to Zander Brown for this work).
 | 
						|
* Ensure uflash works nicely / better with external tools (many thanks to Lex Robinson for this work).
 | 
						|
* Added copyright and license information to the start of the script.
 | 
						|
 | 
						|
1.0.8
 | 
						|
-----
 | 
						|
 | 
						|
* Refactor hex extraction to not depend on extended address record before script (thanks Carlos).
 | 
						|
* Refactor tox tests to fix Windows related Gremlin (thanks again, Carlos).
 | 
						|
 | 
						|
1.0.7
 | 
						|
-----
 | 
						|
 | 
						|
* Watch for changes in a script. Automatically flash on save.
 | 
						|
 | 
						|
1.0.5
 | 
						|
-----
 | 
						|
 | 
						|
* Update runtime to include latest bug fixes and inclusion of input() builtin.
 | 
						|
* Detecting drives on Windows 10 no longer causes pop-ups in certain situations.
 | 
						|
* Documentation updates.
 | 
						|
 | 
						|
1.0.4
 | 
						|
-----
 | 
						|
 | 
						|
* Add support for flash multiple microbits.
 | 
						|
 | 
						|
1.0.3
 | 
						|
-----
 | 
						|
 | 
						|
* Update runtime to include audio and speech modules.
 | 
						|
 | 
						|
1.0.2
 | 
						|
-----
 | 
						|
 | 
						|
* Update runtime to include the new radio module.
 | 
						|
 | 
						|
1.0.1
 | 
						|
-----
 | 
						|
 | 
						|
* Update runtime to include file system related changes.
 | 
						|
 | 
						|
1.0.0.final.0
 | 
						|
-------------
 | 
						|
 | 
						|
* Runtime updated to version 1.0 of MicroPython for the BBC micro:bit.
 | 
						|
 | 
						|
1.0.0.beta.7
 | 
						|
------------
 | 
						|
 | 
						|
* Runtime update to fix display related bug.
 | 
						|
 | 
						|
1.0.0.beta.6
 | 
						|
------------
 | 
						|
 | 
						|
* Runtime update to latest version of the DAL (swaps pins 4 and 5).
 | 
						|
 | 
						|
1.0.0.beta.5
 | 
						|
------------
 | 
						|
 | 
						|
* Runtime update to fix error reporting bug.
 | 
						|
 | 
						|
1.0.0.beta.4
 | 
						|
------------
 | 
						|
 | 
						|
* Documentation update.
 | 
						|
* Help text update.
 | 
						|
 | 
						|
1.0.0.beta.3
 | 
						|
------------
 | 
						|
 | 
						|
* Add ability to specify a MicroPython runtime to use.
 | 
						|
* Test fixes.
 | 
						|
 | 
						|
1.0.0.beta.2
 | 
						|
------------
 | 
						|
 | 
						|
* Updated to latest version of MicroPython runtime.
 | 
						|
 | 
						|
1.0.0.beta.1
 | 
						|
------------
 | 
						|
 | 
						|
* Works with Python 2.7 (thanks to @Funkyhat).
 | 
						|
* Updated to the latest build of MicroPython for the BBC micro:bit.
 | 
						|
* Minor refactoring and updates to the test suite due to MicroPython updates.
 | 
						|
 | 
						|
0.9.17
 | 
						|
------
 | 
						|
 | 
						|
* Minor code refactor.
 | 
						|
* Documentation update.
 | 
						|
 | 
						|
0.9.14
 | 
						|
------
 | 
						|
 | 
						|
* Feature complete.
 | 
						|
* Comprehensive test suite - 100% coverage.
 | 
						|
* Tested on Linux and Windows.
 | 
						|
* Documentation.
 | 
						|
* Access via the "uflash" command.
 | 
						|
 | 
						|
0.0.1
 | 
						|
-----
 | 
						|
 | 
						|
* Initial release. Basic functionality.
 | 
						|
 | 
						|
 |