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.
NO-OS is an open-source software, and its official repository is NO-OS Github Repository. You are free to use and distribute NO-OS, provided that you comply with the license.
An in-depth article about no-OS internal structure is available at our webpage Understanding and Using the No-OS and Platform Drivers.
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 --recursive
flag:
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 --init
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
Once the .elf
or .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
Use the following command to launch the SDK associated to the used platform in order to be able to debug graphically by clicking the debug button:
$ make sdkopen
Fore more details about the available make rules, check out this page.