LICENSED TECHNOLOGY IMPSPRGM™ is proprietary technology of LLC IMPSPRGM · supplied under a written Licence Agreement on a per-unit basis.
Licensing & IP →

IMPSPRGM · Interprocessor OS

A shared-resource runtime for telemetry and battery-powered devices. Reference design: SIM800C (SIMCom) + STM8 (STMicroelectronics) on a single PCB.

Licensed technology · supplied under a written Licence Agreement on a per-unit basis · international PCT application PCT/UZ2022/050001

The problem IMPSPRGM solves

A typical battery-powered telemetry node pairs a GSM/GPRS modem (for uplink) with a low-power MCU (for the real-time logic). The modem has a powerful 32-bit core, megabytes of flash, a TCP stack, Bluetooth and a large heap — but most of that silicon sits idle between radio windows. The MCU, meanwhile, is starved: it has to add an external EEPROM for keys, an extra Bluetooth chip for pairing, a hand-rolled floating-point library for the calibration curve, and a second clock domain to coordinate with the modem over AT-commands.

IMPSPRGM collapses this picture into one board and one project. The modem and the MCU run cooperating halves of the same program. Each chip is used at up to 100% of its capacity, and the host side no longer needs the extra memory chip, the extra radio, or the FPU emulation.

Reference silicon

The architecture is generic, but IMPSPRGM has been validated on the pair below, which is representative of a low-cost IoT node.

Property SIM800C · SIMCom STM8 · STMicroelectronics
Core 32-bit ARM (baseband SoC); runs SIMCom RTOS 8-bit STM8 (Harvard, 3-stage pipeline)
Clock · throughput Hundreds of MHz internally; MAC unit and fast integer math Up to 24 MHz · up to 20 MIPS; no hardware FPU
Flash Module contains the GSM firmware + a large user-code partition available via EAT 4 KB – 96 KB depending on part (STM8S, STM8L)
RAM Multiple MB region visible to EAT tasks 1 KB – 6 KB
EEPROM File-system on internal flash (EAT FS API) 128 B – 2 KB, 300 000 erase cycles
Radio Quad-band GSM 850/900/1800/1900, GPRS class 10/12, Bluetooth 3.0 (SPP/HFP/HSP)
Sleep ≈ 0.6 mA in Sleep Mode 1 (AT+CSCLK=1), wake via DTR / RI / GPIO / UART Halt ≈ sub-µA; Active-Halt keeps RTC
User-programmable runtime EAT (Embedded AT): multi-thread C apps sharing the module's scheduler, AT stack, TCP/UDP sockets, Bluetooth profiles, DNS, SMS, file system, flash writer Bare-metal C / SDCC / Cosmic

Sources: SIM800C Hardware Design v1.02 (SIMCom); SIM800 Series Embedded AT Application Note v1.03; SIM800 Series Bluetooth Application Note v1.04; STM8 Wikipedia article; STMicroelectronics STM8S product page.

Architecture at a glance

IMPSPRGM architecture — SIM800C + STM8 with three buses
Fig. 1 · Two independent cores share resources through three logical buses (Commands, Procedures, Interrupts) over a common physical transport.

The key decision in the design is that there is no master. Both cores run continuously, each with its own scheduler and its own interrupt stack. Instead of a master-slave UART dialog, IMPSPRGM exposes three logical buses that ride on the same physical link.

Bus 1 · Commands

A fixed, compact opcode table shared by both sides. An opcode is an architecture-neutral abstract instruction — READ_GPIO, WRITE_REG, SLEEP(ms), SOCKET_SEND. Each side implements the subset it can actually serve. This lets the same higher-level code run regardless of where the physical resource lives: when STM8 asks for SOCKET_SEND, the Translator routes it to the SIM800C; when SIM800C asks for READ_ADC(ch=3), the Translator routes it to STM8.

Bus 2 · Procedures

Remote procedure calls with typed arguments and a return value. This is how computation crosses the chip boundary. A procedure declared once (e.g. hmac_sha256(key_id, buf, len) → tag[32]) can be invoked from either side; the IMPSPRGM Translator marshals the arguments, routes them over the physical transport, schedules the callee in the caller's priority class, and returns the result. The caller blocks or takes a callback — like an OS system call.

Bus 3 · Interrupts

Asynchronous events: radio URCs, pulse-counter overflow on the water meter input, low-battery alarm, incoming Bluetooth pairing request. The IRQ bus delivers a short token (event id + 1–8 bytes of payload) and immediately releases the physical line. The receiving side either runs the handler inline or wakes the relevant task.

Translator

A small piece of firmware (identical binary logic on both cores, compiled for each ISA) that:

Physical transport

In the reference design the three logical buses multiplex onto:

Why one UART is enough

The SIM800C's AT port already runs at 115 200 Bd full-duplex. After flow control is enabled, the channel reaches > 90% of line rate for long frames. Since the Procedures bus is request/response and the Interrupts bus only carries short tokens, the average contention is low — the radio-side software spends most of its time waiting on the network anyway.

