========================================================== MEMMU: Memory Expansion for MMU-Less Embedded Systems ========================================================== Version 0.9, May 23, 2007 E-mail: l-bai@northwestern.edu ---------------------------------------------------------- WHAT IS MEMMU? ---------------------------------------------------------- MEMMU is an automated runtime memory compression tool for MMU-less embedded systems. MEMMU is composed of a runtime library and a compile-time transformation. MEMMU runtime library contains memory compression and memory management functions. MEMMU compile-time support are LLVM passes that transform the application to use MEMMU runtime library functions and apply compile-time optimizations. MEMMU can be used on MMU-less embedded systems that do not have virtual memory support, such as TelosB wireless sensor node. MEMMU increases usable memory and requires no or minor changes to application and without changes of hardware. It presently supports applications written in C language. ---------------------------------------------------------- HOW TO INSTALL MEMMU? ---------------------------------------------------------- 1. Download and install LLVM 1.9 from http://llvm.org. Please refer to http://llvm.org/docs/GettingStarted.html for LLVM installation instructions. 2. Download MEMMU.tar. Untar MEMMU.tar with tar -xvf MEMMU.tar. 3. Copy MEMMUpass to LLVM_SRC/lib/Transforms/. Build MEMMU passes by running "make" under MEMMUpass/. 4. Copy libMEMMU.tar under LLVM_SRC/runtime/. Build MEMMU runtime library by running "make" under libMEMMU/. ---------------------------------------------------------- HOW TO USE MEMMU? ---------------------------------------------------------- Steps of applying MEMMU on text.c is as follows: 1. Run apply_memmu.py, pass the name of your program as the argument. For example, "apply_memmu.py text". This script will apply MEMMU passes on your program and generate a new C file by appending "_memmu" to the name of the original program. It also deals with the inline assembly that is currently not supported by LLVM. 2. Link with LLVM runtime library to generate executable. llvm-gcc test_memmu.c ../../Debug/lib/memmu_rt.a ---------------------------------------------------------- OTHER QUESTIONS? ---------------------------------------------------------- Please read the paper "Automated Compile-Time and Run-Time Techniques to Increase Usable Memory in MMU-Less Embedded Systems" or contact the author at l-bai@northwestern.edu.