213 lines
8.1 KiB
Text
213 lines
8.1 KiB
Text
---
|
|
title: Native Setup
|
|
sidebar_label: Native
|
|
---
|
|
|
|
import Tabs from "@theme/Tabs";
|
|
import TabItem from "@theme/TabItem";
|
|
|
|
export const OsTabs = (props) => (
|
|
<Tabs
|
|
groupId="operating-systems"
|
|
defaultValue="linux"
|
|
values={[
|
|
{ label: "Linux", value: "linux" },
|
|
{ label: "Windows", value: "win" },
|
|
{ label: "macOS", value: "mac" },
|
|
{ label: "Raspberry OS", value: "raspberryos" },
|
|
]}
|
|
>
|
|
{/* eslint-disable-next-line */}
|
|
{props.children}
|
|
</Tabs>
|
|
);
|
|
|
|
First, step into the `zmk` directory that you cloned in [Getting Started](/docs/development/setup/getting-started).
|
|
|
|
```sh
|
|
cd zmk
|
|
```
|
|
|
|
<OsTabs>
|
|
<TabItem value="linux">
|
|
|
|
## Install Zephyr and West
|
|
|
|
1. Open Zephyr's [Getting Started Guide](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html) and follow the instructions under these sections:
|
|
|
|
- [Select and Update OS](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#select-and-update-os)
|
|
- [Install Dependencies](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-dependencies)
|
|
|
|
:::info
|
|
Zephyr's [Install Linux Host Dependencies](https://docs.zephyrproject.org/3.5.0/develop/getting_started/installation_linux.html) page may be of use for distributions which are not based on Ubuntu.
|
|
:::
|
|
|
|
2. Next, follow steps 1-4 from [Get Zephyr and install Python dependencies](https://docs.zephyrproject.org/latest/develop/getting_started/index.html#get-zephyr-and-install-python-dependencies).
|
|
|
|
3. ZMK comes with its own copy of Zephyr, so you don't need to add a fresh copy to a separate directory.
|
|
|
|
```sh
|
|
west init -l app/
|
|
west update
|
|
```
|
|
|
|
:::tip
|
|
This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can take 10-15 minutes even on a good internet connection!
|
|
:::
|
|
|
|
4. Export a [Zephyr CMake package](https://docs.zephyrproject.org/3.5.0/build/zephyr_cmake_package.html#cmake-pkg). This allows CMake to automatically load boilerplate code required for building Zephyr applications.
|
|
|
|
```sh
|
|
west zephyr-export
|
|
```
|
|
|
|
5. ZMK does not need all of the additional dependencies found in Zephyr's `requirements.txt`, but it does need those found in `requirements-base.txt`
|
|
|
|
```sh
|
|
pip3 install -r zephyr/scripts/requirements-base.txt
|
|
```
|
|
|
|
6. Return to Zephyr's Getting Started Guide and [Install Zephyr SDK](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-zephyr-sdk)
|
|
|
|
Your setup is now complete.
|
|
|
|
</TabItem>
|
|
<TabItem value="win">
|
|
|
|
## Install Zephyr and West
|
|
|
|
1. Open Zephyr's [Getting Started Guide](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html) and follow the instructions under these sections:
|
|
|
|
- [Select and Update OS](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#select-and-update-os)
|
|
- [Install Dependencies](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-dependencies)
|
|
|
|
2. Next, follow steps 1-4 from [Get Zephyr and install Python dependencies](https://docs.zephyrproject.org/latest/develop/getting_started/index.html#get-zephyr-and-install-python-dependencies).
|
|
|
|
3. ZMK comes with its own copy of Zephyr, so you don't need to add a fresh copy to a separate directory.
|
|
|
|
```sh
|
|
west init -l app/
|
|
west update
|
|
```
|
|
|
|
:::tip
|
|
This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can take 10-15 minutes even on a good internet connection!
|
|
:::
|
|
|
|
4. Export a [Zephyr CMake package](https://docs.zephyrproject.org/3.5.0/build/zephyr_cmake_package.html#cmake-pkg). This allows CMake to automatically load boilerplate code required for building Zephyr applications.
|
|
|
|
```sh
|
|
west zephyr-export
|
|
```
|
|
|
|
5. ZMK does not need all of the additional dependencies found in Zephyr's `requirements.txt`, but it does need those found in `requirements-base.txt`
|
|
|
|
```sh
|
|
pip3 install -r zephyr/scripts/requirements-base.txt
|
|
```
|
|
|
|
6. Return to Zephyr's Getting Started Guide and [Install Zephyr SDK](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-zephyr-sdk)
|
|
|
|
:::note
|
|
`dfu-util` is required to flash devices that use DFU, but there is currently no maintained package for it on Chocolatey. [QMK Toolbox](https://github.com/qmk/qmk_toolbox) contains a working version of it though.
|
|
:::
|
|
|
|
Your setup is now complete.
|
|
|
|
</TabItem>
|
|
<TabItem value="mac">
|
|
|
|
## Install Zephyr and West
|
|
|
|
1. Open Zephyr's [Getting Started Guide](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html) and follow the instructions under these sections:
|
|
|
|
- [Select and Update OS](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#select-and-update-os)
|
|
- [Install Dependencies](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-dependencies)
|
|
|
|
2. Next, follow steps 1-4 from [Get Zephyr and install Python dependencies](https://docs.zephyrproject.org/latest/develop/getting_started/index.html#get-zephyr-and-install-python-dependencies).
|
|
|
|
3. ZMK comes with its own copy of Zephyr, so you don't need to add a fresh copy to a separate directory.
|
|
|
|
```sh
|
|
west init -l app/
|
|
west update
|
|
```
|
|
|
|
:::tip
|
|
This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can take 10-15 minutes even on a good internet connection!
|
|
:::
|
|
|
|
4. Export a [Zephyr CMake package](https://docs.zephyrproject.org/3.5.0/build/zephyr_cmake_package.html#cmake-pkg). This allows CMake to automatically load boilerplate code required for building Zephyr applications.
|
|
|
|
```sh
|
|
west zephyr-export
|
|
```
|
|
|
|
5. ZMK does not need all of the additional dependencies found in Zephyr's `requirements.txt`, but it does need those found in `requirements-base.txt`
|
|
|
|
```sh
|
|
pip3 install -r zephyr/scripts/requirements-base.txt
|
|
```
|
|
|
|
6. Return to Zephyr's Getting Started Guide and [Install Zephyr SDK](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-zephyr-sdk)
|
|
|
|
Your setup is now complete.
|
|
|
|
</TabItem>
|
|
<TabItem value="raspberryos">
|
|
|
|
## Install Zephyr and West
|
|
|
|
1. Open Zephyr's [Getting Started Guide](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html) and follow the instructions under these sections:
|
|
|
|
- [Select and Update OS](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#select-and-update-os)
|
|
- [Install Dependencies](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-dependencies)
|
|
|
|
2. Next, follow steps 1-4 from [Get Zephyr and install Python dependencies](https://docs.zephyrproject.org/latest/develop/getting_started/index.html#get-zephyr-and-install-python-dependencies).
|
|
|
|
3. ZMK comes with its own copy of Zephyr, so you don't need to add a fresh copy to a separate directory.
|
|
|
|
```sh
|
|
west init -l app/
|
|
west update
|
|
```
|
|
|
|
:::tip
|
|
This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can take 10-15 minutes even on a good internet connection!
|
|
:::
|
|
|
|
4. Export a [Zephyr CMake package](https://docs.zephyrproject.org/3.5.0/build/zephyr_cmake_package.html#cmake-pkg). This allows CMake to automatically load boilerplate code required for building Zephyr applications.
|
|
|
|
```sh
|
|
west zephyr-export
|
|
```
|
|
|
|
5. ZMK does not need all of the additional dependencies found in Zephyr's `requirements.txt`, but it does need those found in `requirements-base.txt`
|
|
|
|
```sh
|
|
pip3 install -r zephyr/scripts/requirements-base.txt
|
|
```
|
|
|
|
6. Return to Zephyr's Getting Started Guide and [Install Zephyr SDK](https://docs.zephyrproject.org/3.5.0/develop/getting_started/index.html#install-zephyr-sdk)
|
|
|
|
#### Install Cross-Compile Toolchain
|
|
|
|
Because Raspberry OS runs on the same architecture (but different ABI) as ARM keyboard MCUs, the operating system's installed [cross compilers](https://docs.zephyrproject.org/3.5.0/develop/toolchains/other_x_compilers.html) can be used to target the different ABI. Building for non-ARM MCUs has not been tested.
|
|
|
|
First, the cross compiler should be installed:
|
|
|
|
```sh
|
|
sudo apt install gcc-arm-none-eabi
|
|
```
|
|
|
|
Next, we'll configure Zephyr with some [environment variables](https://docs.zephyrproject.org/3.5.0/develop/env_vars.html#env-vars) needed to find the cross compiler. Create a file named `~/.zephyrrc` if it doesn't exist, and add these lines to it:
|
|
|
|
```sh
|
|
export ZEPHYR_TOOLCHAIN_VARIANT=cross-compile
|
|
export CROSS_COMPILE=/usr/bin/arm-none-eabi-
|
|
```
|
|
|
|
Your setup is now complete.
|
|
|
|
</TabItem>
|
|
</OsTabs>
|