Skip to content

Latest commit

ย 

History

History
559 lines (411 loc) ยท 12.2 KB

File metadata and controls

559 lines (411 loc) ยท 12.2 KB

๐Ÿ–ฅ๏ธ Ardudows Systems

ESP32-S3 ๊ธฐ๋ฐ˜ ์‹คํ—˜์  ์ž„๋ฒ ๋””๋“œ ์šด์˜์ฒด์ œ

Experimental Embedded Operating System for ESP32-S3

โ€œESP32-S3๋ฅผ ์–ด๋””๊นŒ์ง€ ์ปดํ“จํ„ฐ์ฒ˜๋Ÿผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ?โ€ โ€œHow far can an ESP32-S3 become a computer-like system?โ€


๐Ÿ“– ์†Œ๊ฐœ / Introduction

Ardudows Systems๋Š” ESP32-S3 ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ์ž‘๋œ ์‹คํ—˜์  ์ž„๋ฒ ๋””๋“œ ์šด์˜์ฒด์ œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. Ardudows Systems is an experimental embedded operating system project built for the ESP32-S3 platform.

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ˆœํ•œ Arduino ์˜ˆ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ ํ™˜๊ฒฝ์—์„œ ์šด์˜์ฒด์ œ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. This project is not just a simple Arduino sketch. It aims to implement operating-system-like structures inside a microcontroller environment.

GUI ์‹œ์Šคํ…œ, ํŒŒ์ผ ์‹œ์Šคํ…œ, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ๋“œ๋ผ์ด๋ฒ„ ๊ตฌ์กฐ, ๋„คํŠธ์›Œํฌ ์‹œ์Šคํ…œ, USB Host, OTA ์—…๋ฐ์ดํŠธ ๋“ฑ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GUI systems, file systems, registry systems, driver structures, networking systems, USB Host support, and OTA updates are implemented directly inside the project.


โš ๏ธ Important Notice / ์ค‘์š” ์•ˆ๋‚ด

Ardudows Systems๋Š” ๋งค์šฐ ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. Ardudows Systems is a highly experimental project.

์ผ๋ถ€ ๊ธฐ๋Šฅ์€ ์•„์ง ์™„์ „ํžˆ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Some features may not be fully implemented or may not work correctly.

ํŠนํžˆ ๋‹ค์Œ ๊ธฐ๋Šฅ๋“ค์€ ๊ฐœ๋ฐœ ์ค‘์ด๊ฑฐ๋‚˜ ๋ถˆ์•ˆ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: The following systems may still be unstable or incomplete:

  • USB Host
  • BLE Features
  • Async Networking
  • OTA Update
  • GUI Components
  • File System Operations
  • Multi-tasking

ESP32-S3 ํ™˜๊ฒฝ, SPI ์†๋„, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๋“ฑ์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Behavior may vary depending on ESP32-S3 environment, SPI speed, and library versions.


โœจ ์ฃผ์š” ํŠน์ง• / Features

๐ŸชŸ GUI ์‹œ์Šคํ…œ / GUI System

  • TFT_eSPI ๊ธฐ๋ฐ˜ GUI
  • Keyboard-driven interface
  • Window-style desktop environment
  • JPEG image rendering support

๐Ÿ“‚ ํŒŒ์ผ ์‹œ์Šคํ…œ / File System

  • SD ์นด๋“œ ๊ธฐ๋ฐ˜ ์ €์žฅ ๊ตฌ์กฐ
  • Custom directory system
  • Registry-style configuration files
  • Custom Ardudows file extensions

๐ŸŒ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ / Networking

  • Wi-Fi support
  • HTTP / HTTPS client
  • Async Web Server
  • DNS Server
  • Socket.IO support

๐Ÿ”Œ ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ / Hardware Features

  • USB Host support
  • TinyUSB integration
  • BLE Scan / BLE Client
  • OTA firmware update
  • SPI TFT display support
  • PS/2 keyboard support

๐Ÿง  ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ / Project Goals

