doc: Arduino 101 BLE: Moved board content to wiki.

Moved the arduino_101_ble.rst content to Zephyr wiki:
https://wiki.zephyrproject.org/view/Arduino_101#Blue
tooth_firmware_for_the_Arduino_101

Change-Id: I361f124967da277aba835f39294a36718cf990a8
Signed-off-by: Evan Couzens <evanx.couzens@intel.com>
This commit is contained in:
Evan Couzens 2016-06-21 15:57:01 -07:00 committed by Inaky Perez-Gonzalez
commit 8061457f3a

View file

@ -3,171 +3,7 @@
Bluetooth firmware for the Arduino 101
######################################
The Arduino 101 board comes with a Nordic Semiconductor nRF51 Bluetooth
LE controller. The Arduino 101 factory-installed firmware on this
controller is not supported by Zephyr, so a new one needs to be flashed
onto it. The best option currently is to use MyNewt
(http://mynewt.apache.org) as a basis for this firmware, which makes it
possible to use the controller with the native Bluetooth stack of
Zephyr.
The board documentation for the Arduino 101 BLE has been moved to the
Zephyr project wiki:
Building the firmware yourself
******************************
#. Set up the newt tool. For Fedora the dependencies are:
.. code-block:: console
$ sudo dnf install dfu-util libcurl-devel golang arm-none-eabi-gdb \
arm-none-eabi-newlib arm-none-eabi-gcc-cs \
arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs-c++
General instructions, as well as Ubuntu/Debian dependencies can be
found here: http://mynewt.apache.org/newt/install/newt_linux/
#. Once the newt tool is installed create your project:
.. code-block:: console
$ newt new arduino-mynewt
Downloading project skeleton from apache/incubator-mynewt-blinky...
Installing skeleton in arduino-mynewt...
Project arduino-mynewt successfully created.
$ cd arduino-mynewt/
#. After that, initialize the project with:
.. code-block:: console
$ newt install -v
apache-mynewt-core
Downloading repository description for apache-mynewt-core... success!
Downloading repository incubator-mynewt-core (branch: master; commit: mynewt_0_9_0_tag) at https://github.com/apache/incubator-mynewt-core.git
Cloning into '/tmp/newt-repo072720113'...
remote: Counting objects: 24003, done.
remote: Compressing objects: 100% (559/559), done.
remote: Total 24003 (delta 373), reused 13 (delta 13), pack-reused 23359
Receiving objects: 100% (24003/24003), 8.53 MiB | 1.82 MiB/s, done.
Resolving deltas: 100% (14213/14213), done.
Checking connectivity... done.
apache-mynewt-core successfully installed version 0.9.0-none
#. Create a target for the bootloader:
.. code-block:: console
$ newt target create boot
$ newt target set boot app=@apache-mynewt-core/apps/boot
$ newt target set boot bsp=@apache-mynewt-core/hw/bsp/nrf51-arduino_101
$ newt target set boot build_profile=optimized
#. Create a target for the HCI over UART application:
.. code-block:: console
$ newt target create blehci
$ newt target set blehci app=@apache-mynewt-core/apps/blehci
$ newt target set blehci bsp=@apache-mynewt-core/hw/bsp/nrf51-arduino_101
$ newt target set blehci build_profile=optimized
#. Verify that the targets were properly created:
.. code-block:: console
$ newt target show
targets/blehci
app=@apache-mynewt-core/apps/blehci
bsp=@apache-mynewt-core/hw/bsp/nrf51-arduino_101
build_profile=optimized
targets/boot
app=@apache-mynewt-core/apps/boot
bsp=@apache-mynewt-core/hw/bsp/nrf51-arduino_101
build_profile=optimized
#. Build the bootloader
.. code-block:: console
$ newt build boot
Compiling...
...
Linking boot.elf
App successfully built: <path>/arduino-mynewt/bin/boot/apps/boot/boot.elf
#. Build the HCI over UART application:
.. code-block:: console
$ newt build blehci
Compiling...
...
Linking blehci.elf
App successfully built: <path>/arduino-mynewt/bin/blehci/apps/blehci/blehci.elf
.. code-block:: console
$ newt create-image blehci 0.0.0
App image succesfully generated: <path>/arduino-mynewt/bin/blehci/apps/blehci/blehci.img
Build manifest: <path>/arduino-mynewt/bin/blehci/apps/blehci/manifest.json
#. Combine the bootloader and application into a single firmware image
(:file:`ble_core.img`)
.. code-block:: console
$ cat bin/boot/apps/boot/boot.elf.bin /dev/zero | dd of=ble_core.img bs=1k count=256
$ dd if=bin/blehci/apps/blehci/blehci.img of=ble_core.img bs=1 seek=32768
#. Reset Arduino 101 with USB plugged and wait a few seconds (you might
need several repeated attempts):
.. code-block:: console
$ dfu-util -a ble_core -D ble_core.img
...
Opening DFU capable USB device...
ID 8087:0aba
Run-time device DFU version 0011
Claiming USB DFU Interface...
Setting Alternate Setting #8 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0011
Device returned transfer size 2048
Copying data from PC to DFU device
Download [=========================] 100% 69008 bytes
Download done.
state(2) = dfuIDLE, status(0) = No error condition is present
Done!
After successfully completing these steps your Arduino 101 should now
have a HCI compatible BLE firmware.
Getting HCI traces
******************
By default you will only see normal log messages on the console, without
any way of accessing the HCI traffic between Zephyr and the nRF51
controller. There is however a special Bluetooth logging mode that
converts the console to use a binary protocol that interleaves both
normal log messages as well as the HCI traffic. To enable this protocol
the following Kconfig options need to be set:
.. code-block:: none
CONFIG_BLUETOOTH_DEBUG_MONITOR=y
CONFIG_UART_CONSOLE=n
CONFIG_UART_QMSI_1_BAUDRATE=1000000
The first item replaces the BLUETOOTH_DEBUG_STDOUT option, the second
one disables the default printk/printf hooks, and the third one matches
the console baudrate with what's used to communicate with the nRF51, in
order not to create a bottle neck.
To decode the binary protocol that will now be sent to the console UART
you need to use the btmon tool from `BlueZ 5.40
<http://www.bluez.org/release-of-bluez-5-40/>`_ or later:
.. code-block:: console
$ btmon --tty <console TTY> --tty-speed 1000000
* https://wiki.zephyrproject.org/view/Arduino_101