boards: add 96b_nitrogen board documentation
This patch adds documentation for 96b_nitrogen board.
Change-Id: I3e50d61cb9dd3e3a1afd242e53c74aae969ffdf0
Signed-off-by: Ricardo Salveti <ricardo.salveti@linaro.org>
diff --git a/boards/arm/96b_nitrogen/doc/96b_nitrogen.rst b/boards/arm/96b_nitrogen/doc/96b_nitrogen.rst
new file mode 100644
index 0000000..4a6172b
--- /dev/null
+++ b/boards/arm/96b_nitrogen/doc/96b_nitrogen.rst
@@ -0,0 +1,350 @@
+.. _96b_nitrogen_board:
+
+96Boards Nitrogen
+#################
+
+Overview
+********
+
+Zephyr applications use the 96b_nitrogen board configuration to run on the
+96Boards Nitrogen hardware. It provides support for the Nordic Semiconductor
+nRF52832 ARM Cortex-M4F CPU.
+
+.. figure:: img/96b-nitrogen-front.png
+ :width: 487px
+ :align: center
+ :alt: 96Boards Nitrogen
+
+ 96Boards Nitrogen
+
+More information about the board can be found at the `seeed BLE Nitrogen`_
+website. The `Nordic Semiconductor Infocenter`_ contains the processor's
+information and the datasheet.
+
+Hardware
+********
+
+96Boards Nitrogen provides the following hardware components:
+
+- nRF52832 microcontroller with 512kB Flash, 64kB RAM
+- ARM®32-bit Cortex®-M4 CPU with FPU
+- Bluetooth LE
+- NFC
+- LPC11U35 on board SWD debugger
+
+ - SWD debugger firmware
+ - USB to UART
+ - Drag and Drop firmware upgrade
+
+- 7 LEDs
+
+ - USR1, BT, PWR, CDC, DAP, MSD, Battery charge
+
+- SWD debug connectors
+
+ - nRF52832 SWD connector
+ - nRF52832 Uart connector
+
+- On board chip antenna
+- 1.8V work voltage
+- 2x20pin 2.0mm pitch Low speed connector
+
+Supported Features
+==================
+
+The Zephyr 96b_nitrogen board configuration supports the following hardware
+features:
+
++-----------+------------+--------------------------------------+
+| Interface | Controller | Driver/Component |
++===========+============+======================================+
+| NVIC | on-chip | nested vectored interrupt controller |
++-----------+------------+--------------------------------------+
+| RTC | on-chip | system clock |
++-----------+------------+--------------------------------------+
+| UART | on-chip | serial port |
++-----------+------------+--------------------------------------+
+| GPIO | on-chip | gpio |
++-----------+------------+--------------------------------------+
+| FLASH | on-chip | flash |
++-----------+------------+--------------------------------------+
+| RADIO | on-chip | bluetooth |
++-----------+------------+--------------------------------------+
+| RTT | on-chip | console |
++-----------+------------+--------------------------------------+
+
+Other hardware features are not supported by the Zephyr kernel.
+See `Nordic Semiconductor Infocenter`_ for a complete list of nRF52-based
+board hardware features.
+
+The default configuration can be found in the defconfig file:
+
+ ``boards/arm/96b_nitrogen/96b_nitrogen_defconfig``
+
+Pin Mapping
+===========
+
+LED
+---
+
+- LED1 / User LED (green) = P0.29
+- LED2 / BT LED (blue) = P0.28
+
+Push buttons
+------------
+
+- BUTTON = SW1 = P0.27
+
+External Connectors
+-------------------
+
+Low Speed Header
+
++--------+-------------+----------------------+
+| PIN # | Signal Name | nRF52832 Functions |
++========+=============+======================+
+| 1 | GND | GND |
++--------+-------------+----------------------+
+| 3 | UART CTS | P.014 / TRACEDATA[3] |
++--------+-------------+----------------------+
+| 5 | UART TX | P0.13 |
++--------+-------------+----------------------+
+| 7 | UART RX | P0.15 / TRACEDATA[2] |
++--------+-------------+----------------------+
+| 9 | UART RTS | P0.12 |
++--------+-------------+----------------------+
+| 11 | UART TX | P0.13 |
++--------+-------------+----------------------+
+| 13 | UART RX | P0.15 / TRACEDATA[2] |
++--------+-------------+----------------------+
+| 15 | P0.22 | P0.22 |
++--------+-------------+----------------------+
+| 17 | P0.20 | P0.20 |
++--------+-------------+----------------------+
+| 19 | N/A | N/A |
++--------+-------------+----------------------+
+| 21 | N/A | N/A |
++--------+-------------+----------------------+
+| 23 | P0.02 | P0.02 |
++--------+-------------+----------------------+
+| 25 | P0.04 | P0.04 |
++--------+-------------+----------------------+
+| 27 | P0.06 | P0.06 |
++--------+-------------+----------------------+
+| 29 | P0.08 | P0.08 |
++--------+-------------+----------------------+
+| 31 | P0.16 | P0.16 |
++--------+-------------+----------------------+
+| 33 | P0.18 | P0.18 |
++--------+-------------+----------------------+
+| 35 | VCC | |
++--------+-------------+----------------------+
+| 37 | USB5V | |
++--------+-------------+----------------------+
+| 39 | GND | GND |
++--------+-------------+----------------------+
+
++--------+-------------+----------------------+
+| PIN # | Signal Name | nRF52832 Functions |
++========+=============+======================+
+| 2 | GND | GND |
++--------+-------------+----------------------+
+| 4 | PWR BTN | |
++--------+-------------+----------------------+
+| 6 | RST BTN | P0.21 / RESET |
++--------+-------------+----------------------+
+| 8 | P0.26 | P0.26 |
++--------+-------------+----------------------+
+| 10 | P0.25 | P0.25 |
++--------+-------------+----------------------+
+| 12 | P0.24 | P0.24 |
++--------+-------------+----------------------+
+| 14 | P0.23 | P0.23 |
++--------+-------------+----------------------+
+| 16 | N/A | N/A |
++--------+-------------+----------------------+
+| 18 | N/A | PC7 |
++--------+-------------+----------------------+
+| 20 | N/A | PC9 |
++--------+-------------+----------------------+
+| 22 | N/A | PB8 |
++--------+-------------+----------------------+
+| 24 | P0.03 | P0.03 |
++--------+-------------+----------------------+
+| 26 | P0.05 | P0.05 |
++--------+-------------+----------------------+
+| 28 | P0.07 | P0.07 |
++--------+-------------+----------------------+
+| 30 | P0.11 | P0.11 |
++--------+-------------+----------------------+
+| 32 | P0.17 | P0.17 |
++--------+-------------+----------------------+
+| 34 | P0.19 | P0.19 |
++--------+-------------+----------------------+
+| 36 | NC | |
++--------+-------------+----------------------+
+| 38 | NC | |
++--------+-------------+----------------------+
+| 40 | GND | GND |
++--------+-------------+----------------------+
+
+System Clock
+============
+
+nRF52 has two external oscillators. The frequency of the slow clock is
+32.768 kHz. The frequency of the main clock is 32 MHz.
+
+Flashing Zephyr onto 96Boards Nitrogen
+**************************************
+
+The 96Boards Nitrogen board can be flashed via the `CMSIS DAP`_ interface,
+which is provided by the micro USB interface to the LPC11U35 chip.
+
+Using the CMSIS-DAP interface, the board can be flashed via the USB storage
+interface (drag-and-drop) and also via `pyOCD`_.
+
+Installing pyOCD
+================
+
+The latest stable version of `pyOCD`_ can be installed via pip as follows:
+
+.. code-block:: console
+
+ $ pip install --pre -U pyocd
+
+To install the latest development version (master branch), do the following:
+
+.. code-block:: console
+
+ $ pip install --pre -U git+https://github.com/mbedmicro/pyOCD.git#egg=pyOCD
+
+You can then verify that your board is detected by pyOCD by running:
+
+.. code-block:: console
+
+ $ pyocd-flashtool -l
+
+Common Errors
+-------------
+
+No connected boards
+-------------------
+
+If you don't use sudo when invoking pyocd-flashtool, you might get any of the
+following errors:
+
+.. code-block:: console
+
+ No available boards are connected
+
+.. code-block:: console
+
+ No connected boards
+
+.. code-block:: console
+
+ Error: There is no board connected.
+
+To fix the permission issue, simply add the following udev rule for the
+NXP LPC1768 interface:
+
+.. code-block:: console
+
+ $ echo 'ATTR{idProduct}=="0204", ATTR{idVendor}=="0d28", MODE="0666", GROUP="plugdev"' > /etc/udev/rules.d/50-cmsis-dap.rules
+
+Finally, unplug and plug the board again.
+
+ValueError: The device has no langid
+------------------------------------
+
+As described by `pyOCD issue 259`_, you might get the
+:code:`ValueError: The device has no langid` error when not running
+pyOCD as root (e.g. sudo).
+
+To fix the above error, add the udev rule shown in the previous section
+and install a more recent version of pyOCD.
+
+Flashing an Application to 96Boards Nitrogen
+============================================
+
+The sample application :ref:`hello_world` is being used in this tutorial:
+
+.. code-block:: console
+
+ $<zephyr_root_path>/samples/hello_world
+
+To build the Zephyr kernel and application, enter:
+
+.. code-block:: console
+
+ $ cd <zephyr_root_path>
+ $ source zephyr-env.sh
+ $ cd $ZEPHYR_BASE/samples/hello_world/
+ $ make BOARD=96b_nitrogen
+
+Connect the micro-USB cable to the 96Boards Nitrogen and to your computer.
+
+Erase the flash memory in the nRF52832:
+
+.. code-block:: console
+
+ $ pyocd-flashtool -d debug -t nrf52 -ce
+
+Flash the application using the pyocd-flashtool tool:
+
+.. code-block:: console
+
+ $ pyocd-flashtool -d debug -t nrf52 outdir/96b_nitrogen/zephyr.hex
+
+Run your favorite terminal program to listen for output.
+
+.. code-block:: console
+
+ $ minicom -D <tty_device> -b 115200
+
+Replace :code:`<tty_device>` with the port where the board 96Boards Nitrogen
+can be found. For example, under Linux, :code:`/dev/ttyACM0`.
+The ``-b`` option sets baud rate ignoring the value from config.
+
+Press the Reset button and you should see the the following message in your
+terminal:
+
+.. code-block:: console
+
+ Hello World! arm
+
+Debugging with GDB
+==================
+
+To debug Zephyr with GDB launch the GDB server on a terminal:
+
+.. code-block:: console
+
+ $ pyocd-gdbserver
+
+and then launch GDB against the .elf file you built:
+
+.. code-block:: console
+
+ $ arm-none-eabi-gdb outdir/96b_nitrogen/zephyr.elf
+
+And finally connect GDB to the GDB Server:
+
+.. code-block:: console
+
+ (gdb) target remote localhost:3333
+
+.. _pyOCD:
+ https://github.com/mbedmicro/pyOCD
+
+.. _CMSIS DAP:
+ https://developer.mbed.org/handbook/CMSIS-DAP
+
+.. _Nordic Semiconductor Infocenter:
+ http://infocenter.nordicsemi.com/
+
+.. _seeed BLE Nitrogen:
+ http://wiki.seeed.cc/BLE_Nitrogen/
+
+.. _pyOCD issue 259:
+ https://github.com/mbedmicro/pyOCD/issues/259
diff --git a/boards/arm/96b_nitrogen/doc/img/96b-nitrogen-front.png b/boards/arm/96b_nitrogen/doc/img/96b-nitrogen-front.png
new file mode 100644
index 0000000..5ef5e2f
--- /dev/null
+++ b/boards/arm/96b_nitrogen/doc/img/96b-nitrogen-front.png
Binary files differ