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 revision Previous revision
Next revision
Previous revision
etc:users:jcmvbkbc:qemu-target-xtensa [2012/03/04 03:04]
jcmvbkbc progress
etc:users:jcmvbkbc:qemu-target-xtensa [2020/08/31 05:06] (current)
jcmvbkbc qemu status update
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]] +  * Toolchain build scripts: ​https://github.com/​jcmvbkbc/​xtensa-toolchain-build
- +
-  * 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]]   * Kernel and rootfs binary archive: [[http://​jcmvbkbc.spb.ru/​~dumb/​ws/​osll/​qemu-xtensa/​20110829/​xtensa-dc232b_kernel_rootfs.tgz]]
 +
 +  * Official QEMU wiki feature page: [[http://​wiki.qemu.org/​Features/​Xtensa]]
 +
 +  * Official xtensa linux wiki page: [[http://​wiki.linux-xtensa.org/​index.php/​Xtensa_on_QEMU]]
  
 ===== Description ===== ===== Description =====
Line 14: Line 15:
 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 [[http://​osll.spb.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+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 =====
- +  ​TIE support
-  ​usermode emulation +
-  * FP coprocessor+
  
 ===== TODO ===== ===== TODO =====
-  * SMP support (interrupt distributor,​ WER/RER); +  * xtensa ​TCG backend
-  * ATOMCTL support; +
-  * 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 48: Line 41:
     * [+] 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;
Line 67: Line 62:
       * [+] 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; +    * [+] FLIX; 
-    * [-] wide branches;+    * [+] 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 77: Line 71:
     * [+] hw/sw breakpoints;​     * [+] hw/sw breakpoints;​
     * [+] gdbserver for different processor types;     * [+] gdbserver for different processor types;
-  * sample ​evaluation board; +  * evaluation board; 
-    * [+] sim(dc232b) ​platform;+    * [+] sim platform;
     * xt2000 platform;     * xt2000 platform;
       * [+] UART (reuse existing 16550 serial);       * [+] UART (reuse existing 16550 serial);
Line 86: Line 80:
       * [+] UART (reuse existing 16550 serial);       * [+] UART (reuse existing 16550 serial);
       * [+] opencores ethernet;       * [+] 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; 
-      * [-] pipeline/​SYNC group; 
-      * [-] memory access; 
-      * [-] exceptions; 
   * [+] external configuration (overlay reuse);   * [+] external configuration (overlay reuse);
-  * [+] automatic regression test suite;+  * [+] [[.:​qemu-target-xtensa:​testsuite|automatic regression test suite]]; 
 +  * [+] SMP support (interrupt distributor,​ WER/RER); 
 +  * [-] [[.:​qemu-target-xtensa:​pipeline|cycle accurate pipeline]];
  
 ===== Events ===== ===== Events =====
Line 104: Line 100:
   * 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 155: Line 122:
   * 2012.01.29: data breakpoints are working   * 2012.01.29: data breakpoints are working
   * 2012.03.03: debug option is merged   * 2012.03.03: debug option is merged
-{{tag>qemu}}+  * 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 
etc/users/jcmvbkbc/qemu-target-xtensa.1330815857.txt.gz · Last modified: 2012/03/04 03:04 by jcmvbkbc