xref: /btstack/port/windows-h4-zephyr/README.md (revision 34fd36da1820bede7fdeb1f09f53c180688c8c25)
1*34fd36daSMatthias Ringwald# BTstack Port for Windows Systems with Zephyr-based Controller
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
333c7822d8SMatthias 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