summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorMike Ossmann <mike@ossmann.com>2011-05-24 01:53:22 +0000
committerMike Ossmann <mike@ossmann.com>2011-05-24 01:53:22 +0000
commit838daea6356e9876f1e0aca84ecc807379ba06a3 (patch)
tree97bf3a69fff23088713e23cae97b2522dab1836b /web
parentd4152e424b3794936a94487424cd74c2ef050ace (diff)
added USB bootloader info to programming page
Diffstat (limited to 'web')
-rw-r--r--web/Makefile2
-rw-r--r--web/content/hardware/program.html58
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 &quot;make
program&quot; in the firmware source code directory. If you have a precompiled
binary in .hex format, you can invoke lpc21isp directly with &quot;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