Ardudows Systems์˜ ๋ชฉํ‘œ๋Š” ESP32-S3๋ฅผ ๋‹จ์ˆœ IoT ์นฉ์ด ์•„๋‹Œ โ€œ์†Œํ˜• ์ปดํ“จํ„ฐ ํ”Œ๋žซํผโ€์ฒ˜๋Ÿผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. The goal of Ardudows Systems is to push the ESP32-S3 beyond a simple IoT chip and use it as a mini computer platform.

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ ๊ฐœ๋…๋“ค์„ ์‹คํ—˜ํ•ฉ๋‹ˆ๋‹ค: This project experiments with:

  • ๐Ÿ–ฅ๏ธ GUI systems
  • โšก Lightweight operating system structures
  • ๐Ÿ“‚ File system architecture
  • ๐ŸŒ Network integration
  • ๐Ÿ”Œ Hardware abstraction
  • ๐Ÿง  Embedded desktop environments

๐Ÿงฉ ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ / Hardware Requirements

ํ•„์ˆ˜ ํ•˜๋“œ์›จ์–ด / Required Hardware

  • ESP32-S3 N16R8
  • SPI TFT Display (ILI9488 Recommended)
  • PS/2 Keyboard

์„ ํƒ ํ•˜๋“œ์›จ์–ด / Optional Hardware

  • SD Card Module
  • RTC Module
  • USB Devices
  • Wi-Fi Network

๐Ÿ“ฆ ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / Libraries Used

Ardudows Systems๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ €์ˆ˜์ค€ ESP32 ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Ardudows Systems uses many libraries and low-level ESP32 features.

#include <string.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include <FS.h>
#include <SD.h>
#include <esp_system.h>
#include <WiFi.h>
#include <Preferences.h>
#include <WebServer.h>
#include <DNSServer.h>
#include <Wire.h>
#include <HTTPClient.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEClient.h>
#include <BLEAdvertisedDevice.h>
#include "esp_wifi.h"
#include <esp_netif.h>
#include "type.h"
#include <WiFiClientSecure.h>
#include "router.h"
#include <Update.h>
#include <esp_ota_ops.h>
#include <SocketIoClient.h>
#include <TJpg_Decoder.h>
#include "tusb.h"
#include <math.h>
#include <ESPAsyncWebServer.h>
#include <freertos/semphr.h>
#include <AsyncTCP.h>
#include "usb/usb_host.h"
#include "esp_intr_alloc.h"
#include "esp_log.h"
#include "esp_efuse.h"
#include "esp_task_wdt.h"
#include "soc/rtc_cntl_reg.h"
#include "soc/soc.h"
#include "esp_partition.h"

๐Ÿงช ๊ฐœ๋ฐœ ํ™˜๊ฒฝ / Development Environment

Component Version
Arduino IDE 2.x
ESP32 Board Package 3.3.8
Board ESP32-S3 N16R8
Display ILI9488 SPI TFT
PSRAM Enabled

๐Ÿ”ง Required TFT_eSPI Configuration / ํ•„์ˆ˜ TFT_eSPI ์„ค์ •

๋‹ค์Œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: You must edit this file:

Arduino/libraries/TFT_eSPI/User_Setup.h

๊ถŒ์žฅ ์„ค์ •: Recommended configuration:

// ==========================================================
//  Ardudows TFT Setup
//  ESP32-S3 + ILI9488 (SPI)
// ==========================================================

#define USER_SETUP_INFO "ESP32-S3 + ILI9488 SPI"

// -------------------------------
// Display driver
// -------------------------------
#define ILI9488_DRIVER

// -------------------------------
// SPI pins (ESP32-S3 SAFE PINS)
// -------------------------------

#define TFT_MOSI 11
#define TFT_SCLK 14
#define TFT_CS   10
#define TFT_DC   9
#define TFT_RST  8

//#define TFT_MISO 35

#define SD_CS    7
#define SD_MISO  13
#define SD_MOSI  6
#define SD_SCLK  16

// -------------------------------
// Backlight
// -------------------------------

#define TFT_BL -1
#define TFT_BACKLIGHT_ON HIGH

// -------------------------------
// SPI settings
// -------------------------------

#define SPI_FREQUENCY       40000000
#define SPI_READ_FREQUENCY  20000000
#define SPI_TOUCH_FREQUENCY 2500000

// -------------------------------
// ESP32-S3 SPI
// -------------------------------

#define USE_HSPI_PORT

// -------------------------------
// Display size
// -------------------------------

#define DISPLAY_W 480
#define DISPLAY_H 320

// -------------------------------
// Fonts
// -------------------------------

#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF
#define SMOOTH_FONT

// -------------------------------
// Optional settings
// -------------------------------

//#define TFT_RGB_ORDER TFT_BGR
//#define TFT_INVERSION_ON

