Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:users:jcmvbkbc:qemu-target-xtensa

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
etc:users:jcmvbkbc:qemu-target-xtensa [2011/09/14 14:15] – progress/todo jcmvbkbcetc:users:jcmvbkbc:qemu-target-xtensa [2024/01/21 19:22] (current) jcmvbkbc
Line 1: Line 1:
 ====== QEMU support for Xtensa ====== ====== QEMU support for Xtensa ======
  
-  * Git tree (view)[[http://jcmvbkbc.spb.ru/git/?p=dumb/qemu-xtensa.git;a=summary]] +  * Git tree: https://github.com/OSLL/qemu-xtensa 
-  * Git tree (clone): [[git://jcmvbkbc.spb.ru/dumb/qemu-xtensa.git]] [[http://jcmvbkbc.spb.ru/dumb/qemu-xtensa.git]] +  * Official QEMU wiki feature page: [[http://wiki.qemu.org/Features/Xtensa]] 
- +  * Official xtensa linux wiki page: [[https://wiki.linux-xtensa.org/index.php?title=Xtensa_on_QEMU]]
-  * Toolchain build scripts (view): [[http://jcmvbkbc.spb.ru/git/?p=dumb/xtensa-toolchain-build.git;a=summary]] +
-  * Toolchain build scripts (clone): [[git://jcmvbkbc.spb.ru/dumb/xtensa-toolchain-build.git]] / [[http://jcmvbkbc.spb.ru/dumb/xtensa-toolchain-build.git]] +
- +
-  * Kernel and rootfs binary archive: [[http://jcmvbkbc.spb.ru/~dumb/ws/osll/qemu-xtensa/20110829/xtensa-dc232b_kernel_rootfs.tgz]]+
  
 ===== Description ===== ===== Description =====
Line 14: Line 10:
 Although xtensa instruction set specification is open and there's even linux port for xtensa there were no free simulator available. Although xtensa instruction set specification is open and there's even linux port for xtensa there were no free simulator available.
  
-The project was initiated to lower cost and to speed up development of one of the Motorola Solutions projects and has been carried out exclusively by the OSLL. Started in March 2011 it took 2 months to provide initial ThreadX support, 2 more months to provide linux support and 2 more months to get accepted into the qemu mainline+The project was initiated to lower cost and to speed up development of one of the Motorola Solutions projects and has been carried out exclusively by the [[http://osll.ru|OSLL]]. Started in March 2011 it took 2 months to provide initial ThreadX support, 2 more months to provide linux support and 2 more months to get accepted into the qemu mainline.
- +
-Our qemu/target-xtensa implementation currently provides almost full instruction set support (enough to run linux/ThreadX), is fast and is available under BSD license. +
- +
-It can be easily extended to support custom xtensa architecture variants and external hardware.+
  
 Our goal is to make it usable (and preferable:) in real development/production environment. Our goal is to make it usable (and preferable:) in real development/production environment.
  
 ===== Now active ===== ===== Now active =====
-  * MAC16 option implementation;+  * TIE support
  
 ===== TODO ===== ===== TODO =====
-  * XT2000 board emulation; +  * xtensa TCG backend
-  * documentation: qemu-doc.texi, wiki, ...; +
-  * useful monitor commands, like 'info tlb'; +
-  * debug option implementation; +
-  * cache option implementation; +
-  * [[.:qemu-target-xtensa:pipeline|cycle accurate pipeline]];+
  
 ===== Implementation status ===== ===== Implementation status =====
 +
   * core/basic opcodes implementation;   * core/basic opcodes implementation;
     * [+] and/or/xor/neg/abs;     * [+] and/or/xor/neg/abs;
Line 47: Line 35:
     * [+] loop option;     * [+] loop option;
     * [+] extended L32R option;     * [+] extended L32R option;
-    * [-] MAC16; +    * [+] MAC16; 
-    * [-] coprocessors; +    * [+] coprocessors; 
-      * [-] floating point;+      * [+] floating point;
       * [+] boolean registers/commands;       * [+] boolean registers/commands;
     * [+] memory protection;     * [+] memory protection;
       * [+] no-MMU mode;       * [+] no-MMU mode;
       * [+] region protection (with/without translation);       * [+] region protection (with/without translation);
-      * [+] MMU mode;+      * [+] MMU
 +      * [+] MPU;
     * cache options;     * cache options;
-      * [-] memory attributes;+      * [+] memory attributes
 +      * [+] memory accessibility check;
       * [-] memory access timing;       * [-] memory access timing;
-    * [-] debug option;+    * [+] debug option;
     * exceptions;     * exceptions;
       * [+] debug (only external);       * [+] debug (only external);
-      * [-] break;+      * [+] break;
       * [+] window overflow/underflow;       * [+] window overflow/underflow;
       * [+] user/kernel (invalid insn, privileged insn, alignment, division by 0,...);       * [+] user/kernel (invalid insn, privileged insn, alignment, division by 0,...);
Line 67: Line 57:
       * [+] external interrupts;       * [+] external interrupts;
       * [+] timer interrupts;       * [+] timer interrupts;
-        * [-] correct opcode timings?; 
         * [+] qemu timer to avoid busy looping in waiti;         * [+] qemu timer to avoid busy looping in waiti;
 +    * [+] FLIX;
 +    * [+] wide branches;
   * gdbserver;   * gdbserver;
     * [+] read/write register, <del>xml register map</del> (not used by gdb);     * [+] read/write register, <del>xml register map</del> (not used by gdb);
Line 75: Line 66:
     * [+] hw/sw breakpoints;     * [+] hw/sw breakpoints;
     * [+] gdbserver for different processor types;     * [+] gdbserver for different processor types;
-  * sample evaluation board; +  * evaluation board; 
-    * [+] memory mapping, ELF loader+    * [+] sim platform
-    * [-] standard peripherals+    * xt2000 platform; 
-    * [+] dc232b;+      * [+] UART (reuse existing 16550 serial); 
 +      * [+] xtsonic (reuse existing dp8393x NIC); 
 +      * [-] LED
 +    * [+] lx200/60/110 platform; 
 +      * [+] UART (reuse existing 16550 serial); 
 +      * [+] opencores ethernet; 
 +    * [+] [[.:qemu-target-xtensa:virt|virt platform]] 
 +      * [+] PCI controller 
 +      * [-] hardcoded IRQ routing may connect legacy PCI IRQ to edge-triggered external IRQ line 
 +    * [+] [[.:qemu-target-xtensa:linux-user|linux-user]]
   * simulation quality;   * simulation quality;
-    * [+] pass command line arguments to argc/argv SIMCALLs (DAN branch only);+    * [+] pass command line arguments to argc/argv SIMCALLs;
     * [+] TB chaining;     * [+] TB chaining;
-    * cycle accuracy; +  * [+external configuration (overlay reuse)
-      * [-pipeline/SYNC group+  * [+] [[.:qemu-target-xtensa:testsuite|automatic regression test suite]]; 
-      * [-memory access; +  * [+] SMP support (interrupt distributor, WER/RER); 
-      * [-] exceptions+  * [-] [[.:qemu-target-xtensa:pipeline|cycle accurate pipeline]];
-  * [+] external configuration (a-la xtensa overlay)? +
-  * [+automatic regression test suite; +
- +
- +
  
 ===== Events ===== ===== Events =====
Line 100: Line 95:
   * 2011.06.19: [[xtensa-linux|linux boots]], issues on userspace application startup   * 2011.06.19: [[xtensa-linux|linux boots]], issues on userspace application startup
   * 2011.06.22: successfull userspace app startup in linux   * 2011.06.22: successfull userspace app startup in linux
-  * 2011.06.29: xtensa linux session on qemu-xtensa is available at ssh -p 3333 xtensa@jcmvbkbc.spb.ru with the following private key: +  * 2011.06.29: xtensa linux session on qemu-xtensa was available at ssh -p 3333 xtensa@jcmvbkbc.spb.ru
-<file> +
------BEGIN RSA PRIVATE KEY----- +
-MIIEpQIBAAKCAQEA2ycE9iuEtWoNOmyLsx5aiEAPDx//MJlmMrx6o6qAUTj+wivk +
-kaKQE1yCZMUa/B40BMUST9KffHqIcV9jxDFjagM/dfbdbTxeiiNEKyjBsrEidEoU +
-ytM5fkpHFyg1DmCvkXdoUAAzeVCy5ILh6ZhqpQpe68Pb8vQLdj9QmwcvOpS7d97q +
-OMbGadIRdgOdlVAYQ/Rju8D+k9yygFn/TwZlTiT/glEpk/D4dq+8D1UlFNvohUH4 +
-3VY/gVJ0CuEQx1OwS+NTJLSz25Z2eTaNTEE4sqqAy2zlBe23Ef4vQo0mWvmBBIkA +
-x6dPBqKsQZCW6gGcsHk7fMw0K4H1RSOLRiAuQwIDAQABAoIBAQDZQ1m743DxmW37 +
-2di1fwYpxbgoOoR33dxfuFOtJj+IRoTqYzF64DsNtszesjoKcLcJc4av9BOBCMlz +
-/CmgO4Zfd1DW1iK3RP5E3KmcUA+X49xQhZEPc1CwT1sjLg1Lb7ce885KYaimQMbZ +
-nJfzSdOQQzPPcKEBv8gNNr/msby0ySFZ06sQNpSzaboD0u7TdssYz22BDaZ0E+4C +
-VgOLgFHo9qEMO5PlTElRvRd0JjVRF5Mn9SExSxqWKFzlFMNRkk63Fd3j34St+Z6U +
-VFc5OAMEoJt8pPEFNwpbzK0CZyYhWi02US2A8d5aPgodb1WQ0H1JdgO3u9b5YsJN +
-hcGjtDwhAoGBAO5/ySbW59vfUkmwI/s5WL3KgfdkzIUGKdG3yPL3MpUgnrOPPcnT +
-xZi67BWCPS0ac4AlKjMJ0Px85XZQChjEh43CH3cglf9bzneTTC+liHq7GfvoQITd +
-TOZTHFu1z6SCgUtTnUwQFdXZHJDs0C21VENcS/N0XudXLy0nIBwWKwzHAoGBAOs7 +
-zfBA2IOFim3OHNaMjMUYvtpo+QQNGSwQJrw91rEbyrCd/09rUD5YLddPRhwq1jYJ +
-qRDGN6gqANRiTkJsZyvQz81aEqlp3WmG4hPWitymhlpgQ4mFmZU88IMYaQ9Dh8Vp +
-Dv6kT6zraAzBKc5nezjKisDItVzieDbly4TWMX6lAoGAJshOzGsL3vwspGDpKPQF +
-Uy93/OO+Qi9jY3/wRFogNpHMXMSBNq2iJxjWRRUdn5T6jS798ri47CXfJmMTkT18 +
-EXgsp7F70r96DoW8UM8pJ1P/gLAetbxKwfVn2h3xev3hyn75SCIhetnIRGTN4XDo +
-F+ANVbRprlLGECCZnxeXvocCgYEAhLnfvvm3sK3+p2oul1gCbYtC1JV6O7DwTQ5n +
-7Lqvkort2K2tSrBwPF0gsGXIV0hMSX016YMOEFJy2WMGaTAlHnHZbjKuaOyUw2AZ +
-27un6kwDbqb2NHgvaidSRYXWcYhW6SoYDdHEKvtAYEH1RsLYofiWRaR5wIj/72nF +
-ZZQ9pQkCgYEA7I004D9SvsVytaeN4RdmbpXYhontoYTorL343B/hAXYgGENKEfTK +
-VfbweLGQ6Ga8K99YARbx2/3FOYqbGKUtUpgxVwhquyBtcUxq6+vr4riUP6M2Zw55 +
-y3Cqme66+PO8Ka0NjjWxb+ksgO0hgcmEhlnz+3MWNODiacxHffH0ChM= +
------END RSA PRIVATE KEY----- +
-</file>+
   * 2011.07.18: issue with gdb not able to read privileged SRs root-caused: http://sourceware.org/ml/gdb/2011-07/msg00073.html   * 2011.07.18: issue with gdb not able to read privileged SRs root-caused: http://sourceware.org/ml/gdb/2011-07/msg00073.html
   * 2011.07.19: tensilica guys suggested the following solution for gdb:   * 2011.07.19: tensilica guys suggested the following solution for gdb:
Line 141: Line 107:
   * 2011.09.06: fifth PATCH patchset sent to qemu-devel http://lists.nongnu.org/archive/html/qemu-devel/2011-09/msg00695.html   * 2011.09.06: fifth PATCH patchset sent to qemu-devel http://lists.nongnu.org/archive/html/qemu-devel/2011-09/msg00695.html
   * 2011.09.10: fifth PATCH patchset hit the qemu mainline: http://lists.nongnu.org/archive/html/qemu-devel/2011-09/msg01298.html   * 2011.09.10: fifth PATCH patchset hit the qemu mainline: http://lists.nongnu.org/archive/html/qemu-devel/2011-09/msg01298.html
-{{tag>qemu}}+  * 2011.09.27: linux booted up to rootfs mounting on the new emulated LX200 board 
 +  * 2011.10.01: complete linux bootup via NFS on the LX200 
 +  * 2011.10.10: lx60, opencores ethernet, overlay reuse and MAC16 patches sent to qemu-devel 
 +  * 2011.10.16: lx60, opencores ethernet, overlay reuse and MAC16 patches are merged 
 +  * 2011.10.29: lx60/lx200: u-boot starts from FLASH, linux kernel boots via TFTP 
 +  * 2011.11.03: emulation speed test for sha512sum running in linux on dc232b shows fantastic 266 MIPS 
 +  * 2011.11.22: linux for dc233c is working on qemu 
 +  * 2012.01.13: instruction breakpoints are working 
 +  * 2012.01.29: data breakpoints are working 
 +  * 2012.03.03: debug option is merged 
 +  * 2012.09.09: FP coprocessor series is posted to qemu-devel 
 +  * 2012.09.19: FP coprocessor series is in the mainline 
 +  * 2014.06.29: uImage/DTB/initrd loading on XTFPGA boards 
 +  * 2017.01.25: CCOUNT no longer counts instructions; RER/WER and RUNSTALL are in the mainline 
 +  * 2018.01.09: libisa and target disassembler series is in the mainline 
 +  * 2018.01.24: xtensa noMMU series is in the mainline 
 +  * 2018.03.17: xtensa linux-user series is in the mainline 
 +  * 2019.01.30: basic FLIX 'hello world' is working 
 +  * 2019.02.05: xtensa SMP support series is in the mainline 
 +  * 2019.03.01: xtensa FLIX support series is in the mainline 
 +  * 2019.09.12: xtensa call0 ABI is supported by linux-user in the mainline 
 +  * 2019.10.24: xtensa [[.:qemu-target-xtensa:virt|virt machine]] is in the mainline 
 +  * 2020.08.24: xtensa DFPU support series is in the mainline 
 +  * 2021.03.10: it's been 10 years 
 +  * 2024.01.13: control/TIE/Xtensa.xml in the xtensa build directory is an actual fixed-substitution-coded XML file with full core description. Why do I realize it just now and not 10 years ago?
etc/users/jcmvbkbc/qemu-target-xtensa.1315995355.txt.gz · Last modified: 2011/09/14 14:15 by jcmvbkbc