1a1a85659SMatthias Ringwald# BTstack port for Zephyr Controller with HCI UART Firmware Connectected To POSIX System 2a1a85659SMatthias Ringwald 3a1a85659SMatthias RingwaldThe main difference to the regular posix-h4 port is that that the Zephyr Contoller uses 1000000 as baud rate. 4a1a85659SMatthias RingwaldIn addition, the port defaults to use the fixed static address stored during production. 5a1a85659SMatthias Ringwald 6a1a85659SMatthias Ringwald## Prepare Zephyr Controller 7a1a85659SMatthias Ringwald 8a1a85659SMatthias RingwaldPlease follow [this](https://devzone.nordicsemi.com/blogs/1059/nrf5x-support-within-the-zephyr-project-rtos/) blog post about how to compile and flash `samples/bluetooth/hci_uart` to a connected nRF5 dev kit. 9a1a85659SMatthias Ringwald 10a1a85659SMatthias RingwaldIn short: you need to install an arm-none-eabi gcc toolchain and the nRF5x Command Line Tools incl. the J-Link drivers, checkout the Zephyr project, and flash an example project onto the chipset: 11a1a85659SMatthias Ringwald 12a1a85659SMatthias Ringwald * Install [J-Link Software and documentation pack](https://www.segger.com/jlink-software.html). 13a1a85659SMatthias Ringwald * Get nrfjprog as part of the [nRFx-Command-Line-Tools](http://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF52-DK). Click on Downloads tab on the top and look for your OS. 14a1a85659SMatthias Ringwald * [Checkout Zephyr and install toolchain](https://www.zephyrproject.org/doc/getting_started/getting_started.html). We recommend using the [arm-non-eabi gcc binaries](https://launchpad.net/gcc-arm-embedded) instead of compiling it yourself. At least on OS X, this failed for us. 15a1a85659SMatthias Ringwald 16a1a85659SMatthias Ringwald * In *samples/bluetooth/hci_uart*, compile the firmware for nRF52 Dev Kit 17a1a85659SMatthias Ringwald 18a1a85659SMatthias Ringwald $ make BOARD=nrf52_pca10040 19a1a85659SMatthias Ringwald 20a1a85659SMatthias Ringwald * Upload the firmware 21a1a85659SMatthias Ringwald 22a1a85659SMatthias Ringwald $ make flash 23a1a85659SMatthias Ringwald 24a1a85659SMatthias Ringwald * For the nRF51 Dev Kit, use `make BOARD=nrf51_pca10028`. 25a1a85659SMatthias Ringwald 26a1a85659SMatthias Ringwald## Configure serial port 27a1a85659SMatthias Ringwald 28a1a85659SMatthias RingwaldTo set the serial port of your Zephyr Controller, you can either update config.device_name in main.c or 29b5674ee2SMatthias Ringwaldalways start the examples with the correct `-u COMx` option. 30b5674ee2SMatthias Ringwald 31b5674ee2SMatthias Ringwald## Toolchain 32b5674ee2SMatthias Ringwald 33*3c7822d8SMatthias RingwaldThe port requires a Unix-like toolchain. We successfully used [mingw-w64](https://mingw-w64.org/doku.php) to compile and run the examples. mingw64-w64 is based on [MinGW](https://en.wikipedia.org/wiki/MinGW), which '...provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs.' 34b5674ee2SMatthias Ringwald 35b5674ee2SMatthias RingwaldWe've used the Msys2 package available from the [downloads page](https://mingw-w64.org/doku.php/download) on Windows 10, 64-bit and use the MSYS2 MinGW 64-bit start menu item to compile 64-bit binaries. 36b5674ee2SMatthias Ringwald 37b5674ee2SMatthias RingwaldIn the MSYS2 shell, you can install everything with pacman: 38b5674ee2SMatthias Ringwald 39b5674ee2SMatthias Ringwald $ pacman -S git 40b5674ee2SMatthias Ringwald $ pacman -S make 41b5674ee2SMatthias Ringwald $ pacman -S mingw-w64-x86_64-toolchain 42b5674ee2SMatthias Ringwald $ pacman -S python 43b5674ee2SMatthias Ringwald $ pacman -S winpty 44a1a85659SMatthias Ringwald 45a1a85659SMatthias Ringwald## Compile Examples 46a1a85659SMatthias Ringwald 47a1a85659SMatthias Ringwald $ make 48a1a85659SMatthias Ringwald 490af1bfd9SMatthias RingwaldNote: When compiling with msys2-32 bit and/or the 32-bit toolchain, compilation fails 500af1bfd9SMatthias Ringwaldas `conio.h` seems to be mission. Please use msys2-64 bit with the 64-bit toolchain for now. 510af1bfd9SMatthias Ringwald 52a1a85659SMatthias Ringwald## Run example 53a1a85659SMatthias Ringwald 54a1a85659SMatthias RingwaldJust run any of the created binaries, e.g. 55a1a85659SMatthias Ringwald 56a1a85659SMatthias Ringwald $ ./le_counter 57a1a85659SMatthias Ringwald 58a1a85659SMatthias RingwaldThe packet log will be written to /tmp/hci_dump.pklg 59a1a85659SMatthias Ringwald 60