โšก SPI Frequency Warning / SPI ์ฃผํŒŒ์ˆ˜ ๊ฒฝ๊ณ 

๋„ˆ๋ฌด ๋†’์€ SPI ์†๋„๋Š” ESP32-S3์—์„œ ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: Too high SPI frequency may cause:

  • ํ™”๋ฉด ๊นจ์ง / Screen corruption
  • SD ์นด๋“œ ์˜ค๋ฅ˜ / SD card errors
  • ๋ถ€ํŒ… ์‹คํŒจ / Boot failure
  • ๋žœ๋ค ํฌ๋ž˜์‹œ / Random crashes
  • ์‹œ์Šคํ…œ ๋ฉˆ์ถค / System freeze

์ถ”์ฒœ ์„ค์ •: Recommended setting:

#define SPI_FREQUENCY 40000000

๐Ÿš€ ์‹œ์ž‘ ๋ฐฉ๋ฒ• / Getting Started

1๏ธโƒฃ Arduino IDE ์„ค์น˜

Install Arduino IDE


2๏ธโƒฃ ESP32 Board Package ์„ค์น˜

Install ESP32 board package

์ถ”์ฒœ ๋ฒ„์ „: Recommended version:

ESP32 Board Package 3.3.8

3๏ธโƒฃ PSRAM ํ™œ์„ฑํ™”

Enable PSRAM

Arduino IDE ์„ค์ •:

PSRAM โ†’ Enabled

4๏ธโƒฃ Partition Scheme ์„ค์ •

Configure Partition Scheme

์ถ”์ฒœ ์„ค์ •:

16MB Flash

5๏ธโƒฃ ์—…๋กœ๋“œ

Upload firmware to ESP32-S3


๐Ÿ“ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ / Directory Structure

/Ardudows
โ”œโ”€โ”€ System
โ”‚   โ”œโ”€โ”€ Registry
โ”‚   โ”‚   โ”œโ”€โ”€ User.asf
โ”‚   โ”‚   โ”œโ”€โ”€ Network.asf
โ”‚   โ”‚   โ”œโ”€โ”€ Setup.asf
โ”‚   โ”‚   โ”œโ”€โ”€ Kernel.asf
โ”‚   โ”‚   โ””โ”€โ”€ Boot.asf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Driver
โ”‚   โ”‚   โ”œโ”€โ”€ TFT.adf
โ”‚   โ”‚   โ”œโ”€โ”€ SD.adf
โ”‚   โ”‚   โ”œโ”€โ”€ RTC.adf
โ”‚   โ”‚   โ””โ”€โ”€ Touch.adf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Kernel
โ”‚   โ”‚   โ”œโ”€โ”€ AFK
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Ardudows.akf
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ””โ”€โ”€ ATK
โ”‚   โ”‚       โ””โ”€โ”€ Ardudows.akf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Log
โ”‚   โ”‚   โ”œโ”€โ”€ Boot.arf
โ”‚   โ”‚   โ”œโ”€โ”€ Dump.arf
โ”‚   โ”‚   โ”œโ”€โ”€ Output.arf
โ”‚   โ”‚   โ”œโ”€โ”€ panic.arf
โ”‚   โ”‚   โ”œโ”€โ”€ Hardware
โ”‚   โ”‚   โ””โ”€โ”€ Software
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ NetWork
โ”‚   โ”‚   โ”œโ”€โ”€ config.anf
โ”‚   โ”‚   โ””โ”€โ”€ NetCheck.anf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Boot
โ”‚   โ”‚   โ””โ”€โ”€ Boot.abf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ API
โ”‚   โ”‚   โ””โ”€โ”€ API.asf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Debug
โ”‚   โ”‚   โ””โ”€โ”€ Debug.asf
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Setup
โ”‚   โ”‚   โ””โ”€โ”€ Setup.asf
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ Firmware
โ”‚       โ””โ”€โ”€ Firmware.asf
โ”‚
โ”œโ”€โ”€ Users
โ”‚   โ””โ”€โ”€ Administrator
โ”‚       โ”œโ”€โ”€ Administrator.auf
โ”‚       โ””โ”€โ”€ UserDATA
โ”‚           โ””โ”€โ”€ UserDATA.auf
โ”‚
โ”œโ”€โ”€ Programs
โ”‚   โ”œโ”€โ”€ Programs_X16
โ”‚   โ”‚   โ”œโ”€โ”€ Explorer
โ”‚   โ”‚   โ”œโ”€โ”€ CMD
โ”‚   โ”‚   โ”œโ”€โ”€ NotePad
โ”‚   โ”‚   โ”œโ”€โ”€ Clock
โ”‚   โ”‚   โ”œโ”€โ”€ Calculators
โ”‚   โ”‚   โ””โ”€โ”€ Registry_Editer
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ Programs_X32
โ”‚       โ””โ”€โ”€ Minecraft_Server
โ”‚
โ”œโ”€โ”€ Assets
โ”‚   โ”œโ”€โ”€ Image
โ”‚   โ”œโ”€โ”€ Font
โ”‚   โ”œโ”€โ”€ Sound
โ”‚   โ””โ”€โ”€ Other
โ”‚
โ””โ”€โ”€ Licens
    โ”œโ”€โ”€ ReadME.aif
    โ””โ”€โ”€ Product.alf