Sequence example · signing a telemetry packet

Sequence diagram — STM8 delegating HMAC-SHA256 to SIM800C's ARM core
Fig. 2 · The STM8 reads sensors, then delegates the cryptographic signature to the SIM800C's ARM core via the Procedures bus.

In a conventional design, the STM8 would either carry a bulky software HMAC implementation in its 8 KB of flash, or add an external secure element chip. With IMPSPRGM, the STM8 issues one remote procedure call:

// STM8 side — sign the telemetry frame before uplink
uint8_t tag[32];
imp_proc_call(
    PROC_HMAC_SHA256,        // procedure id, shared across chips
    KEY_ID_TELEMETRY,        // the SIM800C holds the key in its flash
    frame_buf, frame_len,    // input
    tag, sizeof(tag)         // output
);
imp_proc_call(
    PROC_TCP_SEND,
    SOCKET_UPLINK,
    frame_buf, frame_len,
    tag, sizeof(tag)
);
imp_cmd(CMD_SLEEP, 30000);   // hand control back to Halt for 30 s

What actually happens on the wire:

  1. STM8 marshals the call into a Procedures-bus frame on UART.
  2. SIM800C EAT wakes the crypto thread, looks up KEY_ID_TELEMETRY in its on-module flash file system, runs HMAC-SHA256 on the ARM core (≈ 30–50× faster than on the STM8 software routine).
  3. SIM800C reuses the already-open TCP socket to send the signed packet.
  4. A return token is sent back; the STM8's imp_proc_call unblocks.
  5. STM8 enters Halt. Total awake time: a few hundred milliseconds.

Shared resources — what falls off the BOM

The cost story of IMPSPRGM is not "we saved one chip". The SIM800C module is — to the board designer — an astonishingly rich SoC: it is really a 32-bit ARM system with megabytes of flash, a full TCP/IP stack, crypto, Bluetooth, an RTC with independent backup, an ADC, a PWM, an I²C master, an audio codec and a bootloader. In the conventional AT-slave topology, most of this silicon is wasted — the host MCU only gets to speak "send SMS" and "open socket". IMPSPRGM exposes every one of those internal resources to the host program through the Procedures bus, and each resource that becomes shared is one component that can be removed from the PCB. The categories below enumerate, point by point, everything the validation board lost.

Every resource IMPSPRGM shares — and every chip it removes

Seven categories, twenty-plus discrete components. Each row shows the traditional part on the left and the SIM800C-internal feature that replaces it — exposed to the STM8 as a single Procedure call or Command opcode.

Storage & Memory

EAT file system · flash writer API
I²C / SPI EEPROM (24C / 25Q)
Calibration tables and factory coefficients live in EAT flash partition. Read/write through fs_read / fs_write procedures.
External SPI-Flash (W25Q32 etc.)
Event logs, OTA staging buffer and ring-buffer telemetry cached in the module's user flash region.
External RAM / FRAM buffer
Heap on the ARM core is MCU-class — large frame buffers allocated there and read back by STM8 on demand.
DS3231 RTC + coin cell
SIM800C's independent RTC can be backed from capacitor, non-rechargeable or rechargeable battery (HW Design §5, Fig. 15–17). Time synced via AT+CNTP, read through rtc_get procedure.

Radio & Wireless

GSM + Bluetooth + coarse location
HC-05 / BLE Bluetooth chip
Built-in Bluetooth 3.0 stack: SPP, HFP/HSP profiles on SIM800C (Bluetooth App Note v1.04). Pairing requests arrive on the Interrupts bus; STM8 approves with one opcode.
Dedicated GPS module (NEO-6M, L80)
For coarse positioning — LBS (Location-By-cell-towers) via AT+CIPGSMLOC. Sub-km accuracy, no extra antenna, no 30 mA GPS current draw.
FM-receiver IC (Si4703 etc.)
Integrated FM radio on SIM800 family (SIM800C-DS has an FM antenna pad, HW Design §6.12) where the product needs broadcast audio.
USB-UART converter (CH340, CP2102)
Native USB 2.0 device in the module. Used for factory programming, field debug, and firmware download — no external bridge IC.

Security & Cryptography

on the SIM800C ARM core
Secure element (ATECC608, SE050)
Keys stored in the EAT file system, signed on the ARM core. HMAC-SHA256 / AES-128 executes 30–50× faster than on STM8 software.
External TLS co-processor
Module has SSL/TLS stack baked in (per R800C / SIM800 Software Features list). MQTT-over-TLS, HTTPS and FTPS available without any host-side crypto library.
Dedicated HW-RNG chip
TLS entropy pool seeded from GSM radio noise and internal timers — exposed as rand_get(n) procedure to the STM8.

Network Stacks & Protocols

