Zastosowanie emulatorów w rozbudowie systemów wbudowanych Jan Kowalewski kowalewski.j@protonmail.com May 29, 2019 Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 1 / 13
Definicje Emulator (wikipedia) Program komputerowy (czasem wraz z koniecznym sprzętem), który uruchomiony w danym systemie komputerowym duplikuje funkcje innego systemu komputerowego. Pierwszy system nazywany jest gospodarzem (ang. host), a drugi gościem (ang. guest). Mówimy, że drugi system jest emulowany przez pierwszy. Emulator (IEEE) A device, computer program, or system that accepts the same inputs and produces the same outputs as a given system. Contrast with simulator. Simulator (IEEE) A device, computer program, or system that behaves or operates like a given system when provided a set of controlled inputs. Contrast with emulator. A simulator provides inputs or responses that resemble anticipated process parameters. Its function is to present data to the system at known speeds and in a proper format. Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 2 / 13
Typy emulatorów Programowe Emulator jest napisany jako program i zachowuje się jak sprzęt na którym możemy uruchomić inne oprogramowanie skompilowane na emulowana architekturę. To znaczy, że możemy emulować CPU, peryferia, środowiska, oprogramowanie jako instancja w naszym systemie operacyjnym. Sprzętowe (In Circuit Emulator - ICE) Układ elektroniczny używany do debuggowania oprogramowania wykonywanego na CPU. Najczęściej dostęp do niego uzyskujemy przez JTAG, w ten sposób mamy dostęp do procesora, jego rejestrów wewnętrznych etc. Zatem w prosty sposób możemy się komunikować ze sprzętem z naszego systemu operacyjnego np. w łańcuchu: OS <-> USB <-> JTAG <-> Emulator <-> CPU Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 3 / 13
Przykłady Programowe: EmbeddedICE QEMU (multiplatform) Renode (multiplatform) MAME - Multiple Arcade Machine Emulator epsxe (playstation) DOSBox Sprzętowe: AVT-5039 (AVR) PADAUK Tech PDK 5S-I-S01 (PADAUK) EmbeddedICE (ARM) Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 4 / 13
Przykładowe zastosowania Debugging Testowanie bez używania sprzętu - w przypadku próbek inżynieryjnych ułatwia pracę nad urzadzeniem przez wiele osób Testowanie nowych architektur zanim zostana wyprodukowane w krzemie Tani sposób na sprawdzenie swojego pomysłu Dodawanie nowych peryferiów do CPU i ich testowanie przed produkcja Edukacyjnie tańsze rozwiazanie niż sprzęt Trudno zepsuć emulatory programowe Skalowalność - uruchamianie wielu urzadzeń na raz Crossplatformowe testowanie Setup wielu urzadzeń jest łatwiejszy w badaniu Możliwość podłaczania zewnętrznych narzędzi Większa kontrola nad flow Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 5 / 13
QEMU vs. Renode QEMU - emulator programowy Ponad 90% kodu w C, część w C++ i Python. Renode - emulator programowy Ponad 69% kodu w C# (modele peryferiów, UI, cores, dodatkowe narzędzia). Testy w RobotFramework, dodatkowe narzędzia i skrypty w Python. Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 6 / 13
QEMU vs. Renode QEMU - Wspierane OS Linux (brak dod. wymagań) OS-X (brak dod. wymagań) Win32 (Mingw64 toolchain) Renode - Wspierane OS Linux (Mono) OS-X (Mono) Windows (.NET Framework 4.7) Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 7 / 13
QEMU vs. Renode QEMU - Emulowane architektury Alpha OpenRISC ARM PPC RISC-V HPPA i386 SPARC Microblaze MIPS Xtensa NIOS2... Renode - Emulowane architektury ARM x86 RISC-V SPARC PowerPC Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 8 / 13
QEMU vs. Renode QEMU - Features CI/testy - Travis QEMU + Docker -> brak oficjalnego wsparcia Przykładowe UI - QtEmu Debugging: GDB Verilator - nie wspierane Uruchamianie wielu urzadzeń wymaga uruchomienia osobnych instancji QEMU Brak emulacji komunikacji bezprzewodowej Wireshark dostępny po wystawieniu interface u TAP Uruchomienie wymaga rozbudowanych mało intuicyjnych komend Renode - Features CI/testy - RobotFramewok Renode + Docker -> pełne wsparcie UI - XWT + AntShell Debugging: GDB, Monodevelop Verilator - wspierane Przy pomocy jednego skryptu można uruchomić wiele urzadzeń w jednej instancji emulacyjnej Wsparcie komunikacji bezprzewodowej Właczenie logowania do Wireshark z poziomu UI Łatwa skalowalność od Core, przez SoC, boardy po całe sieci w ramach jednej emulacji Uruchomienie przez gotowe skrypty Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 9 / 13
QEMU - przykładowe uruchomienie Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 10 / 13
Renode - przykładowe uruchomienie Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 11 / 13
QEMU vs. Renode LIVE DEMOS Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 12 / 13
Źródła https://pl.wikipedia.org/wiki/emulator http://ww1.microchip.com/downloads/en/devicedoc/doc6289.pdf https://www.fda.gov/inspections-compliance-enforcement-and-criminalinvestigations/inspection-guides/glossary-computer-system-softwaredevelopment-terminology-895 https://en.wikipedia.org/wiki/in-circuit_emulation https://github.com/qemu/qemu https://wiki.qemu.org/documentation https://github.com/renode https://github.com/renode/renode-docs http://infocenter.arm.com/help/topic/com.arm.doc.ddi0180a/ddi0180.pdf https://antmicro.com/blog/2017/08/renode-press-release/ https://wiki.qemu.org/images/0/0c/qemu-logo.png Jan Kowalewskikowalewski.j@protonmail.com Zastosowanie emulatorów w rozbudowie systemów wbudowanych May 29, 2019 13 / 13