TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Using QEMU for cross development
1. Using QEMU
for
Cross Development
Tetsuyuki Kobayashi
Kyoto Microcomputer Co., Ltd. 1
2. Let's use QEMU
to boost your project
Real system : System emulator
=
Atoms : Bits
This is what I impress today.
Take advantage of 'bits'!
Kyoto Microcomputer Co., Ltd. 2
”Being Digital” by Nicholas Negroponte
http://archives.obs-us.com/obs/english/books/nn/ch01c01.htm
3. Who am I?
20+ years involved in embedded systems
10 years in real time OS, such as iTRON
10 years in embedded Java Virtual Machine
Now Gcc, Linux, QEMU, Android, …
Blogs
http://d.hatena.ne.jp/embedded/ (Personal)
http://blog.kmckk.com/ (Corporate)
Twitter
@tetsu_koba
Kyoto Microcomputer Co., Ltd. 3
4. Today's topic
What is QEMU
Atoms vs Bits
QEMU is NOT good for …
QEMU is GOOD for …
Practices (from KMC blog)
Kyoto Microcomputer Co., Ltd. 4
5. About QEMU
http://wiki.qemu.org/
QEMU is
a generic and open source
machine emulator
and virtualizer.
Kyoto Microcomputer Co., Ltd. 5
6. QEMU is used …
As virtualizer,
KVM
Xen
VirtualBox
Host CPU == Target CPU
Today I don't focus on this.
Kyoto Microcomputer Co., Ltd. 6
7. QEMU is used …
As a system emulator,
Host CPU != Target CPU
Many open source projects such as:
Android
Maemo
Symbian
ARM port of Open Solaris
...
Kyoto Microcomputer Co., Ltd. 7
8. QEMU has …
Virtual disk.
Many of virtual devices.
Tiny Code Generator (TCG) to execute fast.
Port redirector, Virtual network card.
Bootloader to boot Linux kernel.
gdbserver to connect gdb.
...
Kyoto Microcomputer Co., Ltd. 8
9. QEMU is *NOT* …
Cycle accurate simulator (which is
usually used for H/W development).
So QEMU is not good for developing device
driver which have to take account of accurate
cycles.
Kyoto Microcomputer Co., Ltd. 9
10. License
The whole QEMU is GPL.
The QEMU virtual CPU core library (libqemu.a)
is LGPL.
TCG is BSD like license.
Each virtual hardware has their own license.
Check the source file.
QEMU is a trademark of Fabrice Bellard.
Kyoto Microcomputer Co., Ltd. 10
11. Atoms vs Bits
Developing embedded system require real
system (= the physical board).
Because the GOAL is there.
System emulator is good complement for it.
System emulator is 'bits', so free from any
physical limitation.
I mention QEMU for the system emulator.
Kyoto Microcomputer Co., Ltd. 11
12. How to get
The physical board needs money to buy.
Some special board can not buy because of dis-
continue.
QEMU does not need any money to get.
Kyoto Microcomputer Co., Ltd. 12
13. Footprint
The physical board needs space to put.
No space for a dozen of boards on your desk.
QEMU does not need any desk space.
(but disk space.)
Kyoto Microcomputer Co., Ltd. 13
14. Portability (in Physical)
Bring the physical board and set it up is a work.
The board might be crash in trouble.
You are happy to bring QEMU in your USB key.
Or you can transfer it via broad band network.
Kyoto Microcomputer Co., Ltd. 14
15. Duplication & Distribution
The physical board can not be duplicate.
You can duplicate your QEMU as many as you
like and distribute them.
You might ask for experts to take a look your
problem on QEMU.
Kyoto Microcomputer Co., Ltd. 15
16. QEMU is *NOT* good for
Performance evaluation.
Especially SMP mode.
SMP is simulated in single thread, not parallel.
Deadly slow.
Interesting session about QEMU multi core
Japan Technical Jamboree24, Dec 2008
CELF_JTJ24_qemu-multicore_English.pdf
http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree24
Kyoto Microcomputer Co., Ltd. 16
17. QEMU is *NOT* good for
developing a device driver for a
*NEW* device.
Before, you need the accurate virtual device for the
device.
You have to develop a device driver with REAL
device at first. Then you can develop virtual device
with the device driver.
Kyoto Microcomputer Co., Ltd. 17
18. QEMU is *NOT* good for
Compiling a huge mount of source
code.
Too slow for compiling.
It takes more than one night to compile Linux
kernel.
Kyoto Microcomputer Co., Ltd. 18
19. QEMU is GOOD for
Learning.
Even if you tweak too much to break, you lose
nothing.
Not only for beginners. Experts may examine the
latest Linux kernel except for x86/x86_64, using
QEMU.
Kyoto Microcomputer Co., Ltd. 19
20. QEMU is GOOD for
Developing applications.
without the real system.
Android SDK is a perfect example.
also good for designers to evaluate UI.
Kyoto Microcomputer Co., Ltd. 20
21. QEMU is GOOD for
Testing.
Fault injection by the virtual device.
You can duplicate as many as you like and test
them in parallel.
Still need testing on real system.
Kyoto Microcomputer Co., Ltd. 21
22. Practice #1
Following blog pages are written in Japanese. Try
machine translation such as Google. It will work.
Building QEMU from source archive
QEMU requires zlib and SDL to build.
http://blog.kmckk.com/archives/2223793.html
Net-installing Debian on QEMU
Don't use obsolete installer.
http://blog.kmckk.com/archives/2233167.html
Kyoto Microcomputer Co., Ltd. 22
23. Practice #2
Rebuilding kernel from Debian source package
Get the source package and extract and patch it on
ARM QEMU.
Do compiling on PC Linux.
QEMU system emulator is too slow to compile
kernel.
http://blog.kmckk.com/archives/2237994.html
24. Practice #3
How to setup NFS server for QEMU
Need ”insecure” option for NFS because QEMU
redirect NFS port.
http://blog.kmckk.com/archives/2257952.html
Kyoto Microcomputer Co., Ltd. 24
25. Practice #4
Booting Debian in NFS root on ARM QEMU
Booting from NFS root is good for early-stage
developing.
You can read/write target file system any time.
You can boot kernel before implementing storage
device.
You don't have to care about size of storage.
http://blog.kmckk.com/archives/2257962.html
26. Practice #5
Build latest kernel in kernel.org and try SMP
mode
Finally the latest kernel successfully ran.
versatile_defconfig remains old. It need updated.
You can try another virtual board easily on QEMU.
SMP implementation of QEMU is just simple and
can not run fast.
http://blog.kmckk.com/archives/2333826.html
27. Practice #6
Try ARM Ubuntu using QEMU
Ubuntu 9.04 is built for ARMv5TE.
Ubuntu 9.10, ARMv6.
Ubuntu 10.04, ARMv7 Thumb2.
Debian, ARMv4T
Rootstock script is nice and easy to build Ubuntu
root file system.
http://blog.kmckk.com/archives/2339128.html
28. Practice #7
Using debugger with QEMU
Dive into QEMU itself using gdb.
Connect gdb to target machine of QEMU.
Debug both the target and QEMU itself using 2
gdbs.
Another debugger for QEMU.
http://blog.kmckk.com/archives/2363473.html
29. Other topics
TCG and QEMU internals
http://blog.kmckk.com/archives/2067157.html
http://blog.kmckk.com/archives/2067178.html
http://blog.kmckk.com/archives/2067210.html
Using user mode emulation of QEMU + binfmt
+ chroot to self-build
http://blog.kmckk.com/archives/2342452.html
Kyoto Microcomputer Co., Ltd. 29
30. Q&A
& Demo
Thank you for listening!
Any comments to blogs are welcome.
Kyoto Microcomputer Co., Ltd. 30
31. One more thing ...
KMC PARTNER debugger for QEMU
Breaking at do_execve in linux kernel running on Android emulator.
Kyoto Microcomputer Co., Ltd. 31