QEMU - User Mode Emulation - [ funded by HEC ] - Introduction

QEMU - User Mode Emulation - [ funded by HEC ]



QEMU - User Mode Emulation (1st Phase)

HPCNL developed Octeon MIPS64r2 ‘User Mode Emulation’ (UME) support into open source ‘Quick Emulator’ (QEMU). QEMU can emulate numerous target architectures. Like many other open source projects, available documentation of the software is either scant or stale. Modifying and extending such code becomes especially challenging due to the sheer size of the code base (654K lines of code spread over 1251 source files). Sporadic or no developer support makes things even more challenging. Therefore, a team of developers is effectively left with the source code to understand it and to correctly change it without causing any regression bugs. We overcame this challenge using methodical software engineering techniques.  HPCNL has presented its work at IEEE International Conference on Emerging Technologies 2011 (ICET 2011) which held in Islamabad, Pakistan, on September 5-6, 2011.

Butt, Ehsan-ul-Haq, A. Qadeer, and A. Waheed, "MIPS64 User Mode Emulation: A Case Study in Open Source Software Engineering," in proceedings of 7th IEEE International Conference on Emerging Technologies (ICET), Islamabad, Pakistan, 2011, pp. 78-83.

This paper discusses various problems that we encountered and solutions that we employed. In addition, we present QEMU’s software architecture, which we constructed in a bottom-up manner using source code. We believe that such experiences are relevant for understanding and extending any software of substantial size.

QEMU - System Mode Emulation (2nd Phase)

HPCNL is currently working on the second phase of the project where QEMU will be further extended so that it can run MIPS Linux operating system as well.  This is a challenging task where expertise from evaluation board boot-loader to internals of Linux Kernel are heavily involved.  It is a two year project which is currently in its initial phase.

"Our developed code can be downloaded in the form of a patch from this link <pach file> and the instructions to apply this patch can be found here <Procedure to apply> Further technical details of the work can be found in the release notes <Release notes >"