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:
parent
9852ee5573
commit
8061457f3a
1 changed files with 3 additions and 167 deletions
|
@ -3,171 +3,7 @@
|
||||||
Bluetooth firmware for the Arduino 101
|
Bluetooth firmware for the Arduino 101
|
||||||
######################################
|
######################################
|
||||||
|
|
||||||
The Arduino 101 board comes with a Nordic Semiconductor nRF51 Bluetooth
|
The board documentation for the Arduino 101 BLE has been moved to the
|
||||||
LE controller. The Arduino 101 factory-installed firmware on this
|
Zephyr project wiki:
|
||||||
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.
|
|
||||||
|
|
||||||
Building the firmware yourself
|
* https://wiki.zephyrproject.org/view/Arduino_101
|
||||||
******************************
|
|
||||||
|
|
||||||
#. 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
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue