Wake Up, COM


  • Page 1 of 1
    Bookmark and Share

Congratulations! You just received your Computer-on-Module (COM) starter kit and you can’t wait to make it hum. Thank your boss for having enough smarts (and budget) to let you buy a complete kit that actually does run out of the box. Simply plug it in and locate the power button; after all, the design is based upon Intel’s reference design for ATX power mode used in PCs worldwide.

Pity the poor developers who only bought the processor module. Unwittingly, they are taking a much more precarious development path. After they design and build a prototype carrier board, they will plug into their COM Express or Qseven module only to find that it won’t boot.

While interoperability continues to plague COM standards, the typical no-boot scenarios have nothing to do with reserved pins or optional versus required features. Root causes include BIOS initialization, power management, power sequencing, CMOS setting retention and AT/ATX power mode incompatibilities. Ironically, COM standards remain strangely silent (agnostic) with respect to these “gotchas.”

BIOS firmware is responsible for initializing all core subsystems as well as I/O controllers. But the standard BIOS on the module doesn’t know about the legacy serial ports, FPGAs or other I/O on your carrier. In other words, plug and pray. Your COM vendor will likely require a minimum order quantity of 100-200 modules to customize the BIOS for you.

Power sequencing is even more out of your control. Processor and LAN controller vendors created many optimized power rails to reduce power consumption in laptop or notebook systems. Coupled with main power (+5V or +12V), the main standby rail and the real-time clock (RTC) battery voltage, these must rise and fall in a precise way or the chipset is vulnerable to classic CMOS latch-up. Some COMs now use dedicated microcontrollers to perform most of the power sequencing, which works fairly well as long as your carrier board implementation takes care of the RTC voltage, main standby rail and main power rail. A few vendors have even eliminated the need to provide standby at all, generating it locally when absent. But you can never be sure your design avoids latch-up because the module vendor will not share the details of that part of their COM design. 

CMOS settings are responsible for enabling/disabling some features of the hardware and forcing speed and timing selections of others. Once you get settings that work on the reference carrier board, you want to save those settings, unplug the module and install it on your custom carrier. However, those settings are retained by the CMOS coin battery, which resides on the carrier board. Unplugging the module from the carrier disconnects the voltage that retains your optimized settings, so the module reverts to the factory default settings. Catch 22 anyone?

Power management is based on the ACPI Specification, which describes system states ranging from on (full power) to soft off (no power except for standby rails). The intermediate states save CPU state information to RAM, or copy RAM to disk (HDD or SSD). ACPI is intended for use with ATX power supplies, which provide +5V standby and handshaking lines such as PWROK/PWRGOOD (the power supply says that the power rails are up and ready) and PSON# (the chipset tells the power supply to turn on or off). Don’t forget to incorporate a “power” button, which tells the system to power on or wake up in the first place. Various systems may or may not wake up when power is initially applied.

To wake your COM, you need a keyboard, touchscreen or mouse movement. Or simply press a power button. Wake on LAN requires support in the network controller hardware along with support in the Ethernet driver. And if you want to wake in response to activity on a USB device, good luck. 

You’re not using an ATX power supply? Join the ranks. “AT mode” refers to turning on and off a system and operating the system from a single voltage power supply. No standby rails. No power buttons. No handshaking lines. Luckily, many module manufacturers have already been forced to deal with this problem. You just need to know to order the right configuration.

To design your custom carrier, simply copy your vendor’s reference schematics with minimal changes. Don’t even think about plugging in a competing vendor’s COM. Because whether powering on for the first time or resuming from the deepest of hibernation slumbers, waking up a module-based embedded system requires substantial knowledge of and carrier customization to the module’s implementation.