- Open AT OS
Open AT OS is an
operating systemprovided by Wavecomtogether with its CPUs.It basically provides what some other operating systems do, with the particularity to natively provide GSM related functions such as GSM voice calls or data transfer related APIs… On Wavecom CPUs, the Application binary is downloaded beside the GSM function binary and both are executed “at the same time” on the processor as shown in the picture below.
Open AT OS Introduction
Wavecom firstly introduced the Open AT V1.0 in 2001. It was basically allowing a developer to embed directly its application on a GSM modem. As such it was only allowing an application to send AT commands to the GSM firmware not on the UART as one would do when using a micro-controller connected to a modem, but internally between the application binary and the GSM Firmware Binary. At that time the Open AT OS was only known as Open AT.
The first major improvement: the DOTA feature.
In 2003 Wavecom introduced the V2.0 that was supporting the ability for a developer to download over the air an update of his application and install it instead of the existing application. This was revolutionary by that time as none was providing the ability to upgrade over a GSM network the application that was executed aside the GSM Stack.
In 2005 the V3.0 extended the “DOTA” feature to the GSM firmware. The concept remains the same but then the application had the capability to trigger the upgrade of the GSM Firmware over the GSM Network. It also introduced the Application Developer Layer (ADL) allowing the access to GSM related services not only through AT commands but also through direct functions. It was in deed much suitable or an application to directly call a function rather than sending an AT command on a fake internal UART.
The second major improvement: Real-Time.
In 2006, the V4.0 was introduced to cope with guarantied response time to interrupts. Real-Time as a feature was introduced well before Wavecom even existed but an interesting point out of the v4.0 is that it allows fixed response time to interrupts even during GSM activities of the GSM Modem or CPU. Thus one can benefit from both guarantied response time to interrupt and at the same time benefit from the GSM related services of the OS such as place a GSM call, look for the network or start a GPRS data transfer.The interest of the move is that it permits to a developer to cope with time critical request on a CPU together with successfully being able to initiate GSM calls and data transfer without having to be an expert in GSM: any embedded software developer would be able to do it.The drawback is that the guarantied response time (though is depends on the underlying processor) would rather be mesurable in milliseconds than micros. In deed the OS would basically provide the highest priority to the GSM related interrupts rather that to the application one…
Event Based. The programming scheme to be used in programs to be executed on Open AT OS is event based. It means that oppositely to batch programming in the main() one would only subscribe to events that would trigger the execution of some code that would be located in the “call-back” function of the event.
Multitasked. Open AT OS supports static multitasking. A developer is able to define statically at the init of the application the number of tasks it would be using. The communication between tasks are made through fairly well known mechanism such as mail boxes, message queues, shared memory areas and their synchronisation can be done through semaphores.
Pre-emptive. The scheduling policy of the OS is fully pre-emptive. One has to define a level of priority for each defined tasks. It is not possible to define the same level of priority for different tasks.
Real-Time. The response time to interruption is guarantied what ever the state of the GSM firmware. It allows an embedded developer to design and execute time critical processes and to benefit from GSM services.
DOTA allows the application to start its own upgrade or initiate the upgrade of the GSM Firmware. This implies both have been downloaded on the processor's memory (usually over the air). Once starting the upgrade process, the Open AT built-in upgrade agent would perform the install and reboot the product when done.
The Embedded software architecture of the platform is the following (from highest priority to lowest):
* GSM Interrupt handler
* Open AT Low Level Interrupt handler
* GSM Stack Tasks
* Open AT High Level Interrupt handler
* GSM AT Parser
* Open AT Tasks
* Idle Task
The GSM Interrupt handler performs all necessary action to be executed by the processor or the modem when receiving an interrupt from the GSM Radio.
The Open AT Low Level Interrupt Handler is the second highest priority process on the platform. It is designed to perform asynchronous time critical operations. Its code would start being executed within 1 ms) upon interrupt detection. It is design to perform very short operations such as value acquisition and storage in RAM (for ex in a circular buffer)
The GSM Stack Tasks are performing all necessary actions to be performed to carry out GSM Calls, data transfer, network synchronisation, roaming, base-station switch…
The Open AT High Level Interrupt Handler or sometime called the Open AT interrupt task has been designed to perform long or resources demanding operation such as complex calculation or value acquisition report creation and storage in Flash Memory. This operations would have to be performed asynchronously and would not be time critical.
The AT Parser task is managing the parsing of AT commands received either from external CPU or from the embedded Application.
The Open AT Application tasksis the core of the application. It is design to execute high level processes that are not time critical.
Constraints on time critical application:This software architecture implies that the processing performed in the low level handler shall be as quick as possible (for example flash writing will not be allowed by the OS in the low level handler. Yet acquiring / incrementing a value and storing it in a circular buffer in RAM is a typical use case to be performed in the low level handler). The Open AT OS creates an exception when detecting a rogue function calls in the Low level handler as it would endanger the good behaviour of the GSM stack. Much in the same way, loops, cases memory allocation are not allowed either in the low level handler.
Managed interrupts The Open AT Low level interrupt handler can launch code execution associated to HW Timer / DSP / SPI / External interruption
Memory Access ProtectionTo prevent rogue memory access between the GSM firmware and the application, a specific RAM / Flash area is allocated to the application tasks on one side and to the Firmware on the other side. Depending on the platform the mechanism protecting the memory areas is either software or hardware (MPU). All new processors from Wavecom are coming with at least MPU.If the code is trying to access a not authorized memory area, an exception occurs reseting the processor or the modem.
Plug-Ins to Open AT OS
What is a Plug-In to the Open AT OS?Basically a plug is a C library provided either by Wavecom or by other M2M actors to provide additional feature to the OS. By doing so the size of the OS doesn't grows as fast as new plug ins are launched... And third party can also provide their own plug in to M2M Players. The other interresting point of providing some feature under C library is that when building the final application only the code related to the function called in the application is included during link in the final binary code.
What kind of Plug-Ins can I find on top of Open AT OS?Several are available among of them the:TCP/IP Plug in providing and IPv4 TCP/IP stack.Internet Protocol PLug in providing a suite of Internet Protocols such as FTP, HTTP, SMTP, POP3, DHCP, SNMP...C-GPS to provide the CPU with GPS positionning technologyM2M Developer Suite to allow rapid creation of end to end M2M2 services.
The Open AT Development Environment is built on Eclipse and provides the following elements:
Target Monitoring Tool (called TMT): it is used to display the traces coming from the CPU when executing the application. It allows also to interprete the "back-traces" for post-mortem debugging when the CPU has crashed.
Terminal Emulator provide basically a cponsole to control the CPU
Remote Task Environment: it is used to execute the application on PC for eased debugging.
* [http://www.wavecom.com/openat Wavecom Open AT Page]
* [http://www.wavecom.com/modules/movie/scenes/news/index.php?fuseAction=article&rubric=newsCorporate2001&article=news_Wavecom_Launches_Open_Software_Platform Open AT v1.0 Press Release]
* [http://www.wavecom.com/modules/movie/scenes/news/index.php?fuseAction=article&rubric=newsCorporate2003&article=news_Wavecom_Releases_Open_AT_2.0 Open AT v2.0 Press Release]
* [http://www.wavecom.com/modules/movie/scenes/news/index.php?fuseAction=article&rubric=newsCorporate2005&article=news_Wavecom_Releases_OpenAT3 Open AT v3.0 Press Release]
* [http://www.wavecom.com/modules/movie/scenes/news/index.php?fuseAction=article&rubric=newsCorporate&article=news_openat2 Open AT v6.0 Press Release]
* [http://www.trintel.co.za/products_os.htm Open AT OS for Industrial Wireless Products]
* [http://embedded-system.net/wavecom-open-at-software-for-embedded-cellular-developers.html Publication on Open AT OS in the embedded world]
* [http://www.electronicscomponentsworld.com/articleView~idArticle~72519_62320501530102007.html Publication on Open AT]
* [http://www.wavecom.com/internetplugin Link to Internet Plug-In]
* [http://www.wavecom.com/c-gps Link to C-GPS Plug-In]
* [http://www.wavecom.com/openatlua Link to Open AT LUA Plug-In Official Page]
* [http://www.wavecom.com/lua/wiki/tiki-index.php Link to Open AT LUA Wiki]
* [http://www.anyware-tech.com/fr/m2m/supports/m2m_developer_suite.html Anyware Technologies M2M Developer Suite]
* [http://www.wavecom.com/media/files/bluepapers/paper001.pdf White paper on Open AT usage in the M2M and Automotive market]
Wikimedia Foundation. 2010.