summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/fingerprint/fingerprint-dev-for-partners.md203
-rw-r--r--docs/images/dragonclaw_servo_fix.jpgbin0 -> 128337 bytes
-rw-r--r--docs/images/dragonclaw_withfix.jpgbin0 -> 237987 bytes
-rw-r--r--docs/images/servo_micro.jpgbin0 -> 246653 bytes
-rw-r--r--docs/images/servomicro_dragonclaw.jpgbin0 -> 242056 bytes
5 files changed, 140 insertions, 63 deletions
diff --git a/docs/fingerprint/fingerprint-dev-for-partners.md b/docs/fingerprint/fingerprint-dev-for-partners.md
index 11bbe3166b..ede2a38af4 100644
--- a/docs/fingerprint/fingerprint-dev-for-partners.md
+++ b/docs/fingerprint/fingerprint-dev-for-partners.md
@@ -2,101 +2,138 @@
This document is intended to help partners (sensor vendors, MCU vendors, etc)
that are currently (or interested in) developing fingerprint solutions for
-Chromebooks. The document assumes that you're using Linux to do the
-development; preferably a recent version of Ubuntu or Debian. Some partners
-have had success developing in a VM, but please note that we don't test that
-configuration.
+Chromebooks. The document assumes that you're using Linux to do the development;
+preferably a recent version of Ubuntu or Debian. Some partners have had success
+developing in a VM, but please note that we don't test that configuration.
[TOC]
## Hardware Required for Standalone Development (no Chromebook)
-The following hardware components can be used to set up a standalone
-development environment for FPMCU development (i.e., it does not rely on a
-Chromebook). Development for other [EC]s is often done in a similar manner, but
-some of them have their own standalone development or evaluation kits that don't
-require the use of [servo].
+The following hardware components can be used to set up a standalone development
+environment for FPMCU development (i.e., it does not rely on a Chromebook).
+Development for other [EC]s is often done in a similar manner, but some of them
+have their own standalone development or evaluation kits that don't require the
+use of [servo].
-### Servo v2
+You will need an [FPMCU reference board](#fpmcu-board) and a
+[servo debugger](#servo).
-Servo v2 is a general purpose debug board that connects to a header on the
-FPMCU board. It supports SPI as well as JTAG/SWD.
+### FPMCU board
+
+The Fingerprint MCU (FPMCU) board has the MCU that handles all
+fingerprint-related functionality (matching, encryption, etc). The fingerprint
+sensor itself connects to the FPMCU board.
+
+This FPMCU board is the DragonClaw Rev 0.1. |
+------------------------------------------- |
+![DragonClaw board] |
*** note
-NOTE: More information on servo can be found in the [servo] documentation.
+NOTE: Some FPMCU boards need a rework in order to work properly with
+servo. This fix is visible in the green box above.
+
+See the [Dragonclaw Servo Fix](#dragonclaw-servo-fix) section for more detail.
***
-![Servo v2]
+### Servo
-### Yoshi Flex Cable
+Servo is a general purpose debug board that connects to a header on the FPMCU
+board. Among other things, the servo supplies power to the FPMCU and can be used
+to program the FPMCU, interact with the EC console, take power measurements, and
+debug a running program. It supports SPI, UART, I2C, as well as JTAG/SWD.
-The Yoshi Flex cable is used to connect Servo v2 to the FPMCU board. The
-standard cable does not work with SWD, but a simple rework can be performed to
-support SWD.
+There are two different servo debugger setups supported, the
+[Servo Micro](#servo-micro) and the [Servo V2 + Yoshi](#servo-v2-yoshi). The
+servo micro is recommended for its simplicity, but currently lack builtin
+JTAG/SWD support for single step debugging.
-#### Standard Yoshi Flex
+| [Servo Micro](#servo-micro) | [ServoV2 + Yoshi](#servo-v2-yoshi) |
+| --------------------------- | ----------------------------------------- |
+| ![Servo Micro] | ServoV2 ![Servo v2] Yoshi Flex ![Standard Yoshi Flex] |
-![Standard Yoshi Flex]
+*** note
+For more information about both servos, see [servo].
+***
-#### Yoshi Flex Reworked to Support SWD
+### Servo Micro
-* Remove R18 and R19
-* Wire from Pin 6 of U21 to right side of R18
-* Wire from Pin 6 of U21 to right side of R19
+Unlike the Servo V2, the newer servo micro does not require any adapters to
+interface with the FPMCU board.
-![Yoshi Flex Reworked to Support SWD]
+As you can see below, one end connects to the FPMCU board and the other connect
+to the developer's computer over micro USB.
-### FPMCU board
+![Servo Micro with DragonClaw]
-The FPMCU board has the MCU that handles all fingerprint-related functionality
-(matching, encryption, etc). The fingerprint sensor itself connects to the
-FPMCU board.
+*** note
+For more information about Servo Micro, see [Servo Micro Info].
+***
-![DragonClaw board]
+### Servo V2 + Yoshi
-### Micro USB Cable
+Servo V2 is the original full featured debugger. It requires a
+[Yoshi Flex Cable](#yoshi-flex-cable) to interface with the FPMCU.
-A micro USB cable is needed to connect the the servo v2 board to your host Linux
-development machine.
+![Servo v2]
-* [Micro USB Cable]
+*** note
+NOTE: More information on servo can be found in the [servo] documentation.
+***
+
+#### Yoshi Flex Cable
+
+The Yoshi Flex cable is used to connect Servo v2 to the FPMCU board. The
+standard cable does not work with SWD, but a simple rework can be performed to
+support SWD.
-## Hardware Setup
+Standard Yoshi Flex | Yoshi Flex Reworked to Support SWD
+---------------------- | -------------------------------------
+![Standard Yoshi Flex] | ![Yoshi Flex Reworked to Support SWD]
-### Connect Yoshi Flex
+Rework steps:
-Connect the Yoshi Flex cable to servo, paying attention to the pin numbering.
+* Remove R18 and R19
+* Wire from Pin 6 of U21 to right side of R18
+* Wire from Pin 6 of U21 to right side of R19
+
+#### Micro USB Cable
-![Connect Yoshi Flex]
+A micro USB cable is needed to connect the the servo v2 board to your host Linux
+development machine.
-![Another Yoshi Flex image]
+* [Micro USB Cable]
-### Connect Yoshi Flex to FPMCU Board
+#### Servo V2 Hardware Setup
-Connect the other end of the Yoshi Flex cable to the servo header on the FPMCU
-board.
+1. Connect the Yoshi Flex cable to servo, paying attention to the pin
+ numbering.
-![Connect Yoshi Flex to FPMCU board]
+ ![Connect Yoshi Flex] ![Another Yoshi Flex image]
-![Another image]
+2. Connect the other end of the Yoshi Flex cable to the servo header on the
+ FPMCU board.
-### Connect Sensor to FPMCU
+ ![Connect Yoshi Flex to FPMCU board] ![Another image]
-Connect the fingerprint sensor to the header on the FPMCU board.
+ *** note
+ Newer FPMCU boards require the ribbon cable to connect in the
+ reverse direction.
+ ***
-### Connect USB to Servo
+3. Connect the fingerprint sensor to the header on the FPMCU board.
-Connect the micro USB cable to servo's `HOST_IN` port. The other end of the USB
-cable should be plugged into your host development machine.
+4. Connect the micro USB cable to servo's `HOST_IN` port. The other end of the
+ USB cable should be plugged into your host development machine.
-![Connect USB to Servo]
+ ![Connect USB to Servo]
-### Optional: Connect SWD Debugger
+5. Optional: Connect SWD Debugger
-If you want to use SWD for debugging, connect your debugger to the `JTAG` header
-on servo v2.
+ If you want to use SWD for debugging, connect your debugger to the `JTAG`
+ header on servo v2.
-![Connect SWD Debugger]
+ ![Connect SWD Debugger]
## Software Setup
@@ -107,7 +144,7 @@ on servo v2.
* Create and [enter the `chroot`].
* You can stop after the `enter the chroot` step.
-### Build the [EC] (embedded controller) codebase
+### Build the [EC](embedded controller) codebase
Open **two** terminals and enter the chroot in each:
@@ -123,7 +160,7 @@ Open **two** terminals and enter the chroot in each:
NOTE: More information on servo can be found in the [servo] documentation.
***
-In the one of the terminals, build and start `servod`:
+In one of the terminals, build and start `servod`
Build and install `servod` in the chroot:
@@ -134,7 +171,7 @@ Build and install `servod` in the chroot:
Run `servod`:
```bash
-(chroot) $ sudo servod --board=bloonchipper
+(chroot) $ sudo servod --board=bloonchipper --config bloonchipper_rev0.1.xml
```
You should see something like this. Leave it running:
@@ -265,6 +302,30 @@ Start a fingerprint enrollment:
> fpenroll
```
+The DragonClaw reference board has an onboard INA that monitors the voltage and
+power draw of the MCU and FP Sensor independently.
+
+Signal Name | Description
+------------- | -------------------------------------
+pp3300_dx_mcu | 3.3V supplying the MCU
+pp3300_dx_fp | 3.3V supplying the fingerprint sensor
+pp1800_dx_fp | 1.8V supplying the fingerprint sensor
+
+You can monitor all power and voltages by using the following command:
+
+```bash
+(chroot) $ watch -n0.5 dut-control pp3300_dx_mcu_mv pp3300_dx_fp_mv \
+pp1800_dx_fp_mv pp3300_dx_mcu_mw pp3300_dx_fp_mw pp1800_dx_fp_mw
+```
+
+*** note
+The `_mv` suffix denotes millivolt and `_mw` suffix denotes milliwatt.
+***
+
+*** note
+See [Power Measurement Documentation] for more information.
+***
+
### Contributing Changes
#### Using Gerrit and git
@@ -305,11 +366,10 @@ from the UI.
### Developer Mode and Write Protection
-Make sure that your fingerprint-equipped Chrome OS device is in [developer
-mode] with a *test* image flashed and [hardware write protection] disabled.
-Using the test image will allow you to SSH into the device and disabling
-hardware write protection allows you to have full access to flashing the FPMCU
-firmware.
+Make sure that your fingerprint-equipped Chrome OS device is in [developer mode]
+with a *test* image flashed and [hardware write protection] disabled. Using the
+test image will allow you to SSH into the device and disabling hardware write
+protection allows you to have full access to flashing the FPMCU firmware.
See [Installing Chromium] for details on flashing test images and enabling
[developer mode].
@@ -356,6 +416,18 @@ From the DUT, flash the firmware you copied:
## Troubleshooting
+### Dragonclaw Servo Fix
+
+DragonClaw Rev 0.1 has a known issue with UART and JTAG. Most notably, this
+issue causes servo micro to fail to program the FPMCU over UART.
+
+This issue can be fixed with the following rework steps:
+
+* Connect servo header pin 13 to pin 18
+* Connect servo header pin 13 to pin 29
+
+![DragonClaw servo fix diagram]
+
### Verify that servo and debugger are connected to USB {#servo-connected}
Check whether servo is enumerating on USB. If you are using a debugger
@@ -413,11 +485,13 @@ https://crbug.com/992082.
[get the source]: https://chromium.googlesource.com/chromiumos/docs/+/master/developer_guide.md#get-the-source
[enter the `chroot`]: https://chromium.googlesource.com/chromiumos/docs/+/master/developer_guide.md#building-chromium-os
[Chromium OS Contributing Guide]: https://chromium.googlesource.com/chromiumos/docs/+/master/contributing.md
+[Servo Micro Info]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_micro.md
[Set your editor]: https://chromium.googlesource.com/chromiumos/docs/+/master/developer_guide.md#Set-your-editor
[Life of a patch]: https://source.android.com/setup/contribute/life-of-a-patch
[Git: Concepts and Workflow]: https://docs.google.com/presentation/d/1IQCRPHEIX-qKo7QFxsD3V62yhyGA9_5YsYXFOiBpgkk/
[Gerrit: Concepts and Workflow]: https://docs.google.com/presentation/d/1C73UgQdzZDw0gzpaEqIC6SPujZJhqamyqO1XOHjH-uk/
[Public Gerrit]: https://chromium-review.googlesource.com
+[Power Measurement Documentation]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/power_measurement.md
[Internal Gerrit]: https://chrome-internal-review.googlesource.com
[Gerrit Credentials Setup]: https://www.chromium.org/chromium-os/developer-guide/gerrit-guide
[Micro USB Cable]: https://www.monoprice.com/product?p_id=9762
@@ -427,10 +501,13 @@ https://crbug.com/992082.
<!-- Images -->
+[Servo Micro]: ../images/servo_micro.jpg
+[Servo Micro with DragonClaw]: ../images/servomicro_dragonclaw.jpg
[Servo v2]: ../images/servo_v2.jpg
[Standard Yoshi Flex]: ../images/yoshi_flex.jpg
[Yoshi Flex Reworked to Support SWD]: ../images/yoshi_flex_swd_rework.jpg
-[DragonClaw board]: ../images/dragonclaw.jpg
+[DragonClaw board]: ../images/dragonclaw_withfix.jpg
+[DragonClaw servo fix diagram]: ../images/dragonclaw_servo_fix.jpg
[Connect USB to Servo]: ../images/servo_v2_with_micro_usb.jpg
[Connect Yoshi Flex]: ../images/servo_v2_with_yoshi_flex.jpg
[Another Yoshi Flex image]: ../images/servo_v2_with_yoshi_flex2.jpg
diff --git a/docs/images/dragonclaw_servo_fix.jpg b/docs/images/dragonclaw_servo_fix.jpg
new file mode 100644
index 0000000000..cdcf510ebf
--- /dev/null
+++ b/docs/images/dragonclaw_servo_fix.jpg
Binary files differ
diff --git a/docs/images/dragonclaw_withfix.jpg b/docs/images/dragonclaw_withfix.jpg
new file mode 100644
index 0000000000..c8469502df
--- /dev/null
+++ b/docs/images/dragonclaw_withfix.jpg
Binary files differ
diff --git a/docs/images/servo_micro.jpg b/docs/images/servo_micro.jpg
new file mode 100644
index 0000000000..39c0bbdf48
--- /dev/null
+++ b/docs/images/servo_micro.jpg
Binary files differ
diff --git a/docs/images/servomicro_dragonclaw.jpg b/docs/images/servomicro_dragonclaw.jpg
new file mode 100644
index 0000000000..75f9b6b888
--- /dev/null
+++ b/docs/images/servomicro_dragonclaw.jpg
Binary files differ