From 8061457f3a33b9b9f595c8f70b64f24b924e5679 Mon Sep 17 00:00:00 2001 From: Evan Couzens Date: Tue, 21 Jun 2016 15:57:01 -0700 Subject: [PATCH] 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 --- doc/board/arduino_101_ble.rst | 170 +--------------------------------- 1 file changed, 3 insertions(+), 167 deletions(-) diff --git a/doc/board/arduino_101_ble.rst b/doc/board/arduino_101_ble.rst index 9ddc14a4922..c5b3f948e8c 100644 --- a/doc/board/arduino_101_ble.rst +++ b/doc/board/arduino_101_ble.rst @@ -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: /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: /arduino-mynewt/bin/blehci/apps/blehci/blehci.elf - - .. code-block:: console - - $ newt create-image blehci 0.0.0 - App image succesfully generated: /arduino-mynewt/bin/blehci/apps/blehci/blehci.img - Build manifest: /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 -`_ or later: - -.. code-block:: console - - $ btmon --tty --tty-speed 1000000 +* https://wiki.zephyrproject.org/view/Arduino_101