I have been working with a local company in the development of a desktop
office phone system called. The device pictured above is one of
our ARM7 based designs.
Top row: Main cabinet, shown front and rear with cover off.
Bottom row: Main board featuring ARM processor core, power supply, extension and line interfaces, DSP and bulk storage devices.
Top board featuring additional extension and line interfaces,
VOIP board featuring VOIP processor.
This switch features 8 extensions, 4 CO lines, and 4 VOIP lines. It provides a wide variety of features such as multiple auto-attendants, voice mail, and the ability to cascade calls through many options - it is a very powerful system. Multiple individual switched can be networked together to appear as a single large PBX.
I was involved in the earliest design phase of this system, and I was responsible for the low level code and test tools used to bring the prototype hardware into an operational state. This included debug monitors, bootstrap loader, high-speed parallel loader, flash programmer and several other tools and utilities. I also designed the low level code to control and test the individual hardware devices, much of which remains in use in the form of drivers in the production code.
In the development phase of the product, I have been the prime developer of low-level and hardware related aspects of the project. In particular, I designed and have been responsible for the following major system elements:
BOOT BLOCK: This is the bootstrap code, which decompresses the firmware from flash memory into operating RAM and launches it. It also provides the ability to perform "recovery loads" to download the application over the serial or network interfaces. It also provides the ability to netboot the switch via TFTP download (very useful in development).
OPERATING SYSTEM: Designed from "scratch", ArmOS is a multitasking message based real-time operating system which provides a comprehensive set of system services to the tasks which operate under it. These include process management services, interprocess messaging services, timer services, interrupt management services, console management services, Networking services, Mutex services, Device services, Storage services, System control services and more. An integrated debugger is available in all ARM privilege modes and provides an isolated context to troubleshoot processor exceptions, memory protection violations, software panics and more.
FILE SYSTEM: I designed the file system used on this product. Designed to support any device geometry currently available, this highly time and space efficient system provides wear leveling, bad block management, and all other function normally associated with a nand flash based system, as well as the ability to selectively apply Error Correction Codes (ECC) to critical data, and avoid it's overhead on voice files, the ability to handle an unlimited number of open directories (used for voice mailboxes), and other features unique to our application.
LIBRARY: I designed the C standard and extended libraries which are used with this system to provide standard C functionality, as well as access to operating system services and hardware devices.
NETWORKING PROTOCOL: Initially I developed a prorietary networking protocol which provides secure control traffic between switches, and high-speed bulk transfers of digital audio. Although local connections still operate on this protocol, I have also provide packet multiplexing services within the OS which allowed a TCP stack to be implemented, as well as other protocols.
PRODUCTION TESTER: I developed the production tester which is used by the manufacturing company to verify correct operation of each and every unit which is built. This consists of detailed hardware diagnostics resident in the unit under test, as well as a comprehensive PC based control and monitoring program.
DEVELOPMENT TESTER: I have implemented a feature/software tester operating though a bank of 18 modems which provides traffic load to the switch while verifying correct operation of the functions being performed. This is based on a comprehensive scripting system which allows testcases to be developed to excercise virtually all software functionality in the system. The system has the ability to provide variable levels of load by concurrently running multiple test scenarios which can be specifically or randomly selected from a pool of available testcases.
IN-HOUSE MONITOR/LOGGER: I developed a system whereby all events occuring within the in-house network of switches are transmitted via the network interface to a central logging station which maintains detailed records of the activity occuring on the switches. This provides an very valuable resource for tracking problems and identifying operations which could be improved. A version of this logger is also implemented in the development tester described above.
DEVELOPMENT TOOLS: I have designed a number of tools for use in the development and testing of the switch. These include compression tools, bootstrap and recovery tools, loaders, a parallel-port "EPROM emulator", a sound card based digital tone generation/analysis tool (for analyzing network echo), and several other tools and utilities.
TELEPHONE APPLICATION: I have been involved with many aspects of the Telephony application. Some of the things I have done include: Real-time recovery, tone generation, network command redirection, toll restriction/call routing, Firmware/data update managment, application/host interfaces and more.
UPDATE SYSTEM: I have implemented a nework based firmware update system, which automatically and simultaniously updates multiple devices over a dedicated local area network. Units arriving from production are simply connected to this network and switched on. The update system netboots a custom application which downloads a configuration file, and under the control of that file, downloads and installs an updated firmware and the various data files which need to be present on the system.
FEATURE TELEPHONE: I developed a feature telephone which operates with the PBX to provide enhanced features such as on-screen menus and displays, through-the-set paging, intercom and more.