Using QEMU for cross development

6,498 views
6,368 views

Published on

Developing embedded systems requires physical board. Boost your project using QEMU system emulator.

Published in: Technology, Travel
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,498
On SlideShare
0
From Embeds
0
Number of Embeds
549
Actions
Shares
0
Downloads
210
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Using QEMU for cross development

  1. 1. Using QEMU for Cross Development Tetsuyuki Kobayashi Kyoto Microcomputer Co., Ltd. 1
  2. 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. 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. 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. 5. About QEMU  http://wiki.qemu.org/  QEMU is a generic and open source machine emulator and virtualizer. Kyoto Microcomputer Co., Ltd. 5
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 30. Q&A  & Demo Thank you for listening! Any comments to blogs are welcome. Kyoto Microcomputer Co., Ltd. 30
  31. 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

×