wokwi-features
QEMU
wokwi-features | QEMU | |
---|---|---|
133 | 197 | |
72 | 10,241 | |
- | 3.7% | |
0.0 | 10.0 | |
3 months ago | 4 days ago | |
C | ||
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wokwi-features
-
RISC-V Emulator for Sophgo SG2000 SoC (Pine64 Oz64 / Milk-V Duo S)
Do you know https://wokwi.com/ ? I have found support for the -C3, and even Rust development. Although it's online, if you are looking for local stuff I don't know if what they use is available, or if it's a secret sauce.
-
Why You Should Choose MicroPython for Prototyping and Research Work
Even you can learn MicroPython using online simulator using WokWi. You will find tons of ready projects of others that will help you to learn.
-
From Zero to Rust: Simplified Embedded Systems Programming
The primary goal of Simplified Embedded Rust is to make embedded Rust accessible and straightforward. By lowering the barrier to entry, the book aims to increase accessibility and provide a coherent overview of embedded Rust, minimizing the challenges many of us faced early on. The book gradually builds up the necessary knowledge, making it easier for readers to grasp more complex concepts. Practical material for each peripheral is included, allowing readers to apply their learning effectively without needing physical hardware. Thanks to modern tools like Wokwi we can replicate the software learning experience in embedded more effectively. The book also supports programming any supported ESP device in Rust, leveraging the powerful Espressif crates.
-
Getting into Robotics as a Software Engineer
No, no - I have a half a dozen RPi's of varying revisions. Since they run Linux and the SDcards are less than robust, anytime you accidentially trip the power (which to me happens several times during hardware debugging sessions) you risk scrambling the rootfs and thus need to reflash a new SDcard. Some SDcards get damaged.
I recommend using Arduino and/or Wokwi (https://wokwi.com/) to get started.
- Wokwi – Simulate IoT Projects in the Browser
- Simulate IoT Projects in the Browser
-
Embedded Rust Education: 2023 Reflections & 2024 Visions
More Wokwi Integration: Wokwi is an amazing embedded simulator and is great for getting started quickly. For a learner, there's no need for toolchain setup or even the purchase of hardware. There are many features as well that make it quite a flexible tool supporting a lot of features right from the browser. Users can also vote for more features. Still maybe at some point, one might want to tinker with physical hardware. However, at that point, they would have gained some confidence first. Currently, only ESP boards are supported with Rust on Wokwi. I hope for the variety to expand soon.
-
Need advice on Arduino projects and programming
In addition to the other great suggestions here I wanted to point out that you can practice and learn a lot for free using an online simulator such as wokwi.com and tinkercad.com (among others)! And you don't have to buy an Arduino or any parts to get started!
-
Arduino calender clock project
And you can prototype all of this first to get it working for free using an online simulator at sites like wokwi.com or tinkercad.com!
-
How do I get better at Low level programming
If you don't have the budget for real hardware consider the simulator at https://wokwi.com/ It works with Rust (at least for ESP32, haven't tried other architectures). Bonus: you can't blow up the electronics by a wiring mistake.
QEMU
-
Minimal tips to run isolated code
There are several choices for running code in partial or full isolation. Some languages include lightweight environments that do not interfere with each other, e.g., virtual environments in Python. However, due to caching and links, these are not sufficiently isolated for us. At the other end of the spectrum, we can run code in a node of a cloud computing service. However, the overhead and cost make this not worthwhile given our needs: isolation, but not very strong security requirements. Alternatively, we can run a virtual machine or emulator such as QEMU, VirtualBox, or others. This also has too much overhead given our needs.
- Deterministic Replay of QEMU Emulation
-
Weird things I learned while writing an x86 emulator
Over the last year I have been rewriting QEMU's x86 decoder. I am now at a point where it should not be too hard to add APX support.
My decoder is mostly based on the tables in the manual, and the code is mostly okay—not too much indentation and phases mostly easy to separate/identify. Nevertheless there are several cases in which the manual is wrong or doesn't say the whole story.
The top comment explains a bit what's going on: https://github.com/qemu/qemu/blob/59084feb256c617063e0dbe7e6...
- Podman Desktop 1.11: Light mode and new Kubernetes features
-
QEMU networking on macOS
QEMU is an excellent open-source project that enables users to work on various projects across multiple platforms. Starting a VM instance with QEMU is straightforward. On my old Intel-based Mac, the following command will launch an Ubuntu cloud image:
-
Automating the Building of VMs with Packer
Another important tool from the same organization is Vagrant, which provides extra help in running VMs built with Packer. Of course, the choice of a VM provider is also very important, as some VM providers may not be supported on certain platforms. For example, there are no VMware or VirtualBox releases that support Apple Silicon. However, QEMU is supported on most platforms, including Apple Silicon, which is why this provider was chosen here.
-
QEMU Version 9.0.0 Released
My most-wanted QEMU feature: https://github.com/qemu/qemu/commit/a2260983c6553
Using `gic-version=3` on macOS you can now use more than 8 cores on ARM chips.
-
Autoconf makes me think we stopped evolving too soon
A better solution is just to write a plain ass shell script that tests if various C snippets compile.
https://github.com/oilshell/oil/blob/master/configure
https://github.com/oilshell/oil/blob/master/build/detect-pwe...
Not an unholy mix of m4, shell, and C, all in the same file.
---
These are the same style as a the configure scripts that Fabrice Bellard wrote for tcc and QEMU.
They are plain ass shell scripts, because he actually understands the code he writes.
https://github.com/qemu/qemu/blob/master/configure
https://github.com/TinyCC/tinycc/blob/mob/configure
OCaml’s configure script is also “normal”.
You don’t have to copy and paste thousands of lines of GNU stuff that you don’t understand.
(copy of lobste.rs comment)
-
WASM Instructions
Related:
A fast Pascal (Delphi) WebAssembly interpreter:
https://github.com/marat1961/wasm
WASM-4:
https://github.com/aduros/wasm4
Curated list of awesome things regarding WebAssembly (wasm) ecosystem:
https://github.com/mbasso/awesome-wasm
Also, it would be nice if there was a WASM (soft) CPU for QEMU, which (if it existed!) would go here:
https://github.com/qemu/qemu/tree/master/target
-
Revng translates (i386, x86-64, MIPS, ARM, AArch64, s390x) binaries to LLVM IR
> architectural registers are always updated
In tiny code, the guest registers (global TCG variables) are stored in the host's registers until you either call an helper which can access the CPU state or you return (`git grep la_global_sync`). This is the reason why QEMU is not so terribly slow.
But after a check, this also happens when you access the guest memory address space! https://github.com/qemu/qemu/blob/master/include/tcg/tcg-opc... (TCG_OPF_SIDE_EFFECTS is what matters)
But still, in the end, it's the same problem. What QEMU does, can be done in LLVM too. You could probably be more efficient in LLVM by using the exception handling mechanism (invoke and friends) to only serialize back to memory when there's an actual exception, at the cost of higher register pressure. More or less what we do here: https://rev.ng/downloads/bar-2019-paper.pdf
What are some alternatives?
fritzing-app - Fritzing desktop application
UTM - Virtual machines for iOS and macOS
PlatformIO - Your Gateway to Embedded Software Development Excellence :alien:
Unicorn Engine - Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)
WS2812FX - WS2812 FX Library for Arduino and ESP8266
TermuxArch - Experience the pleasure of the Linux command prompt in Android, Chromebook, Fire OS and Windows on smartphone, smartTV, tablet and wearable https://termuxarch.github.io/TermuxArch/
BIPES - BIPES: Block based Integrated Platform for Embedded Systems allows text and block based programming for several types of embedded systems and Internet of Things modules using MicroPython, CircuitPython, Python or Snek. You can connect, program, debug and monitor several types of boards using network, USB or Bluetooth. No software install needed!
Vagrant - Vagrant is a tool for building and distributing development environments.
std-training - Embedded Rust on Espressif training material.
em-dosbox - An Emscripten port of DOSBox
epaper_templates - Template-oriented driver for e-paper displays
Packer - Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.