๐Ÿ“– ํŒŒ์ผ ํ™•์žฅ์ž / File Extension Types

Extension Description
.asf Ardudows System File
.adf Ardudows Driver File
.akf Ardudows Kernel File
.apf Ardudows Program File
.arf Ardudows Report / Log File
.anf Ardudows Network File
.abf Ardudows Boot File
.auf Ardudows User File
.acf Ardudows CD File
.awf Ardudows Weird / Easteregg File

๐Ÿ“Š ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ / System Resource Usage

ํ˜„์žฌ ESP32-S3 N16R8 ๊ธฐ์ค€ ์‚ฌ์šฉ๋Ÿ‰: Current usage on ESP32-S3 N16R8:

Resource Usage
Flash Usage ~3MB / 16MB
RAM Usage ~223KB / 327KB
Display 480x320 SPI TFT
SPI Frequency 40MHz
PSRAM Enabled

โœ… ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ / Implemented Features

  • GUI System
  • SD Card File System
  • Registry System
  • Wi-Fi Support
  • BLE Support
  • OTA Update
  • USB Host
  • Driver System
  • Logging System
  • Installer System
  • Network System

๐Ÿšง ์˜ˆ์ • ๊ธฐ๋Šฅ / Planned Features

  • Audio System
  • Mouse Support
  • Multi-window GUI
  • Package Manager
  • Advanced Shell
  • App Store-style System
  • ArduCraft Experiment

๐Ÿ› ๏ธ ๋ฌธ์ œ ํ•ด๊ฒฐ / Troubleshooting

โš ๏ธ White Screen

TFT ํ•€ ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”. Check TFT pin configuration.


โš ๏ธ SD Card Error

SD ์นด๋“œ SPI ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”. Check SD card SPI configuration.


โš ๏ธ Boot Loop

SPI ์ฃผํŒŒ์ˆ˜๋ฅผ ๋‚ฎ์ถฐ๋ณด์„ธ์š”. Try lowering SPI frequency.


โš ๏ธ USB Problems

์ผ๋ถ€ USB ์žฅ์น˜๋Š” ์ถ”๊ฐ€ ์ „๋ ฅ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Some USB devices may require additional power.


๐Ÿ‘จโ€๐Ÿ’ป ์ œ์ž‘์ž / Author

  • windows10101713
  • Chat GPT
  • Gemini

๐Ÿ“œ ๋ผ์ด์„ ์Šค / License

์ด ํ”„๋กœ์ ํŠธ๋Š” ํ•™์Šต, ์‹คํ—˜ ๋ฐ ๊ฐœ๋ฐœ ๋ชฉ์ ์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. This project is intended for learning, experimentation, and development purposes.


โญ ํ”„๋กœ์ ํŠธ ์ƒํƒœ / Project Status

Experimental / Alpha Build ์‹คํ—˜์  ์•ŒํŒŒ ๋นŒ๋“œ

โ€œESP32-S3๋ฅผ ์šด์˜์ฒด์ œ์ฒ˜๋Ÿผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์‹คํ—˜.โ€ โ€œAn experiment to turn the ESP32-S3 into a computer-like operating system.โ€

Do not build another Windows. Do not build another Linux. Build something that could only be Ardudows.

๋˜ ํ•˜๋‚˜์˜ Windows๋ฅผ ๋งŒ๋“ค์ง€ ๋ง์•„๋ผ. ๋˜ ํ•˜๋‚˜์˜ Linux๋ฅผ ๋งŒ๋“ค์ง€ ๋ง์•„๋ผ. ์˜ค์ง Ardudows๋งŒ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋ผ.