Astra MCU SDK Docker Guide
Use Docker to build the SDK and examples in a clean Ubuntu 22.04 environment. Flashing/debugging still runs on the host (USB access is not set up in this container by default).
Throughout this guide, <sdk-root> refers to your SDK checkout on the host machine.
Prerequisites
Docker installed
Windows: Use Docker Desktop with the WSL2 backend.
macOS: Use Docker Desktop or Colima.
Linux: Install Docker Engine.
If you need Arm Compiler 6 (AC6): place the AC6 tarball next to the
Dockerfilebefore building.Filename must match:
ARMCompiler6.*linux-x86_64.tar.gzorARMCompiler6.*linux-aarch64.tar.gz
Windows note: When mounting directories from Windows into Docker, use WSL/Linux-style paths (for example
/mnt/c/Users/<name>/Astra_MCU_SDK).
Build the Docker image
From <sdk-root> (where the Dockerfile lives):
docker build -t <container_name> .
Run the container
If examples are inside the SDK tree (common case)
docker run --rm -it \
-v "<sdk-root>":/workspace/srsdk \
<container_name>
If examples are in a separate folder
docker run --rm -it \
-v "<sdk-root>":/workspace/srsdk \
-v "<examples-root>":/workspace/examples \
<container_name>
Build examples (inside the container)
Set the SDK path for the build system:
export SRSDK_DIR=/workspace/srsdk
GCC build (default)
cd /workspace/srsdk/examples
make cm55_demo_sample_app_defconfig BOARD=SR110_RDK BUILD=SRSDK
make build BOARD=SR110_RDK
AC6 build (optional)
If AC6 was included during the image build, set the toolchain and build:
export AC6_TOOLCHAIN_6_19_0=/opt/arm/ac6/bin
cd /workspace/srsdk/examples
make cm55_demo_sample_app_defconfig BOARD=SR110_RDK BUILD=SRSDK
make build BOARD=SR110_RDK
If your examples are mounted separately, use /workspace/examples instead of /workspace/srsdk/examples.
Outputs:
GCC/LLVM:
examples/out/sr110_cm55_fw/release/sr110_cm55_fw.elfAC6:
examples/out/sr110_cm55_fw/release/sr110_cm55_fw.axf
SR110 image generation (inside the container)
cd /workspace/srsdk/tools/srsdk_image_generator
python srsdk_image_generator.py \
-B0 \
-flash_image \
-sdk_secured \
-spk "/workspace/srsdk/tools/srsdk_image_generator/B0_Input_examples/spk_rc4_1_0_secure_otpk.bin" \
-apbl "/workspace/srsdk/tools/srsdk_image_generator/B0_Input_examples/sr100_b0_bootloader_ver_0x012F_ASIC.axf" \
-m55_image "/workspace/srsdk/examples/out/sr110_cm55_fw/release/sr110_cm55_fw.elf" \
-flash_type "GD25LE128" \
-flash_freq "67"
If you built with AC6, use the .axf instead of .elf for -m55_image.
Output:
/workspace/srsdk/tools/srsdk_image_generator/Output/B0_Flash/B0_flash_full_image_GD25LE128_67Mhz_secured.bin
SL2610 image generation (inside the container)
Build the System Manager app, then run the SL2610 image pipeline:
export SRSDK_DIR=/workspace/srsdk
cd /workspace/srsdk/examples
make sl2610_system_manager_rdk_defconfig BOARD=SL2610_RDK BUILD=SRSDK
make build BOARD=SL2610_RDK
make imagegen
Outputs:
System Manager sub-image:
examples/out/image/intermediate/sysmgr.subimgCompressed images:
examples/out/image/eMMCimg/USB boot inputs:
examples/out/image/usb_boot/
Copy outputs to the host
Because the SDK is mounted into the container, all build artifacts already appear on the host under <sdk-root>/examples/out/ and <sdk-root>/tools/srsdk_image_generator/Output/.
Flashing and debugging
Flashing/debugging uses host USB access and is typically run on the host OS:
SR110:
tools/openocd/scripts/flash_xspi_tcl.pySL2610:
tools/usb_boot_python_tool/USB_BOOT_TOOL/usb_boot_tool.py
See the platform guides for the full flash/debug flows:
docs/SR110/SR110_Build_and_Flash_with_CLI.mddocs/SL2610/SL2610_Build_and_Flash_with_CLI.md