etc:users:jcmvbkbc:qemu-target-xtensa
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
etc:users:jcmvbkbc:qemu-target-xtensa [2011/09/27 13:26] – progress/todo jcmvbkbc | etc: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/ | + | * Git tree: https://github.com/OSLL/ |
- | * Git tree (clone): [[git://jcmvbkbc.spb.ru/ | + | * Official QEMU wiki feature page: [[http://wiki.qemu.org/Features/Xtensa]] |
- | + | * Official | |
- | * Toolchain build scripts (view): [[http:// | + | |
- | * Toolchain build scripts (clone): [[git://jcmvbkbc.spb.ru/ | + | |
- | + | ||
- | * Kernel and rootfs binary archive: [[http://jcmvbkbc.spb.ru/ | + | |
===== Description ===== | ===== Description ===== | ||
Line 14: | Line 10: | ||
Although xtensa instruction set specification is open and there' | Although xtensa instruction set specification is open and there' | ||
- | 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:// |
- | + | ||
- | Our qemu/ | + | |
- | + | ||
- | It can be easily extended to support custom xtensa architecture variants and external hardware. | + | |
Our goal is to make it usable (and preferable: | Our goal is to make it usable (and preferable: | ||
===== Now active ===== | ===== Now active ===== | ||
- | * LX200/ | + | * TIE support |
- | * XT2000 board emulation; | + | |
- | * documentation: | + | |
===== TODO ===== | ===== TODO ===== | ||
- | * useful monitor commands, like 'info tlb'; | + | * xtensa |
- | * debug option implementation; | + | |
- | * cache option implementation; | + | |
- | * [[.: | + | |
===== Implementation status ===== | ===== Implementation status ===== | ||
+ | |||
* core/basic opcodes implementation; | * core/basic opcodes implementation; | ||
* [+] and/ | * [+] and/ | ||
Line 48: | Line 36: | ||
* [+] extended L32R option; | * [+] extended L32R option; | ||
* [+] MAC16; | * [+] MAC16; | ||
- | * [-] coprocessors; | + | * [+] coprocessors; |
- | * [-] floating point; | + | * [+] floating point; |
* [+] boolean registers/ | * [+] boolean registers/ | ||
* [+] memory protection; | * [+] memory protection; | ||
* [+] no-MMU mode; | * [+] no-MMU mode; | ||
* [+] region protection (with/ | * [+] region protection (with/ | ||
- | * [+] 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/ | * [+] window overflow/ | ||
* [+] 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; | + | * [+] FLIX; |
- | * [-] wide branches; | + | * [+] wide branches; |
* gdbserver; | * gdbserver; | ||
* [+] read/write register, < | * [+] read/write register, < | ||
Line 77: | Line 66: | ||
* [+] hw/sw breakpoints; | * [+] hw/sw breakpoints; | ||
* [+] gdbserver for different processor types; | * [+] gdbserver for different processor types; | ||
- | * sample | + | * evaluation board; |
- | * [+] sim(dc232b) | + | * [+] sim platform; |
* xt2000 platform; | * xt2000 platform; | ||
* [+] UART (reuse existing 16550 serial); | * [+] UART (reuse existing 16550 serial); | ||
* [+] xtsonic (reuse existing dp8393x NIC); | * [+] xtsonic (reuse existing dp8393x NIC); | ||
* [-] LED; | * [-] LED; | ||
- | * lx60 platform; | + | * [+] lx200/ |
* [+] UART (reuse existing 16550 serial); | * [+] UART (reuse existing 16550 serial); | ||
- | * [-] opencores ethernet; | + | * [+] opencores ethernet; |
+ | * [+] [[.: | ||
+ | * [+] PCI controller | ||
+ | * [-] hardcoded IRQ routing may connect legacy PCI IRQ to edge-triggered external IRQ line | ||
+ | * [+] [[.: | ||
* simulation quality; | * simulation quality; | ||
- | * [+] pass command line arguments to argc/argv SIMCALLs | + | * [+] pass command line arguments to argc/argv SIMCALLs; |
* [+] TB chaining; | * [+] TB chaining; | ||
- | * cycle accuracy; | + | |
- | | + | * [+] [[.:qemu-target-xtensa: |
- | * [-] memory access; | + | * [+] SMP support |
- | * [-] exceptions; | + | * [-] [[.: |
- | * [+] external configuration | + | |
- | * [+] automatic regression test suite; | + | |
===== Events ===== | ===== Events ===== | ||
Line 105: | 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 | + | * 2011.06.29: xtensa linux session on qemu-xtensa |
- | < | + | |
- | -----BEGIN RSA PRIVATE KEY----- | + | |
- | MIIEpQIBAAKCAQEA2ycE9iuEtWoNOmyLsx5aiEAPDx// | + | |
- | kaKQE1yCZMUa/ | + | |
- | ytM5fkpHFyg1DmCvkXdoUAAzeVCy5ILh6ZhqpQpe68Pb8vQLdj9QmwcvOpS7d97q | + | |
- | OMbGadIRdgOdlVAYQ/ | + | |
- | 3VY/ | + | |
- | x6dPBqKsQZCW6gGcsHk7fMw0K4H1RSOLRiAuQwIDAQABAoIBAQDZQ1m743DxmW37 | + | |
- | 2di1fwYpxbgoOoR33dxfuFOtJj+IRoTqYzF64DsNtszesjoKcLcJc4av9BOBCMlz | + | |
- | / | + | |
- | nJfzSdOQQzPPcKEBv8gNNr/ | + | |
- | VgOLgFHo9qEMO5PlTElRvRd0JjVRF5Mn9SExSxqWKFzlFMNRkk63Fd3j34St+Z6U | + | |
- | VFc5OAMEoJt8pPEFNwpbzK0CZyYhWi02US2A8d5aPgodb1WQ0H1JdgO3u9b5YsJN | + | |
- | hcGjtDwhAoGBAO5/ | + | |
- | xZi67BWCPS0ac4AlKjMJ0Px85XZQChjEh43CH3cglf9bzneTTC+liHq7GfvoQITd | + | |
- | TOZTHFu1z6SCgUtTnUwQFdXZHJDs0C21VENcS/ | + | |
- | zfBA2IOFim3OHNaMjMUYvtpo+QQNGSwQJrw91rEbyrCd/ | + | |
- | qRDGN6gqANRiTkJsZyvQz81aEqlp3WmG4hPWitymhlpgQ4mFmZU88IMYaQ9Dh8Vp | + | |
- | Dv6kT6zraAzBKc5nezjKisDItVzieDbly4TWMX6lAoGAJshOzGsL3vwspGDpKPQF | + | |
- | Uy93/ | + | |
- | EXgsp7F70r96DoW8UM8pJ1P/ | + | |
- | F+ANVbRprlLGECCZnxeXvocCgYEAhLnfvvm3sK3+p2oul1gCbYtC1JV6O7DwTQ5n | + | |
- | 7Lqvkort2K2tSrBwPF0gsGXIV0hMSX016YMOEFJy2WMGaTAlHnHZbjKuaOyUw2AZ | + | |
- | 27un6kwDbqb2NHgvaidSRYXWcYhW6SoYDdHEKvtAYEH1RsLYofiWRaR5wIj/ | + | |
- | ZZQ9pQkCgYEA7I004D9SvsVytaeN4RdmbpXYhontoYTorL343B/ | + | |
- | VfbweLGQ6Ga8K99YARbx2/ | + | |
- | y3Cqme66+PO8Ka0NjjWxb+ksgO0hgcmEhlnz+3MWNODiacxHffH0ChM= | + | |
- | -----END RSA PRIVATE KEY----- | + | |
- | </ | + | |
* 2011.07.18: issue with gdb not able to read privileged SRs root-caused: | * 2011.07.18: issue with gdb not able to read privileged SRs root-caused: | ||
* 2011.07.19: tensilica guys suggested the following solution for gdb: | * 2011.07.19: tensilica guys suggested the following solution for gdb: | ||
Line 147: | Line 108: | ||
* 2011.09.10: fifth PATCH patchset hit the qemu mainline: http:// | * 2011.09.10: fifth PATCH patchset hit the qemu mainline: http:// | ||
* 2011.09.27: linux booted up to rootfs mounting on the new emulated LX200 board | * 2011.09.27: linux booted up to rootfs mounting on the new emulated LX200 board | ||
- | {{tag>qemu}} | + | * 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/ | ||
+ | * 2017.01.25: CCOUNT no longer counts instructions; | ||
+ | * 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 [[.: | ||
+ | * 2020.08.24: xtensa DFPU support series is in the mainline | ||
+ | * 2021.03.10: it's been 10 years | ||
+ | * 2024.01.13: control/ |
etc/users/jcmvbkbc/qemu-target-xtensa.1317115573.txt.gz · Last modified: 2011/09/27 13:26 by jcmvbkbc