full IP suite inside the modem
lwIP / uIP port on host MCU
Built-in TCP / UDP / PPP with up to 6 SOCKET channels (EAT App Note §SOCKET). STM8 only sees tcp_send / tcp_recv.
MQTT library in STM8 flash
Module carries an MQTT client (SIM800 Software Features: MQTT/NTP/FTP/HTTP). Saves 8–10 KB of STM8 flash and all the broker-state bookkeeping.
HTTP / FTP client code
HTTP and FTP are first-class AT/EAT commands. OTA images fetched directly, written to EAT FS, then trickled to STM8 via the Procedures bus.
NTP / DNS resolver in host
Built-in NTP (AT+CNTP) syncs the shared RTC; DNS resolver exposed as dns_query procedure.
Second UART channel for debug
GSM 07.10 MUX creates 4 virtual UARTs over the single physical line — one for Commands, one for Procedures, one for Interrupts, one for live debug.

Peripherals & Analog

ADC · PWM · I²C · GPIO
Second ADC IC / extra channels
SIM800C provides an auxiliary ADC (AT+CADC, HW Design §4.9) — adds one more analog input to the STM8's five.
I²C port expander (PCF8574)
Module exposes an I²C master (pulled to 2.8 V internally via 4.7 kΩ). Sensors connect directly to the modem and are read through i2c_xfer procedure.
PWM / buzzer driver IC
Built-in PWM output (200 Hz – 100 kHz, HW Design Table 31). Drives a buzzer or LED directly; frequency/duty set over the Commands bus.
Network-status LED driver
NETLIGHT pin drives the status LED directly — no extra transistor or driver needed.
Matrix keypad controller
Module provides up to 25 keypad pins. User input maps straight into Interrupt-bus events on the STM8.

Audio & Voice

codec · amplifier · TTS
External audio codec (WM8960)
Full audio path inside SIM800C: MIC+/−, SPK+/− with integrated PA, ESD-hardened. Voice calls, voicemail and DTMF work out of the box.
Speech synthesis IC / library
TTS (Text-To-Speech) is a documented software feature of SIM800 series — call tts_play("alarm level critical") from the STM8 and the module drives the speaker.
DTMF decoder chip
Incoming DTMF tones detected by the modem; delivered as Interrupt-bus events.

Boot, Debug & OTA

factory programming and field updates
External boot-loader chip
SIM800C's built-in USB / UART bootloader accepts factory firmware for both itself and (via IMPSPRGM) the STM8 — no JTAG/SWIM station on the production line.
Staging flash for STM8 image
New STM8 binary downloaded over GSM/HTTP into EAT FS, verified, streamed block-by-block into STM8's bootloader region via the Commands bus.
Separate UART debug header
Debug traces go over the MUX'd virtual UART and are delivered to a field laptop via the module's USB — no opening of the enclosure.
External watchdog IC
Both cores run their own watchdogs (SIM800C internal + STM8 IWDG/WWDG); IMPSPRGM keeps them mutually alive via the heartbeat opcode on the Interrupts bus.

Net effect on a typical telemetry node

7categories rewired
20+discrete components removed
~50%PCB cost reduction
up to 70%combined power draw reduction
−20.2 USDbattery BOM saving per unit

Power strategy

Energy on a battery-powered meter is dominated by whoever is awake when nobody needs to be. IMPSPRGM reshapes the timeline so that the two cores are awake in anti-phase:

On the validation board — an electronic water meter with integrated data-transfer system — this lowered the combined PCB power draw by up to 70% compared to the conventional master-slave design, and reduced the cost of the on-board battery stack by 20.2 USD per unit.

Where IMPSPRGM fits

References

Licensing & Intellectual Property

Commercial licensing model

IMPSPRGM™ is proprietary technology of LLC IMPSPRGM (Tashkent, Republic of Uzbekistan). The technology — including the reference firmware, the translator mechanism, the three-bus protocol, the hardware integration library and the supporting design files — is distributed exclusively under a written Licence Agreement between LLC IMPSPRGM and the Licensee.

The licence is granted on a per-unit (per-device) basis. The Licence Agreement specifies the exact number of end devices in which IMPSPRGM may be embedded, and any additional units above that number require either a licence extension or a new agreement.

Commercial inquiries and per-unit quotations: impsprgm@umail.uz

Copyright & PCT protection

The IMPSPRGM technology is protected under the international Patent Cooperation Treaty (PCT). The application was filed electronically via ePCT-Filing and acknowledged by the Receiving Office.

Electronic Receipt

The Receiving Office (RO/UZ) acknowledges receipt of the international PCT application filed using ePCT-Filing. An Application Number and Date of Receipt have been automatically assigned (Administrative Instructions, Part 7).

Submission Number050001
Application NumberPCT/UZ2022/050001
Date of Receipt29 December 2022
Receiving OfficeIntellectual Property Agency under the Ministry of Justice of the Republic of Uzbekistan (RO/UZ)

← Back to home