OVERVIEW

FirmWorks has developed a powerful implementation of IEEE Std. 1275-1994 "Open Firmware" boot firmware that has many advantages over other available implementations. Among others, the FirmWorks Open Firmware implementation (OFW) supports booting:

The FirmWorks OFW includes a robust suite of bringup and debug tools that contribute to reduced new product development cycles and quick time to market. Its compact size permits the use of smaller ROM parts resulting in reduced manufacturing cost.

TECHNOLOGY

A primary design goal of the FirmWorks OFW has been development of a technology that will reduce the cost of firmware development, deployment, maintenance and support for products incorporating this OFW.

The FirmWorks OFW provides key benefits including the following:

  1. Faster time to market for new products.
  2. Reduced cost of firmware and hardware development, deployment, maintenance and support.
  3. These two benefits are made possible by:

  4. Reduced manufacturing cost.
  5. Due to the small size of FirmWorks's compressed ROM image and its ability to decompress itself "on the fly" at boot time, our customers are able to minimize their ROM size resulting in significant hardware cost savings on every unit shipped.

  6. Industry's fastest boot times of under 3 seconds on CHRP and DNARD.

The most important features and functions of this code base, beyond basic system/OS booting, are outlined below. An additional feature list follows.

  1. Forth source level debugger
  2. Breakpoint, single-step and trace high-level Forth code. (Unlike some public-domain Forth debuggers, this one works well and reliably).

  3. FCode debugger
  4. Debug and trace FCode as it is being detokenized from device ROMs.

  5. Forth stack tracing after an exception
  6. Used to find out what happened after something goes wrong.

  7. patch utility
  8. Instead of requiring a re-compilation to correct errors in Forth words, patch is an extremely useful way to correct Forth dictionary errors "in place". This enables fast debugging and experimental changes in the development lab as well as enabling correction of OFW ROM errors in the field.

  9. Start-up tracing
  10. Under control of a (software and/or hardware) diagnostic switch, the firmware reports its progress through its initialization sequence.

  11. Early start-up interruption/debugging
  12. Under control of a (software and/or hardware) diagnostic switch, the firmware gives the developer interactive control at a very early stage of the initialization sequence, allowing easy debugging of start-up problems.

  13. Full support for elided pathname components
  14. This feature enables the firmware to locate the desired device node even though the user entered an abbreviated pathname. This saves significant time and frustration for developers. The use of abbreviated pathnames also helps with code portability, because the user can specify partial pathnames in source code so the code doesn't have to change if the parent structure of a device changes.

  15. "Drop-in module" ROM structure
  16. FirmWorks's ROM images consist of a set of self-identifying independently-compiled "drop-in modules" which are pieced together by concatenation. This allows FirmWorks to separate the platform-dependent bridge and memory start-up code from the generic part of the firmware, and makes it easy to add or delete FCode drivers and optional modules. This structure makes it easy to maintain consistency in the source base while still doing the necessary platform-specific adaptations.

  17. gunzip auto-inflation for load images and drop-in modules
  18. Load images and drop-in modules can be compressed or not, and are automatically decompressed at boot-time if necessary. The decompressor is itself a module. This can speed up the OS load time, because the decompressor is faster than many I/O devices.

  19. Self-hosting, OS-independent builder with integrated tokenizer
  20. The firmware build process is totally self-contained, requiring no outside programs. builder includes a Forth cross-compiler, incremental compiler, FCode tokenizer, dependency manager (like make , but dependency management is automatic), release list support, compressor, and drop-in manager. builder is easily portable and runs on a wide variety of different CPUs and host OSes. (It is an extension of the same Forth core toolset that is embedded in the firmware). It also has an instruction set simulator that allows execution of a compiled firmware image on CPUs that are different from the target CPU (e.g. run PowerPC firmware on a SPARC processor).

  21. Client service debugging and tracing
  22. Debug the interaction between the OS and the firmware.

Additional beneficial features and functions of the FirmWorks OFW implementation.