Boeing PCI-based Generic Processing Engine

Boeing PCI-based Generic Processing Engine
Learn on yet another successful integration of our products

. Boeing/Sunnyvale has developed a Generic Processing Engine (GPE) on a PCI card. The product had to fit to as many markets as possible, and the Boeing team's design goal was to have the GPE designed to support Windows 98, NT, 2000, Linux, Solaris SPARC, and Solaris on x86.
It was obvious that writing hardware access code for each platform type, would be a time and resources consuming process. "There would also be software maintenance problems, since future changes to the software would effect numerous versions of the code" Said Mr. Ronald Wallace, Boeing's Senior Software Engineer.
Boeing needed a robust development tool, that would enable quick and easy development of cross platform hardware access code, without requiring the developers to have preliminary kernel knowledge.
An Internet search resulted in Jungo's WinDriver as the desired solution.

Boeing's GPE Program

Boeing/Sunnyvale has been in the business of providing high-speed signal processing and signal intelligence solutions for government and commercial applications for many years. These solutions employ massive parallel processing and re-programmable hardware to achieve computationally intensive processing solutions.

.Using their knowledge and experience in this field, Boeing/Sunnyvale developed a Generic Processing Engine (GPE) on a PCI card, targeted for the commercial market. It is designed to provide a high-speed parallel-processing platform for applications requiring high performance processing capability. As companies continue to embrace the Internet they simultaneously push network solutions to achieve higher performance, greater security, and reliability. All of these present opportunities for the GPE in providing robust next-generation solutions.

The GPE lends itself well to process intensive applications by performing the intensive processes in hardware as opposed to on the host CPU. Network applications can be greatly optimized by assigning certain processes to the GPE while maintaining others on the host CPU. Striking a good balance between the resources of the GPE and Host CPU enable applications originally developed for 10Mb networks to perform optimally at much greater speeds (155-622Mbps or more).

WinDriver in the GPE Project

The GPE utilizes FPGAs (Field Programmable Gate Arrays) which are located on the PCI board; Hence, the GPE can provide many different solutions by simply loading different bit files into it.
Boeing also developed the application controlling the GPE. This application must download configuration files to each of the FPGA chips, and control operation of the GPE PCI board by utilizing Bus Master DMA and Interrupts.
Boeing's engineers chose to use WinDriver for their PCI hardware access. The GPE project took advantage of WinDriver's Kernel PlugIn feature to achieve optimal performance.

Why WinDriver?

In order for the GPE to be more attractive and to fit to as many markets as possible, the Boeing team's design goal was to have the GPE control software designed in such a way as to support Windows 98, NT, 2000, Linux, Solaris SPARC, and Solaris on x86.
In order to do this, Boeing's engineers would need to write a separate driver for each of the different operating systems from scratch. This process would require the team to study each of the separate operating system's kernel and device driver architecture, and would also require maintaining several different code bases for their project.

"It was obvious that writing hardware access code for each platform type, would be a time and resources consuming process. There would also be a software maintenance problems, since future changes to the software would effect numerous versions of the code" Said Mr. Ronald Wallace, Boeing's Senior Software Engineer. "Since time to market was an important factor in the GPE project, we considered, limiting the number of supported operating systems to Windows NT and either Linux or Solaris" said Mr. Stephen Cagliostro, Boeing's Sunnyvale Site Engineering Manager.

Boeing needed a robust development tool, that would enable quick and easy development of a cross platform hardware access code, without requiring the developers to have preliminary kernel knowledge.
An Internet search resulted with Jungo's WinDriver as the desired solution.

WinDriver development tool complied completely with Boeing's requirements. As a first step, Boeing engineers used WinDriver diagnostic utilities to immediately access and diagnose the GPE hardware, allocating its required resources, and debugging it before writing a single line of the hardware access code.
The next step was to use WinDriver to automatically generate a skeleton hardware access code. The entire development process was done in user-mode without Boeing engineers being required to having any DDK or kernel knowledge, which is normally required when writing device drivers.

Using WinDriver dramatically shortened the initial driver development time.
Thanks to WinDriver's powerful Wizard, graphical tools and automatic code generation, development time was dramatically cut down, and in just 40% of the firstly estimated development time, Boeing engineers had accomplished the development of complete compiled and running device drivers for Linux and Windows.
More time is to be saved when Boeing will port the hardware access code developed using WinDriver into other operating systems said Mr. Ronald Wallace.

Due to WinDriver's unique cross platform architecture, Boeing engineers were able to generate one driver code, common to all platforms (instead of developing different code for each platform).
Now we use only one platform specific file that defines synchronization objects for the user code, such as thread blocking, while all other driver code is common for all platform types said Mr. Wallace.

Using WinDriver also saved the Boeing team from having to debug the driver in the kernel mode using unfamiliar tools. The driver code was debugged in the user-mode, using the Microsoft developer's studio.
Later, optimal performance was achieved by moving the interrupt handler into WinDriver's Kernel PlugIn , thus achieving DMA of 4.6 Mbytes per second, without even optimizing the user-mode application (by optimizing DMA transfer size, buffer management, etc.).

Conclusion

Boeing's GPE project engineers chose WinDriver in order to gain high performance, multi platform support for their GPE hardware in record time. Without acquiring any DDK / kernel knowledge, a complete multi platform hardware access code was developed within only 4 man weeks, thus shortening time-to-market and saving valuable development resources.
If all goes well in the sales department, your product will be a life saver!!! said Mr. Ronald Wallace.

Boeing's Commercially available GPE product uses WinDriver to provide a high-performance, cross platform application.