I am proud, This weekend I did some productive work. I was able to code Chip 8 emulator in Java over a night 😉 I have always been fascinated by them and finally I was able to get the damn thing to work! For those of you who are not familiar with software emulator, It is a software which can emulate the functionality of other hardware or software components. Notable examples are video game emulators(Dosbox/NES Emulator), general purpose software emulators(QEmu)
Fundamental to any kind of development are compilers and the underlying platform. Compiler transforms our code into underlying platform and the platform itself is to run the compiled executables. This is also true in case of embedded development. But unlike normal desktop environment we cannot develop a program on an embedded development device because of various limitations of the device. Instead, What we do is write the program on our desktop(X86) and cross compile it for the required target platform. This effectively accomplishes the job of first component, But to run the cross compiled binary we do need the second component, that is, the target platform itself. Earlier, embedded developers had no choice other than using the real developement devices to test their cross compiled binaries. But with the help of QEMU, now we can emulate, most of todays popular target platforms. The main theme of this post is to set up the above said components for ARM developement.
This article is mainly helpful for kernel developers who would like to access Linux (guest) kernel logs using some tool from windows(host) PC. This is one way to see what is happening to the guest OS when the kernel is booting. Usually this information is passed to and from guest and host via a RS232 serial port. This is most commonly seen in linux embedded systems. So, In real world, guest could be an embedded platform like Beaglebone or Raspberry Pi.
Read on →