What is fido and why is this product significant?
fido is a new family of 32-bit microcontrollers, with a unique new architecture that directly addresses the key challenges facing embedded systems designers. Although the architecture is brand new, we made the instruction set compatible with the 68000 (CPU32+). This is arguably the most widely known and used instruction set in the embedded market today. The bugs in the development tools have all been worked out long ago, providing a very mature and reliable toolchain upon which fido resides.
In recognition of its unique capabilities, fido was awarded the 2006 Engineers’ Choice Award by readers of Control Engineering magazine.
How is fido different from other 32-bit communication controllers?
Firstly, in keeping with our long life-cycle commitment, the fido family is guaranteed to be in production through at least 2020. Our intent is to keep the parts in full production for as long as we have customers purchasing them.
fido was designed from the ground up for embedded control and communications applications. It has an innovative new architecture that redefines the boundaries between hardware and software, providing deterministic performance with its unique “RTOS Kernel in a Chip”. This, along with the flexibility of programmable I/O peripherals, distinguishes fido from other microcontrollers. fido combines these new features with something familiar - the 68000 instruction set. In addition, we have included features on the chip specifically to make it much easier to do system test and debug during development.
Why is it called fido?
fido is an acronym for flexible input, deterministic output. This captures two of the essential benefits of the architecture. “Flexible input” refers to our UIC peripheral engine and “deterministic output” refers to the unique real-time and safety-critical features provided by the new architecture. However the fido brand is also intended to capture the imagination of our embedded customer base. Since fido redefines the boundary between hardware and software and takes a different architectural approach – it is different than other microcontrollers on the market, yet it is powerful and reliable. fido is the embedded design engineer’s best friend.
Your materials talk about moving tasks from software to silicon – can you explain that?
Conventional wisdom said that the microcontroller silicon should be general purpose in nature and that software should be developed to meet specific application needs. This approach allowed semiconductor manufacturers to address a wide range of markets, putting the burden of application development entirely at the feet of the customer.
It has become widely recognized that embedded software development is now the longest and most expensive part of system design. In a survey carried at the 2006 Embedded Systems conference, 63% of developers said that debugging was the most significant problem that they encounter.
Innovasic took a fresh approach to the design of the fido family. We moved some very specific Real-Time Operating System (RTOS) functions into the silicon to provide exceptional real-time control capability and to allow our customers to develop and debug their code much faster than is possible on conventional microcontrollers. Context switching, context management, scheduling, priority control and memory protection are all built-in to the fido chip. We call this capability “RTOS Kernel in a Chip” and it doesn’t exist on other microcontrollers. For some applications, this capability eliminates the need for an RTOS altogether. For others, RTOS performance is no longer an issue for the most demanding software tasks
We took the exact opposite approach with our peripheral set. We made the I/O peripherals programmable so that almost any permutation of I/O protocols can be supported by a single fido part number. Customers told us that they are often forced to use multiple members of a microcontroller family to address different I/O requirements. This not only causes inventory management issues, since multiple part numbers have to be purchased and managed in relatively low quantities, but it also raises the obsolescence concern again. Exposure to multiple part numbers increases the likelihood of encountering an end of life notice with at least one of these parts. By allowing the user to select the peripheral functionality in software, one fido part number can address multiple product designs.
What is a UIC?
UIC stands for Universal I/O Controller – our programmable I/O peripheral. Each UIC is a dedicated RISC engine designed to perform the function of an I/O peripheral. By pre-loading one of our standard libraries into the UIC, it will behave as any of the following: Dual UART, Smart GPIO, 10/100 Ethernet, CAN, I2C or SPI. Even proprietary customer protocols can be supported.
What is the fido “Context Manager”?
fido has a unique architecture that incorporates an “RTOS Kernel in a Chip”. The fido Context Manager carries out these RTOS Kernel functions and is built right into the silicon. The Context Manager performs all of the following functions: scheduling, priority control, context switching, memory protection, timer control and management of five concurrent contexts. No other microcontroller on the market today can do this.
fido has five Hardware Contexts on the chip itself enabling it to manage five distinct tasks without requiring the services of an RTOS. This means that up to five interrupt-driven or timer-driven events can be handled deterministically entirely within the silicon. More than five threads can be handled by putting multiple software threads into some Hardware Contexts. The benefits of the fido “RTOS Kernel in a Chip” approach are:
- An on-chip priority-based preemptive scheduler manages context execution automatically with no software overhead
- Context switching is deterministic and can be accomplished in a single clock cycle
- Priority control is unified and priorities are assigned to interrupts, contexts and even DMA, peripheral I/O data transfers and external bus masters – a high priority context will interrupt a lower priority DMA transfer with no software overhead or jitter
- Context timers ensure that threads are exited whenever a task takes too long or gets locked up – preventing system crashes
- On-chip memory protection ensures that one thread cannot step on the protected memory space of another – code changes in one task cannot corrupt previously tested threads
- Fail-safe capabilities that are impossible with an RTOS are now available - a fatal fault (such as a double bus fault) will stop only the affected context and is reported to the supervisor context – there is no interruption of other tasks and the supervisor context can correct the error
What is a “Hardware Context”?
In embedded systems, software contexts are used to isolate tasks that need to be performed reliably, usually under interrupt or timer control. Often these tasks are either time-critical or safety-critical. Examples would be the shut down of a machine when an emergency condition is detected. Or, the placement of a component on an assembly when the assembly is in position on a production line. When these events occur, it is critical that the task be executed reliably and within a defined time window.
When software contexts are managed in the RTOS, there is room for error. Depending upon the exact state of the application software and the RTOS (Real Time Operating System), it can take an unpredictable number of clock cycles to switch contexts. This causes jitter. It is the system designer’s task to spend an inordinate amount of time tweaking the code or increasing the clock speed to arrive at the point that the jitter is acceptable. Even then, without endless hours of testing, it’s hard to be 100 percent certain that jitter will always be under control under all operating conditions.
The situation is even worse with safety-critical situations where the system designer just cannot allow the system to fail even once, under any operating condition. Furthermore, an intermittent bug in another part of the software cannot ever be allowed to impact the operation of a safety-critical function. Testing of all of the possible operating scenarios takes a tremendous amount of development and debug time.
By putting context management and other RTOS Kernel functions into the silicon, fido has redefined the solution. fido has five Hardware Contexts (link) on the chip itself enabling it to manage five distinct tasks without requiring the services of an RTOS. A Hardware Context includes the complete set of registers associated with each independent software task. The Hardware Context is also linked to a context timer and memory protection circuitry that provide time- and space-partitioning between the contexts. The space- and time-partitioning within the chip ensures that one context cannot "step on" another and that no context can ever "freeze." In addition, the chip keeps track of which context is being executed - greatly simplifying debug efforts. To learn more about time- and space-partitioning on the fido1100, click this link.
“Deterministic Cache” sounds like an oxymoron – what is it?
Since fido is addressing control applications that require deterministic response, we want to eliminate jitter. One major cause of jitter is the cache on modern processor cores. Cache is used to help overcome the performance bottleneck of processors that have to fetch instructions from memory. (RISC processors really need a Cache since more instructions have to be executed to carry out a task). The problem is that the contents of the cache depends on what was previously executed. When an interrupt occurs, the cache may or may not have the correct code pre-loaded. Thus a conventional cache is not deterministic.
With fido, once again, we have taken a different approach. We still wanted a cache to speed up the execution of frequently used code blocks. However by allowing the customer to decide which code resides permanently in the cache, jitter is eliminated. We also provide profiling tools to easily allow the customer to identify frequently executed code blocks. It is this very reason that developers of real-time control systems often prefer not to use cache or disable the cache in the microcontroller.
You claim special debug capabilities – what are they and why are they important?
Since debug has been identified as a major development challenge in the embedded market, we decided to address this directly within the chip. By adding extra capability into the chip, we can provide debug features not found in other microcontrollers. For our marketplace, we think this will take a huge burden off the customer and make it much easier, faster and hence less costly to get products to market.
SPIDER (Software Profiling and Integrated Debug EnviRonment) is fido’s debug tool, providing the customer with some unique and very powerful functionality. These include true hardware single stepping without emulation, the ability to single step in one context while others run at full speed, an unlimited trace buffer that can reside anywhere in memory and context-aware breakpoints that minimize code instrumentation. In addition, you can set up complex chains of break/watch points to capture that elusive bug.
What software tools do you provide?
The fido development kit includes a full suite of development tools. The industry-standard Eclipse IDE (Integrated Development Environment) encapsulates the toolchain. The Sourcery G++ GNU Toolchain from Codesourcery is included. This is built upon the well-established CPU32+ (68000) GNU toolchain. Codesourcery is a leading supplier of GNU tools and is committed to providing full ongoing support and maintenance. The standard GNU tools have been enhanced to provide features and debug capabilities not found on other microcontrollers. In addition, the entire development environment comes with a simple application that takes away all of the complexity from installation. The entire toolchain can be installed and ready to run in minutes.
Who are Innovasic's ecosystem partners?
Codesourcery is supporting the fido family with its Sourcery G++ GNU Toolchain. In addition, we have partnered with Live Oak Logic and Mocom Software GmbH to provide custom software, hardware and integration services for our customers. We plan to release additional ecosystem announcements in the coming months.
What are the target applications for the fido family?
The fido family is targeted at embedded control and communications applications. These applications emphasize control capability and peripheral support rather than raw computational power. The applications tend to be interrupt-driven and must go through rigorous and lengthy test and debug cycles. Hard real-time control applications are the most demanding, often requiring multiple microcontrollers and dedicated custom interfaces. Safety-critical applications are also very demanding and require extensive software development, debug and certification cycles to ensure fail-safe operation. fido uniquely addresses these applications with new features not found in any other controller on the market. fido is designed for applications that include PLC I/O modules, communication control modules, industrial Ethernet adapters, motion control interfaces, medical instruments, avionics controls, device-level networking and safety-critical automation systems.
Have you announced any customer wins?
Customers are working with the fido1100 under non-disclosure agreement for use in their future products. We hope to get permission to announce specific design wins shortly. We have been shipping development kits to customers since Q4 2006.
What other products are planned for the fido roadmap?
The fido1100 is the first product in the family. Other products are planned that will continue to address key challenges in embedded control and communications design. Features such as Industrial Ethernet support, Ethernet switching, security enhancements, USB, embedded FLASH and FPU are planned. We are currently in discussions with customers to finalize the feature set for the next members of the product family and we’ll be unveiling these shortly. If you’d like to be notified of these, please subscribe to our mailing list.
How do I purchase a fido Evaluation Kit?
Evaluation kits with fido1100 silicon, evaluation board, software tool suite and documentation are available for immediate shipment. The price of the evaluation kit is $499 USD and the fido1100 microcontroller is available at $9.95 USD in quantities of 1,000.