From dc291bcb5e90f12c3bc0c2e844e667b4272911f4 Mon Sep 17 00:00:00 2001 From: Acfboy Date: Thu, 30 Jul 2026 01:20:41 +0800 Subject: [PATCH 1/3] sim/mw: add mw configuration for Microwindows demo Add the sim:mw defconfig and board documentation entry for the Microwindows demo. This configuration uses the virtual keyboard (event mode), touchscreen, and X11-based framebuffer. Signed-off-by: Acfboy Assisted-by: Opencode/Deepseek-V4-pro --- .../platforms/sim/sim/boards/sim/index.rst | 7 ++++ boards/sim/sim/sim/configs/mw/defconfig | 35 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 boards/sim/sim/sim/configs/mw/defconfig diff --git a/Documentation/platforms/sim/sim/boards/sim/index.rst b/Documentation/platforms/sim/sim/boards/sim/index.rst index c2487ba2ed937..4e12649d6da12 100644 --- a/Documentation/platforms/sim/sim/boards/sim/index.rst +++ b/Documentation/platforms/sim/sim/boards/sim/index.rst @@ -734,6 +734,13 @@ mtdrwb This is the ``apps/examples/mtdrwb`` test using a MTD RAM driver to simulate the FLASH part. +mw +-- + +Microwindows demo configuration using virtual keyboard (event mode), +touchscreen, and framebuffer. See +:doc:`/applications/graphics/microwindows/index` for details. + nettest ------- diff --git a/boards/sim/sim/sim/configs/mw/defconfig b/boards/sim/sim/sim/configs/mw/defconfig new file mode 100644 index 0000000000000..b3abb0dbf8d70 --- /dev/null +++ b/boards/sim/sim/sim/configs/mw/defconfig @@ -0,0 +1,35 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ARCH="sim" +CONFIG_ARCH_BOARD="sim" +CONFIG_ARCH_BOARD_SIM=y +CONFIG_ARCH_CHIP="sim" +CONFIG_ARCH_SIM=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DRIVERS_VIDEO=y +CONFIG_EXAMPLES_MICROWINDOWS=y +CONFIG_FRAME_POINTER=y +CONFIG_INPUT=y +CONFIG_SIM_KEYBOARD=y +CONFIG_SIM_TOUCHSCREEN=y +CONFIG_EXAMPLES_MICROWINDOWS_PROGNAME="mwdemo" +CONFIG_GRAPHICS_MICROWINDOWS=y +CONFIG_MICROWINDOWS_KBD_EVENT=y +CONFIG_MICROWINDOWS_MOUSE_TS=y +CONFIG_MICROWINDOWS_MWIN=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_INIT_ENTRYPOINT="mwdemo_main" +CONFIG_INIT_STACKSIZE=32768 +CONFIG_SIM_WALLTIME_SIGNAL=y +CONFIG_SIM_FBHEIGHT=768 +CONFIG_SIM_FBWIDTH=1024 +CONFIG_SIM_X11FB=y +CONFIG_START_DAY=12 +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2026 +CONFIG_VIDEO_FB=y \ No newline at end of file From 4a2978e41456eadc80cdb20cd550c5476b4491a7 Mon Sep 17 00:00:00 2001 From: Acfboy Date: Thu, 30 Jul 2026 01:23:39 +0800 Subject: [PATCH 2/3] qemu-intel64/mw: add mw configuration and documentation Add the qemu-intel64:mw defconfig and board documentation entry, and the Microwindows application documentation page. This configuration uses the framebuffer, USB HID keyboard (raw byte stream), and USB HID mouse. Signed-off-by: Acfboy Assisted-by: Opencode/Deepseek-V4-pro Signed-off-by: Acfboy --- .../intel64/boards/qemu-intel64/index.rst | 6 ++ .../qemu/qemu-intel64/configs/mw/defconfig | 65 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 boards/x86_64/qemu/qemu-intel64/configs/mw/defconfig diff --git a/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst b/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst index 013d96179b3e9..914844e462cef 100644 --- a/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst +++ b/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst @@ -228,3 +228,9 @@ fb --- Configuration that enables NuttX framebuffer examples. + +mw +-- + +Microwindows demo configuration using framebuffer, USB HID keyboard (raw byte stream), and USB HID mouse. See +:doc:`/applications/graphics/microwindows/index` for details. diff --git a/boards/x86_64/qemu/qemu-intel64/configs/mw/defconfig b/boards/x86_64/qemu/qemu-intel64/configs/mw/defconfig new file mode 100644 index 0000000000000..426959cb53f63 --- /dev/null +++ b/boards/x86_64/qemu/qemu-intel64/configs/mw/defconfig @@ -0,0 +1,65 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_PVHBOOT is not set +CONFIG_16550_ADDRWIDTH=16 +CONFIG_16550_UART0=y +CONFIG_16550_UART0_BASE=0x3f8 +CONFIG_16550_UART0_CLOCK=1843200 +CONFIG_16550_UART0_IRQ=36 +CONFIG_16550_UART0_RXBUFSIZE=16 +CONFIG_16550_UART0_SERIAL_CONSOLE=y +CONFIG_16550_UART0_TXBUFSIZE=16 +CONFIG_16550_UART=y +CONFIG_ARCH="x86_64" +CONFIG_ARCH_BOARD="qemu-intel64" +CONFIG_ARCH_BOARD_INTEL64_QEMU=y +CONFIG_ARCH_CHIP="qemu" +CONFIG_ARCH_CHIP_INTEL64_QEMU=y +CONFIG_ARCH_INTEL64_CORE_FREQ_KHZ=2600000 +CONFIG_ARCH_SIZET_LONG=y +CONFIG_ARCH_X86_64=y +CONFIG_BOOT_RUNFROMEXTSRAM=y +CONFIG_DEFAULT_TASK_STACKSIZE=65536 +CONFIG_DRIVERS_VIDEO=y +CONFIG_EXAMPLES_MICROWINDOWS=y +CONFIG_EXAMPLES_MICROWINDOWS_PROGNAME="mwdemo" +CONFIG_GRAPHICS_MICROWINDOWS=y +CONFIG_MICROWINDOWS_KBD_RAW=y +CONFIG_MICROWINDOWS_MOUSE_RELATIVE=y +CONFIG_MICROWINDOWS_MWIN=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_INIT_ENTRYPOINT="mwdemo_main" +CONFIG_MULTBOOT2_FB=y +CONFIG_PCI=y +CONFIG_PTHREAD_STACK_MIN=4096 +CONFIG_RAM_SIZE=268435456 +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_TICKLESS=y +CONFIG_START_DAY=12 +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2026 +CONFIG_USBHOST=y +CONFIG_USBHOST_HIDKBD=y +CONFIG_USBHOST_HIDMOUSE=y +CONFIG_USBHOST_WAITER=y +CONFIG_USBHOST_XHCI_PCI=y +CONFIG_USEC_PER_TICK=1 +CONFIG_VIDEO_FB=y +CONFIG_PCI_MSIX=y +CONFIG_HIDKBD_STACKSIZE=10240 +CONFIG_HIDMOUSE_STACKSIZE=10240 +CONFIG_HIDMOUSE_XMAX=1024 +CONFIG_HIDMOUSE_YMAX=768 +CONFIG_DEV_SIMPLE_ADDRENV=y +CONFIG_LIBM=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_INIT_PRIORITY=20 +CONFIG_LIBC_KBDCODEC=y +CONFIG_HIDKBD_ENCODED=y +# CONFIG_ARCH_INTEL64_HAVE_PCID is not set From c2a44dd8a4c5ac29c98dc799246fb764c88ca072 Mon Sep 17 00:00:00 2001 From: Acfboy Date: Thu, 30 Jul 2026 01:26:02 +0800 Subject: [PATCH 3/3] Documentation: add Microwindows application documentation page This page covers the Microwindows integration, quick start for both sim:mw and qemu-intel64:mw configurations, available Kconfig options for keyboard/mouse/framebuffer drivers, the mwdemo demo application, and porting guidance for new hardware. Signed-off-by: Acfboy Assisted-by: Opencode/Deepseek-V4-pro --- .../graphics/microwindows/index.rst | 222 ++++++++++++++++++ .../graphics/microwindows/mwdemo-sim.png | Bin 0 -> 46501 bytes 2 files changed, 222 insertions(+) create mode 100644 Documentation/applications/graphics/microwindows/index.rst create mode 100644 Documentation/applications/graphics/microwindows/mwdemo-sim.png diff --git a/Documentation/applications/graphics/microwindows/index.rst b/Documentation/applications/graphics/microwindows/index.rst new file mode 100644 index 0000000000000..015e3d5290297 --- /dev/null +++ b/Documentation/applications/graphics/microwindows/index.rst @@ -0,0 +1,222 @@ +.. _applications_graphics_microwindows: + +Microwindows +============ + +Microwindows is a lightweight windowing system for small- to medium-footprint +embedded systems. It provides: + +- **GDI / Win32 API** -- a low-level C graphics library for direct framebuffer + drawing, suitable for tiny single-threaded applications. +- **mwin** -- a widget toolkit built on the Win32 API, supporting windows, + menus, buttons, edit boxes, list boxes, scroll bars, progress bars, and + timers. +- **Nano-X / X11 API** -- an X11-compatible client/server window system (not + yet enabled for NuttX; work in progress). + +Currently the NuttX integration only enables the GDI / Win32 API and the +mwin widget toolkit. The Nano-X server and X11 client libraries are part of +the upstream project but are not yet wired into the NuttX build. + +Quick Start +=========== + +Microwindows requires a framebuffer device (``CONFIG_VIDEO_FB=y``). + +QEMU x86-64 +----------- + +The ``qemu-intel64:mw`` configuration uses the Multiboot2 framebuffer, +a USB HID keyboard (raw byte stream), and a USB HID mouse:: + + cd nuttx + tools/configure.sh qemu-intel64:mw + make -j$(nproc) + +The build produces a flat ``nuttx.elf`` image. To run it on QEMU you need a +bootable ISO with GRUB2. See :doc:`/platforms/x86_64/intel64/index` for the +step-by-step procedure. In short: + +#. Create the ISO directory structure:: + + mkdir -p iso/boot/grub + +#. Write ``grub.cfg``:: + + echo 'set timeout=0' > iso/boot/grub/grub.cfg + echo 'set default=0' >> iso/boot/grub/grub.cfg + echo 'menuentry "kernel" {' >> iso/boot/grub/grub.cfg + echo ' multiboot2 /boot/nuttx.elf' >> iso/boot/grub/grub.cfg + echo '}' >> iso/boot/grub/grub.cfg + +#. Copy ``nuttx.elf`` and create the ISO:: + + cp nuttx.elf iso/boot/ + grub-mkrescue -o boot.iso iso + +#. Run QEMU (omit ``-nographic`` so the framebuffer window opens):: + + qemu-system-x86_64 -cpu host -enable-kvm -m 2G -cdrom boot.iso + +The pre-built config sets ``CONFIG_INIT_ENTRYPOINT="mwdemo_main"`` so the +demo starts immediately. + +Simulator +--------- + +The ``sim:mw`` configuration uses the virtual keyboard, touchscreen, and +X11-based framebuffer:: + + cd nuttx + tools/configure.sh sim:mw + make -j$(nproc) + +This builds a host-native ``./nuttx`` binary that opens an X11 window. +Keyboard input goes to the window that has focus; touch events are generated +by mouse clicks within the window. + +See also the respective board documentation for configuration details: + +* :doc:`/platforms/sim/sim/boards/sim/index` — ``sim:mw`` configuration +* :doc:`/platforms/x86_64/intel64/boards/qemu-intel64/index` — ``qemu-intel64:mw`` configuration + +Available Configurations +======================== + +To enable Microwindows, set ``CONFIG_GRAPHICS_MICROWINDOWS=y``. +The library is located at ``apps/graphics/microwindows``. + +Dependencies +------------ + +All configurations require ``CONFIG_VIDEO_FB=y``. + +For **qemu-intel64:mw** the following input-related options are required: + + ``CONFIG_USBHOST=y``, ``CONFIG_USBHOST_HIDKBD=y``, ``CONFIG_USBHOST_HIDMOUSE=y``, + ``CONFIG_USBHOST_XHCI_PCI=y``, ``CONFIG_USBHOST_WAITER=y``, + ``CONFIG_LIBC_KBDCODEC=y``, ``CONFIG_HIDKBD_ENCODED=y`` + +For **sim:mw** the following input options are required: + + ``CONFIG_INPUT=y``, ``CONFIG_SIM_KEYBOARD=y``, ``CONFIG_SIM_TOUCHSCREEN=y`` + +Keyboard Drivers +---------------- + +``choice`` prompt: ``"Keyboard driver"`` + +``MICROWINDOWS_KBD_EVENT`` + Reads ``keyboard_event_s`` events from ``/dev/kbd`` (path configurable). + Supports key press/release tracking and modifier keys (Shift, Ctrl, Alt). + + Device path config: ``MICROWINDOWS_KBD_EVENT_PATH`` (default ``/dev/kbd``). + +``MICROWINDOWS_KBD_RAW`` + Reads raw byte stream from ``/dev/kbda`` (path configurable). Decodes + escape sequences via the ``kbd_codec`` library. Requires + ``LIBC_KBDCODEC=y``. Suitable for USB HID keyboards. + + Device path config: ``MICROWINDOWS_KBD_RAW_PATH`` (default ``/dev/kbda``). + +``MICROWINDOWS_KBD_NONE`` + No keyboard driver is compiled. Microwindows uses a null driver that + never produces input. Suitable for display-only applications. + +``MICROWINDOWS_KBD_CUSTOM`` + No built-in keyboard driver is compiled. The application or BSP must + provide its own ``kbddev`` symbol and ``KBDDEVICE`` implementation, and + add the source file to the build (e.g. via ``CSRCS`` in its Makefile). + +Mouse / Touchscreen Drivers +--------------------------- + +``choice`` prompt: ``"Mouse/touchscreen driver"`` + +``MICROWINDOWS_MOUSE_RELATIVE`` + Reads ``mouse_report_s`` events from ``/dev/mouse0`` (path configurable). + Supports three buttons and scroll wheel. + + Device path config: ``MICROWINDOWS_MOUSE_PATH`` (default ``/dev/mouse0``). + +``MICROWINDOWS_MOUSE_TS`` + Reads ``touch_sample_s`` events from ``/dev/input0`` (path configurable). + Supports absolute positioning. + + Device path config: ``MICROWINDOWS_TS_PATH`` (default ``/dev/input0``). + +``MICROWINDOWS_MOUSE_NONE`` + No pointing device driver is compiled. Microwindows uses a null driver + that hides the cursor and produces no input. + +``MICROWINDOWS_MOUSE_CUSTOM`` + No built-in pointing device driver is compiled. The application or BSP + must provide its own ``mousedev`` symbol and ``MOUSEDEVICE`` + implementation, and add the source file to the build. + +Framebuffer +----------- + +``MICROWINDOWS_FB_PATH`` + Path to the NuttX framebuffer device. Default ``/dev/fb0``. + +Microwindows Demo Application +============================= + +Enable with ``CONFIG_EXAMPLES_MICROWINDOWS=y``. The example is located at +``apps/examples/microwindows``. + +It ports ``mwdemo.c`` from upstream, which exercises the mwin widget toolkit +(buttons, edit boxes, list boxes, scroll bars, progress bars). The demo uses +``GdOpenScreen()`` to initialise the framebuffer and enters a Win32-style +message loop with ``GetMessage()`` / ``DispatchMessage()``. + +.. figure:: mwdemo-sim.png + :align: center + :alt: The Microwindows mwdemo running on the NuttX simulator. + + The mwdemo application running on the NuttX simulator (``sim:mw``). + +``EXAMPLES_MICROWINDOWS_PROGNAME`` + Program name for the NSH ELF install (default ``"mwexample"``). +``EXAMPLES_MICROWINDOWS_PRIORITY`` + Task priority (default ``100``). For setups where input threads + have a lower priority, consider lowering this value. + + .. warning:: + + On ``qemu-intel64:mw`` the default USB HID mouse thread priority + (``CONFIG_HIDMOUSE_DEFPRIO``, default 50) is lower than the demo + application priority (100). When dragging a window, Microwindows' + ``MwSelect`` switches to polling (``select`` with timeout 0), which can + starve the USB input thread and make the whole system appear frozen. + Raise ``CONFIG_HIDMOUSE_DEFPRIO`` (e.g. to 120), lower + ``EXAMPLES_MICROWINDOWS_PRIORITY``, or fix the drag loop to use a small + non-zero timeout. + +``EXAMPLES_MICROWINDOWS_STACKSIZE`` + Stack size in bytes (default ``32768``). + +Porting to New Hardware +======================= + +The Microwindows source is downloaded at build time from the upstream +repository. NuttX-specific screen, keyboard, and mouse drivers live +in upstream ``src/drivers/`` (``scr_nuttx.c``, ``kbd_nuttx_event.c``, +``kbd_nuttx_raw.c``, ``mou_nuttx_mouse.c``, ``mou_nuttx_ts.c``). + +A board with a working framebuffer and input devices needs: + +#. A ``defconfig`` enabling ``CONFIG_VIDEO_FB``, ``GRAPHICS_MICROWINDOWS``, + and the appropriate keyboard/mouse driver choice. +#. For framebuffer-only (display-only) use, select ``KBD_NONE`` and + ``MOUSE_NONE``. + +If the board's input hardware does not fit the built-in drivers, select +``KBD_CUSTOM`` and/or ``MOUSE_CUSTOM`` and provide your own driver source. + +Resources +========= + +- `Microwindows upstream repository `_ +- `NuttX Discussion Issue #18566 `_ diff --git a/Documentation/applications/graphics/microwindows/mwdemo-sim.png b/Documentation/applications/graphics/microwindows/mwdemo-sim.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed212c6e148f0de283eb82cb7db1c17e236f88f GIT binary patch literal 46501 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 sZ+66d+BK<{9 literal 0 HcmV?d00001