Hey @wischmi2, I see where you’re coming from. Let’s break it down and go through your questions one by one:
The west init sets up the zephyr workspace using west-ncs.yml to tell it what other repositories it needs correct?
When you do west init -m <manifest-repo>, you’re basically telling west where to find the manifest file, and the manifest file describes:
- Which repositories are needed (Zephyr, nrfxlib, mcuboot, etc.)
- Which revisions/branches of those repos should be checked out
- How they’re layered together in the workspace
After west init you run west update, which pulls down all of those repos at the correct revisions and sets up the workspace.
So yes: west-ncs.yml is what drives which extra repos get cloned/managed for your Zephyr/NCS environment.
After that you run west update to download all the packages that are contained in the west-ncs.yml. Why do you need a west.yml in the pouch repo?
West uses one active manifest per workspace. In the pouch repo you can pick which “base” you want, so you can use west-ncs.yml which pulls the NCS stack (nRF Connect SDK) or you can use west.yml which pulls the vanilla Zephyr. Zephyr is the upstream open source RTOS project, maintained by the Zephyr Project under the Linux Foundation. NCS is Nordic’s “distribution” (or downstream) of Zephyr. It takes Zephyr as a module, then layers on their own closed or open source libraries for Bluetooth controller, LTE modem and so on. Therefore, you can build pouch repo using NCS or vanilla Zephyr. We are using NCS because of cryptography libraries available in NCS which speeds up the end-to end-encryption pouch offers.
Why do you need to do installs of the requirements files for both zephyr and pouch?
In short, both Zephyr and pouch have their own Python tooling requirements. For example, Pouch specifically depends on the zcbor package, which it uses to handle CBOR encoding of payloads sent to the cloud.
When I go to open the application in visual studio and I want to add build configuration it says you have to update the west workspace before you create a build? I don’t understand why that is?
I don’t personally use Visual Studio, so I might be slightly off here, but it looks like you need to run west update in the VS terminal to fetch all the dependencies listed in the manifest file. Keep in mind that whenever the manifest file changes, you need to run west update again to make sure everything is downloaded and up to date. In your case, it’s possible the workspace hasn’t been updated yet, or that some of the required repos are missing or checked out at the wrong revision.
Starting with “The xiao-ble ships” on downwards I’m lost. I know I have to build a file that I can drag over and drop in the xiao-ble folder when its in bootloader mode. What hardware do I need to flash with mcuboot over swd/jtag , a dev kit like 9160? I wouldn’t know where to start with a memory layout. Perhaps I’ll wait until you can get the hardware and tell me how you did it?
Check out the Zephyr docs for UF2 Flashing and External debugger. It should work with the nRF9160 DK as it has Segger J-Link on-board for programming external targets.
Additionally, we host Zephyr training sessions once a quarter, in fact, we just had one yesterday. You can go through the material yourself at any time using our Zephyr training docs. Also, if you’d like a deeper dive into manifest files, Mike Szczys gave a talk on the topic a couple of years ago, which you can check out here. I am also of the opinion that our blog is a great starting point for getting to grips with Zephyr. It helps you build a solid understanding of the basics, which then makes it easier to dive deeper and explore the official Zephyr docs.