Fork of Tangara with customizations
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tangara-fw/BUILDING.md

2.0 KiB

Building and flashing

  1. Make sure you've got all of the submodules in this repo correctly initialised:
git submodule update --init --recursive
  1. If this is your first time setting up the repo, then you will need to install the ESP-IDF tools. You can consult the ESP-IDF docs for more detailed instructions, but the TL;DR is that you'll want to run something like this:
./lib/esp-idf/install.sh esp32
  1. As a final piece of setup, you will need to source the env file in this repo to correctly set up your environment for building.
. ./.env

There is also a .env.fish for fish users.

  1. You can now build the project using idf.py build. Or to flash the project onto your board, something like:
idf.py -p /dev/serial/by-id/usb-cool_tech_zone_Tangara_* -b 1000000 flash

(give or take the correct serial port)

Running tests

See TESTING.md for an overview of how to write and run our on-device test suite.

VSCode setup

When using the Espressif IDF extension, you may want to set the following in your settings.json file:

  "idf.espIdfPath": "${workspaceFolder}/lib/esp-idf",
  "idf.espIdfPathWin": "${workspaceFolder}/lib/esp-idf"

LSP (clangd) setup

A regular build will generate build/compile_commands.json, which clangd will automatically pick up. However, there are a couple of additional steps to get everything to play nicely.

First, create a .clangd file in the this directory, with contents like:

CompileFlags:
  Add: [
    -D__XTENSA__,
    --target=mipsel-linux-gnu,
  ]
  Remove: [
    -fno-tree-switch-conversion,
    -mlongcalls,
    -fstrict-volatile-bitfields,
  ]

You may need to tweak the target flag until clangd is happy to build.

If you get errors involving missing C++ includes, then you may need to edit your editor's LSP invocation to include --query-driver=**.

You should then get proper LSP integration via clangd.