diff options
author | Mike Ossmann <mike@ossmann.com> | 2011-05-24 01:53:22 +0000 |
---|---|---|
committer | Mike Ossmann <mike@ossmann.com> | 2011-05-24 01:53:22 +0000 |
commit | 838daea6356e9876f1e0aca84ecc807379ba06a3 (patch) | |
tree | 97bf3a69fff23088713e23cae97b2522dab1836b /web | |
parent | d4152e424b3794936a94487424cd74c2ef050ace (diff) |
added USB bootloader info to programming page
Diffstat (limited to 'web')
-rw-r--r-- | web/Makefile | 2 | ||||
-rw-r--r-- | web/content/hardware/program.html | 58 |
2 files changed, 52 insertions, 8 deletions
diff --git a/web/Makefile b/web/Makefile index a271419..42dfb2c 100644 --- a/web/Makefile +++ b/web/Makefile @@ -4,4 +4,4 @@ compile: $(NANOC) compile upload: compile - rsync --delete --exclude .svn -ave ssh -i ~/.ssh/id_rsa output/* ossmann,ubertooth@web.sourceforge.net:htdocs/ + rsync --delete --exclude .svn -ave ssh output/* ossmann,ubertooth@web.sourceforge.net:htdocs/ diff --git a/web/content/hardware/program.html b/web/content/hardware/program.html index a4b2104..badce1d 100644 --- a/web/content/hardware/program.html +++ b/web/content/hardware/program.html @@ -3,8 +3,8 @@ title: Programming --- <h1>Programming</h1> -<p>This page describes how to load firmware onto an Ubertooth One or Ubertooth -Zero. Other pages describe how to write <a +<p>This page describes how to load compiled firmware onto an Ubertooth One or +Ubertooth Zero. Other pages describe how to write <a href="../../firmware/develop">firmware</a> or <a href="../../host/develop">host code</a> for the platform.</p> @@ -13,11 +13,48 @@ ISP bootloader, and JTAG.</p> <h2>USB bootloader</h2> -<p>This will probably be the preferred method to load code onto an Ubertooth -Zero or Ubertooth One in the future, but there is no USB bootloader yet. This -method will only work for Ubertooth boards that have had the USB bootloader -firmware previously installed. For a newly constructed device without -firmware, one of the other two programming methods is required.</p> +<p>This is the recommended method of loading code onto an Ubertooth Zero or +Ubertooth One provided that the USB bootloader is already installed (at the +time of manufacture, for example). If you need to install the bootloader +itself, you will have to use either ISP or JTAG.</p> + +<p>The bootloader executes every time the device starts up from reset or power +cycle. Normally it just gets out of the way and passes control to the +application firmware very quickly. Alternatively it can enter Device Firmware +Upgrade (DFU) mode which permits firmware upload and download over USB. There +are two ways to tell the bootloader that you want it to enter DFU mode:</p> + +<p>1. soft bootloader entry: By setting a flag in RAM, the application firmware +can instruct the bootloader to enter DFU mode following a reset (without loss +of power). For example, with the bluetooth_rxtx firmware running you can +trigger a reset into DFU mode using 'ubertooth-util -f' (located in +host/bluetooth_rxtx/). Soft entry only works on Ubertooth One, not Ubertooth +Zero.</p> + +<p>2. hard bootloader entry (also known as pin entry): By connecting two pins +on the expansion header with a jumper during reset (either soft or hard boot), +you can force the bootloader into DFU mode. When using pin entry, the +bootloader will enter DFU mode for only a few seconds and will then execute the +application if no DFU activity has started during that period. This allows +developers to permanently or semi-permanently jumper the pins providing a DFU +opportunity on every reset. This method works on Ubertooth One but not +Ubertooth Zero.</p> + +<p>The bootloader indicates DFU mode by flashing the LEDs in a distinctive +pattern. It also identifies itself as "usb_bootloader" on USB.</p> + +<p>During DFU mode, firmware may be uploaded or downloaded using usb_dfu.py. +See host/usb_dfu/README for usage instructions.</p> + +<p>It is possible that soft bootloader entry may be broken by installing a +faulty application or an application that does not provide a method of +triggering soft entry. In this case, pin entry must be used (e.g. by holding a +paper clip in the expansion header while plugging in the device) to "unbrick" +the unit.</p> + +<p>For Ubertooth One, the pins to connect are pins 1 and 3 of the expansion +header (P4). For Ubertooth Zero, the pins to connect are pins 1 and 13 of the +expansion header (J1).</p> <h2>ISP bootloader</h2> @@ -59,6 +96,9 @@ multiple program/test cycles.</p> <img src="../../images/pogoprog-usage.jpeg" /> +<p>Warning: Code loaded via ISP will blow away the bootloader. It is generally +recommended to use this method only for installing the bootloader itself.</p> + <p>Connect your serial programmer to the Ubertooth board and type "make program" in the firmware source code directory. If you have a precompiled binary in .hex format, you can invoke lpc21isp directly with "lpc21isp @@ -68,6 +108,10 @@ programmer.</p> <h2>JTAG</h2> +<p>Warning: Code loaded via JTAG will blow away the bootloader. It is +generally recommended to use this method only for installing the bootloader +itself.</p> + <p>Connect your ARM Cortex-M3 JTAG debugger (such as one supported by <a href="http://openocd.berlios.de/web/">OpenOCD</a>) to the standard Cortex Debug Connector on the Ubertooth One or the non-standard JTAG connector on the |