Abstract:
Wireless Sensor Nodes are very low power resource constrained devices with limited radio communications ability. As the technology is evolving at a rapid pace, more and more complex protocols and applications are integrated to these devices. This leads to elevated demands to constrained resources like power, network bandwidth, computational abilities and memory. Often memory proves to be the most constrained among all these resources and an answer to more efficient use of memory is dynamic memory management. Embedded systems developers often prefer a worst case static memory allocation over a dynamic memory allocation for a number of reasons such as unbounded response time, suboptimal usage of RAM space due to fragmentation and certain memory management overhead. Another concern when using a dynamic memory management for an embedded system is that a runtime allocation failure may be catastrophic. However it is always not possible to design applications with static memory allocations. To alleviate this problem many modern sensor network OS like Contiki, MantisOS, SOS etc. provides dynamic memory management support. Many widely accepted dynamic memory management techniques are not directly applicable for a resource constrained embedded system and so dynamic memory management schemes for resource constrained devices often employ techniques like mem- ory compaction or a customized memory model to t the use-case. During the span of this research it has been observed that the dynamic memory management API employed in these OS is not compliant with the standard C dynamic memory allocation API. From a software engineering perspective, it calls for a major redesign of an existing code base, and thus leads to unprecedented delays in development and it is generally associated with an unwanted NRE cost. The primary contribution of this dissertation is to describe a con gurable and scalable dynamic memory management scheme, for microcontroller based resource constrained embedded systems with an API compliant with the memory management API of the standard C library. Considering the fact that the proposed dynamic memory manager is targeted only towards severely resource constrained devices, it should eliminate redundant information in the memory descriptors to maximize memory utilization. The second contribution of the work experimentally verifies a hypothesis that was framed during the course of this research, attempting to reduce external fragmentation by localizing similarly sized allocation requests, in a particular region of the managed memory pool. As a final contribution of the work, an extension to the proposed dynamic memory manager is dis- cussed which can potentially include memory compaction, and dynamic rearrangement of allocated blocks leading to more efficient use of the memory.