Development with the Gecko OS API
This section covers the details of writing a Gecko OS app (App) in the C programming language using the Gecko OS API.
For overview material, see:
- Native API Overview
- Native API Features - a full list of Gecko OS API features
- What is a Gecko OS App?
- App Structure
- App Memory Sections
- App Execution Contexts
Development Workflow
The Gecko OS Studio (GSS) manages downloading the Gecko OS SDK for your platform, and provides example applications to get you started. See:
For example applications, see:
App Size Limits and Optimization
Gecko OS Apps execute from the MCU's internal flash. The flash available for an App depends on the hardware platform.
The size of an App's executable/read-only code may not exceed these values.
The implementation of Gecko OS APIs is included in Gecko OS. API calls only reference the Gecko OS implementations. This greatly reduces the required size of a Gecko OS App.
To optimize the size of a Gecko OS App, wherever possible use:
- native API functions and commands
- read-only arrays
- read-only variables
- text as const
File Size Limit
There is no limit to the size of an individual file other than the size of the extended or bulk serial flash connected to the Gecko OS hardware. Bulk serial flash up to 128MBytes may be used.
Files are typically opened and written to completion with the size known a-priori, however the file log API provides the option to append to an existing file which is useful for data logging. The minimum size of a file is 4KByte.
See the File System description and the File System API for additional information.
For log file format, see File System, Log Files .
SDK Profiler Utility
The SDK Profiler Utility captures timing data for delimited sections of code. The profiler reporting layout is determined by defining named profilers, which can be nested, and referring to a named profiler in the
PROFILER_BEGIN
and
PROFILER_END
macros that delimit a code section.
The utility/profiler example app demonstrates how to use the profiler. This example app also demonstrates using event handling and state management to manage reporting, and creating custom commands.