-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documentation for QEMU is confusing, inaccurate and insufficient. #3
Comments
@igrr Hello. I had some time to play with QEMU emulating ESP32-C3 chip and firmware built with SDK v5.3. What I have found:
Probably this is somehow related to MTD device caching in QEMU, i'm not sure, but i spent several hours to understand if the problem is in my firmware or not. So I think this point is worth mentioning in the documentation.
and later will panic with
I guess this is worth mentioning in the documentation too. |
@Joebeazelman Thanks for reporting the issues with the documentation you encountered. For IDF users, we have added QEMU documentation here: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/qemu.html. It contains instructions on running IDF apps in QEMU, as well as enabling graphics support. We'll still keep the generic instructions in this repo since QEMU can also be used for applications not built with ESP-IDF (e.g. Zephyr or NuttX applications.) @valkuc To answer your questions:
|
I just discovered the ESP32-s3 isn't supported QEMU. Can I retarget my ESP32-s3 project to another compatible SoC supported by QEMU without making extensive modifications? I understand there are linkage and pin differences. |
@Joebeazelman Yes, in addition to building your project for the ESP32-S3 target you can also build it for ESP32. IDF multi_config example can be one way how to conveniently build the project for two chip targets side by side. Typically, if you aren't using anything very low level and if you aren't using peripherals which don't exist on another chip, the project should be portable between chip targets without extensive modifications. |
The documentation for QEMU RGB Panel is confusing and insufficient. First, under the Build and Run section, the user is instructed to build the project, but it doesn't specify type of image it will build. Will it build for the actual device or QEMU? There are no instructions for running the image. Instead, you're linked to a very general QEMU readme, which begins by instructing the user on how to build QEMU. It doesn't specify a link to the git repository containing the source to build. It becomes a detective game to discover it. After an hour or so of dead ends trying to build it, I found a prebuilt binary which was never mentioned in the documentation, resulting wasted effort.
Second, halfway down the QEMU docs page there are instructions on how to run the image. The example command-lines given are very generalized and unclear whether they will work for the built image. I couldn't get the image to execute due to an invalid binary format. It would be enormously helpful if the examples were specific instead of generalized.
Third, after many hours spent trying to get the example to run, I discovered QEMU was already installed and could be run by running idf.py qemu with the correct parameters. Unfortunately, the QEMU RGB Panel example disables the QEMU display by default.
This is why many users don't bother to read the documentation. They are often poorly written, leading to confusion, and frustration. Many developers often don't value writing decent documentation.
The text was updated successfully, but these errors were encountered: