| Research |
|---|
Embedded systems are resource constrained, specialized entities whose design is heavily influenced by cost and efficiency. As a result, component (core) based design [1][2]with has gained ground as a preferred technique used in building these systems. My doctoral research under the advisorship of Prof. Geoffrey Brown investigates use of lightweight file interfaces within these standard sub components to facilitate system integration, debugging and configuration. In this model, the individual filesystems exported by various sub components are used as distributed building blocks using which higher level filesystems are built up as the system is assembled. As part of my dissertation work, I have applied the model to two contrasting embedded system domains, first a board/chip/system-on-chip(SoC) scenario commonly found in electronic designs and another involving distributed lightweight devices in the form of a sensor network.
One advantage of the CSP approach is the availability of numerous formal verification tools that support the model. Over the course of my graduate studies, I have used the SPIN model checker for verifying concurrency related properties of CSP based systems, and SMV for verifying distributed coordination algorithms.
Projects
The various research projects that I have been involved with as part of my doctoral work are listed below.
User space filesystems using Fuse, Npfs and Plan9ports.
I have implemented specialized file systems to support system debugging, configuration and monitoring for the embedded domain as part of my research and also for management of computational clusters during my internship at IBM.
Here are a couple of generic ones I have worked on that might be useful:
Transformation file system using Fuse [?]
Network proxy implemented as a filesystem using Npfs [?]
![]()
On chip support structures for embedded software debugging.
Software resident within embedded systems export virtual file interfaces which can be mounted and accessed externally by debuggers, programming tools or trace analyzers. This project has targeted the ICE interface of ARM7 processors and the custom JTAG interface of TI MSP430 MCUs. Proxies for gdb have been developed to facilitate concurrent debugging of software executing on these devices using the exported filesystem. [more info]
Proxy access to resources for impoverished domains
Lightweight devices such as sensors, actuators and robots that lack conventional computational resources such as console IO,mass storage and peripherals are equipped to import and access them over generic communication links such as USB, serial or radio. This work is based on the home cooked Goofy Giggles platform [more info]
Middleware to configure, access and monitor sensor networks
Hierarchy of file systems of increasing sophistication at the sensor, cluster and workstation level combine to facilitate sensor network programming and usage. Lightweight filesystems within sensors were developed using TinyOS sensor operating system which complement higher level filesystems. An interesting part of this work was designing a lightweight protocol named Dandelion for interaction with sensor motes, and designing bridges to connect it to protocols used with higher level fileservers such as Styx. [more info]
Other Interests
Programming Languages
My interest in programming languages is derived from the courses I took on compiler construction, compiler optimizations, programming language principles and types. I am particularly interested in language related problems with relevance to systems. Here are a couple of topics I have worked on:
As part of my research I tried to formally address the question of what it would take to dynamically alter the functionality of filesystems through code swapping. To this end I used an SECD abstract machine model to study the type safety aspects of code swapping within a Scheme like language that provided the feature.
![]()
Incorporating multi threading in Scheme within the .NET framework
![]()
Concurrency
I have extensively used the CSP model to build concurrent software systems. Specifically, I have looked at adopting the CSP model for software design within resource constrained embedded architectures. To this end I have used stackless thread implementations along the lines of Protothreads, which allows the model to be implemented in systems with a couple of KB of RAM. Processes implemented using Protothreads and interrupts serve and interact using point to point channels. The model nicely integrates with low power modes offered by modern microcontrollers(uC), by allowing the process scheduler to switch the uC into sleep mode when all processes are blocked on channel operations to be subsequently woken up by hardware interrupts.
USB with Linux
Early in graduate school, I was involved in a project relating to implementation of realtime drivers for USB in RTLinux. The most significant outcome of this work was a USB tutorial, that has over the years been read and appreciated by numerous people, most gratifyingly students. It should be noted that introduction of USB based virtual COM ports by FTDI has mitigated the complexity of USB programming at large. The MSP430 board developed within our department by Bryce uses these parts to communicate with and program the microcontroller over USB.
click to email me