Using bare metal code can be quick and efficient and might even be necessary at times, but is often not scalable enough. And more often than not, can be a pain to debug! Enter the world of embedded C software drivers that abstract out some of the hardware complexity of the underlying microcontroller and facilitate faster time to market with production ready software.
The ADuCM3027/ADuCM3029 and ADuCM4050 ultra low power microcontrollers are accompanied by device drivers, referred to as 'Device Family Packs' (DFP). These drivers are released in the form of CMSIS packs, that enable fast installation and easy project configuration across tool chains such as IAR Embedded Workbench, Keil MDK and ADI's own Cross Core Embedded Studio.
The device drivers themselves are developed by a professional embedded software team. Key features of the DFP(s) include:
- Simple to use
- Minimal code and data footprint
- Minimal run-time overhead
- Do not require dynamic memory allocation by device drivers
- Support switching b/w DMA and interrupt modes at run-time
- MISRA C-2012 compliant
The DFP and BSP ('Board Support Package') for the MCU Cog boards (EV-COG-AD3029 and EV-COG-AD4050), provide basic examples to help you get started with software development. For help with finding and installing the device drivers - refer to the quick start guides (available for IAR and CCES today) at the links below.
ADuCM302x MCU Cog Quick Start Guide [Analog Devices Wiki]
ADuCM4050 MCU Cog Quick Start Guide [Analog Devices Wiki]
After installing the driver packs, refer to the references below for some useful documentation:
- Device Drivers User Guide: this is a PDF document that provides a good high level overview of the device drivers and their modes of operation. For example: if you are confused about the use of adi_xxx_Write() API functions vs adi_xxx_SubmitBuffer() API functions, this user guide will help you get a basic understanding of the underlying strategy behind these types of API functions. Look for this PDF document at a path similar to this: C:\Users\<username>\AppData\Roaming\IAR Embedded Workbench\PackRepo\AnalogDevices\ADuCM4x50_DFP\<revision>\Documents. See a snapshot below for an example figure from the device drivers user guide that helps grasp the concept of a 'non-blocking' API function such as adi_xxx_SubmitBuffer() .
- HTML documentation: The DFP(s) come with an HTML documentation that provides a handy way to navigate through API functions and their descriptions. Look for the index.html file at a path similar to this one: C:\Users\<username>\AppData\Roaming\IAR Embedded Workbench\PackRepo\AnalogDevices\ADuCM4x50_DFP\<revision>\Documents\html and open this file using your internet browser.