NO-OS is a software framework by Analog Devices Inc for systems without OS, otherwise known as baremetal. This framework defines a common interface (API) for accessing typical baremetal peripherals such as GPIO, SPI, I2C, RTC, Timer, Interrupt Controller. This common API may be then used to initialize and control these peripherals in a common way across multiple microcontroller platforms. Currently supported platforms are Intel and Xilinx microprocessors and SoC's as well as Analog Devices' own precision microcontrollers and STMicroelectronics' STM32.
By using this common driver API, the NO-OS is able to provide reference projects for Analog Devices Inc evaluation boards running on various underlying hardware.
The majority of ADI's products are peripherals to a non-ADI digital engine (FPGA, microprocessor, or microcontroller). While there is major work underway on FPGAs (Xilinx and Altera) and microprocessors (running an operating system like Linux), the efforts on microcontrollers are fragmented due to the diverse nature of the microcontroller market. The goal of these projects (microcontroller/no-OS) is to be able to provide reference projects for lower end processors, which can't run Linux or aren't running a specific operating system, to help customers using microcontrollers with ADI parts.
The following list compiles all the projects that the NO-OS has support for. You may find the source code for each project at NO-OS's github repository.
Clone NO-OS with the
git clone --recursive https://github.com/analogdevicesinc/no-OS
If however you've already cloned NO-OS without the
--recursive flag, you may initialize all the submodules in an existing NO-OS clone with:
git submodule update --recursive
Prior to building a no-OS project, it is required to set up some environment variables so that the build process may find the necessary tools (compiler, linker, SDK etc.).
Use the following commands to prepare your environment for building no-OS projects:
Go in the project directory that should be built.
The build process creates a build directory in the project folder:
build ├── app ├── bsp ├── obj ├── release.elf └── tmp
.hex file has been generated, make sure the board is powered on, JTAG cable connected and use the following commands to upload the program to the board or debug.
Uploading the binary to target is generically achieved with:
$ make run
However, debugging interface might be different across platforms and the specifics are documented below.