SHIPv5 Boot System

From Serious Documentation
Jump to: navigation, search

Starting in SHIPv5 all SIMs and SCMs now have a multi-stage boot loader process. This enables the modules's firmware and data to be upgraded in "offline" mode (when the GUI or application is not running) or, in some cases, in "online" mode in the background while the GUI/application is still operating.

The bootloader has three elements/phases:SHIPPaddle, SHIPTug and the application (SHIPEngine in the case of HMI modules).

SHIPPaddle

SHIPPaddle, or " Paddle" is a very tiny (<16kB) stage 0 bootloader which loads and runs SHIPTug (the next stage of boot).

  • On platforms with Flash-based MCUs (SIM115, SIM225, SIM231, SIM243, SIM543, SCM208), Paddle occupies the reset vector and a small portion of the MCU's program flash
  • On platforms with MPUs without on-chip execution Flash (SIM535, SIMx52, SIMx62, SCM318)), Paddle occupies the first 8kB or 16kB of the boot serial flash.

SHIPPaddle loads and transfers control to SHIPTug on every system reboot.

SHIPTug

SHIPTug, or " Tug" is a second stage bootloader application that includes the SHIPBridge protocol over UART and USB.

  • On most SIMs, SHIPTug is loaded by SHIPPaddle into RAM and run from RAM
  • On most SIMs, two copies of SHIPTug (primary and backup) are stored in a fixed locations in serial flash
  • SHIPTug (via SHIPBridge) allows you to update SHIPPaddle, SHIPTug, SHIPEngine, Cargo, and more over-the-wire and from SHIPTide
  • Similarly Tug (via SHIPBridge) allows you over-the-wire to access/read/write any file system on the SIM, including plugged in USB thumb drives and SDCards, from your host controller without your host controller having a USB or File System stack via SHIPBridge messages

SHIPTug is responsible, in the absence of a connected external system telling it not to, for loading and transferring control to the runtime application. On Serious Integrated HMI Modules (SIMs) this application is SHIPEngine. On Serious Comms/Control Modules, this is the user application developed with the SHIPWare software platform.

SHIPEngine

Included with every Serious Integrated HMI Module (SIM) is the SHIPEngine GUI management and rendering engine.

SHIPEngine, or " Engine":

  • is the complete GUI rendering and management engine for the platform
  • loads and executes the GUI file (a "cargo" file) created by the SHIPTide IDE
  • includes SHIPBridge, including the data services and file transfer/upgrade services
  • can run user code scripts developed and included in the cargo

Some files on some platforms cannot be upgraded while SHIPEngine is running, for example the SHIPEngine firmware on SIMs with Flash-based MCUs. All files can be updated by taking the SIM offline and rebooting into SHIPTug.