Atmosic Archive Tool
Overview
The Atmosic Archive Tool is used to bundle multiple binaries into a single archive (.atm) file with metadata such as SDK version, device information, and more.
The .atm file is available as a standalone archive file, can unpack the archive file and download the binaries to a device by Atmosic MP or Flash Programming tools or Archive tool directly.
The west extension command atm_arch is provided to allow users to generate the .atm archive file through a variety of sub commands.
Python Requirements
The following setup procedures are not required when using atmoautil (see OpenAir Utility).
The Atmosic Archive Tool using a Google protobuf file, atm_isp.proto to define the metadata structure to generate the python code directly.
The atm_isp.proto protobuf file is built from openair\tools\scripts\atm_isp.proto and the generated python code can be found under openair\tools\scripts\atm_isp_python.
To generate the python code from atm_isp.proto file requires protobuf and grpcio-tools Python packages. (Do not using protoc to avoid compatible issue with generated python code)
To install with the OpenAir requirements file which includes the installation of protobuf and grpcio-tools Python packages:
pip install -r openair/scripts/requirements.txt
To generate the python code from atm_isp.proto according to current protobuf and grpcio-tools Python package will be done automatically with west atm_arch command.
Use the command below to manually re-generate, if needed.
python -m grpc_tools.protoc --proto_path=openair\tools\scripts --python_out=openair\tools\scripts\atm_isp_python atm_isp.proto
Note
This operation may uninstall existing
protobufpackages and reinstall the latest versions compatible with your environment.Python 3.11 is not compatible with
grpcio-tools. It is recommended to use Python 3.10, Python 3.12 or a later version.
If needed, create a symbolic link or use a Python virtual environment:
For Linux:
sudo ln -s $(which python3) /usr/bin/python
For Windows:
mklink "C:\Path\To\Python\python3.exe" "C:\Path\To\Python\python.exe"
Note
On Windows:
you can use
where python3to locate the path of the Python executable.Ensure that the symlink or Python installation directory is included in the system PATH environment variable, or place the symlink in a directory that is already in the PATH.
West atm_arch Commands
Use the following command to view usage details:
west atm_arch --help
Generate Archive File
Before generating, ensure required images are built (see Advanced Build and Flash).
Required parameters:
BOARDAtmosic device (see board).APPSample application build directory.APP_NAMEName of the application.
Optional parameters:
MCUBOOTBuild directory for MCUboot.SPEBuild directory for Secure Processing Environment (SPE).ATMWSTK_PATHPath to the BLE Stack (default: openair/modules/hal_atmosic/<soc>/drivers/ble).ATMWSTKFixed Wireless Stack choice of FULL (see Atmosic BLE Stack).socATM33/e and ATM34/e series of Atmosic devices are supported. See soc.
Note
Optional parameters depend on the images generated by west build.
With Fixed BLE Stack
When west build with a fixed BLE stack (see Atmosic BLE Stack), the BLE Stack ELF file must be included in the archive.
To generate with BLE Stack ELF file:
--atmwstk_file <ATMWSTK_PATH>/atmwstk_<ATMWSTK>.elf
Note
the BLE Stack ELF file will be converted to binary automatically. And this requires the environment variable ZEPHYR_SDK_INSTALL_DIR to MUST be set.
With MCUboot
With fixed BLE Stack ELF:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.signed.bin \
--mcuboot_file build/<BOARD>/<MCUBOOT>/zephyr/zephyr.bin \
--atmwstk_file <ATMWSTK_PATH>/atmwstk_<ATMWSTK>.elf
Without fixed BLE Stack ELF:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.signed.bin \
--mcuboot_file build/<BOARD>/<MCUBOOT>/zephyr/zephyr.bin
Without MCUboot
Without fixed BLE Stack ELF:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin
Without BLE Stack ELF and Secure Debug enabled:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin \
--sec_dbg_enable
With Factory or Setting Data
With factory data file:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin \
--factory_data_file build/<BOARD>_ns/<APP>/zephyr/zephyr_factory.bin
With setting data file:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin \
--storage_data_file build/<BOARD>_ns/<APP>/zephyr/zephyr_settings.bin
Adding Extra Erase or Program Commands
Erase entire RRAM and flash before programming:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin \
--erase_all
Erase customized RRAM and flash regions:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin \
--erase_flash=0x203000,0x1000 \
--erase_rram=0x7F000,0x800
Program a user binary:
west atm_arch -o <BOARD>_<APP_NAME>.atm \
-p build/<BOARD>_ns/<APP>/zephyr/partition_info.map \
--app_file build/<BOARD>_ns/<APP>/zephyr/zephyr.bin \
--spe_file build/<BOARD>/<SPE>/zephyr/zephyr.bin \
--load_bin=user_demo.bin,0x200000
Show and Flash Archive File
Show archive information:
west atm_arch -i <BOARD>_<APP_NAME>.atm --show
Flash archive to device:
west atm_arch -i <BOARD>_<APP_NAME>.atm \
--openocd_pkg_root <OPENOCD_PKG_ROOT> --burn
or:
west atm_arch -i <BOARD>_<APP_NAME>.atm \
--openocd_pkg_root <OPENOCD_PKG_ROOT> --burn [--device <DEVICE_ID>] [--jlink]
Where:
--device <DEVICE_ID>Serial number of the programmer (see serial).--jlinkSpecify if using a J-Link interface. If omitted, the FTDI interface is assumed.OPENOCD_PKG_ROOTRoot path for OpenOCD (default: openair/modules/hal_atmosic).
Note
If both --device and --jlink are omitted, the J-Link interface is assumed by default.
Generate Archive File with Sysbuild
SB_CONFIG_ATM_ARCH enable to generate .atm file with all the built images by sysbuild (see Sysbuild and Flash).
west build -p always -b <BOARD>//ns <APP> --sysbuild -T <test_item> -DSB_CONFIG_ATM_ARCH=y
Note
Refer to sysbuild options (Atmosic Sysbuild Options) for detail.