-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgetting-started.html
More file actions
270 lines (259 loc) · 23.5 KB
/
getting-started.html
File metadata and controls
270 lines (259 loc) · 23.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Getting Started - EmbeddedOS</title>
<meta name="description" content="Get started with EmbeddedOS in minutes. Choose your path: simulator, Raspberry Pi, STM32, app development, or EoStudio design.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://embeddedos-org.github.io/getting-started.html">
<meta property="og:title" content="Getting Started - EmbeddedOS">
<meta property="og:description" content="Get started with EmbeddedOS in minutes. Choose your path: simulator, Raspberry Pi, STM32, app development, or EoStudio design.">
<meta property="og:image" content="https://embeddedos-org.github.io/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Getting Started - EmbeddedOS">
<meta name="twitter:description" content="Get started with EmbeddedOS in minutes. Choose your path: simulator, Raspberry Pi, STM32, app development, or EoStudio design.">
<meta name="twitter:image" content="https://embeddedos-org.github.io/og-image.png">
<link rel="canonical" href="https://embeddedos-org.github.io/getting-started.html">
<link rel="preload" href="style.css" as="style">
<link rel="stylesheet" href="style.css">
<style>
.path-selector{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;margin:2rem 0}
.path-btn{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 1rem;background:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-lg);cursor:pointer;transition:all .3s;text-align:center;color:var(--text-primary);font-weight:600}
.path-btn:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.path-btn.active{border-color:var(--blue);background:var(--blue-dim)}
.path-btn .path-emoji{font-size:2rem}
.path-content{display:none;animation:fadeIn .3s}
.path-content.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.path-btn .svg-icon{margin-bottom:0.25rem}
.path-btn .svg-icon svg{width:48px;height:48px}
</style></head><body>
<svg width="0" height="0" aria-hidden="true" style="position:absolute"><defs>
<linearGradient id="gs-grad-pcb" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#1a5a2a"/><stop offset="100%" stop-color="#0d3318"/></linearGradient>
</defs></svg>
<nav class="navbar"><div class="nav-inner">
<a href="index.html" class="logo"><span class="logo-icon">EoS</span> EmbeddedOS <span class="nav-version">v0.1.0</span></a>
<button class="nav-toggle" onclick="this.nextElementSibling.classList.toggle('open')" aria-label="Menu">☰</button><div class="nav-links"><a href="index.html">Home</a><a href="getting-started.html" class="active">Get Started</a><a href="docs/index.html">Docs</a><a href="https://embeddedos-org.github.io/eApps/" class="nav-github">🏪 App Store</a><a href="kids.html">Kids 🎮</a><a href="hardware-lab.html">Hardware Lab 🔌</a><a href="flow.html">Flow</a>
<a href="https://github.com/embeddedos-org" class="nav-github">★ GitHub</a>
<button class="nav-search-btn" onclick="EosSearch.open()" aria-label="Search" title="Search (/)">🔍</button></div></div></nav>
<div class="content-wrapper" style="max-width:900px">
<h1>Getting Started with EmbeddedOS <span class="version-badge">v0.1.0</span></h1>
<p>Choose the path that fits what you have and what you want to do. Each path takes about 10 minutes!</p>
<h2 style="border:none;text-align:center;font-size:1.6rem">🎯 Choose Your Path</h2>
<div class="path-selector">
<div class="path-btn active" onclick="showPath('sim')"><div class="svg-icon"><svg viewBox="0 0 48 48" aria-hidden="true"><rect x="6" y="6" width="36" height="26" rx="3" fill="none" stroke="#3fb950" stroke-width="2"/><line x1="6" y1="10" x2="42" y2="10" stroke="#3fb950" stroke-width="0.8" opacity="0.4"/><rect x="12" y="15" width="12" height="10" rx="1" fill="url(#gs-grad-pcb)" stroke="#3fb950" stroke-width="0.8"/><rect x="15" y="18" width="5" height="4" fill="#1a1e24" stroke="#58a6ff" stroke-width="0.5"/><circle cx="34" cy="20" r="2" fill="#f85149" opacity="0.7"><animate attributeName="opacity" values="0.3;1;0.3" dur="2s" repeatCount="indefinite"/></circle><circle cx="34" cy="26" r="1.5" fill="#3fb950" opacity="0.6"/><line x1="18" y1="34" x2="30" y2="34" stroke="#3fb950" stroke-width="2" stroke-linecap="round"/><line x1="24" y1="32" x2="24" y2="34" stroke="#3fb950" stroke-width="2"/></svg></div>No Hardware<span class="path-label">Simulator only</span></div>
<div class="path-btn" onclick="showPath('raspi')"><div class="svg-icon"><svg viewBox="0 0 48 48" aria-hidden="true"><rect x="8" y="8" width="32" height="32" rx="3" fill="url(#gs-grad-pcb)" stroke="#2a8a4a" stroke-width="1"/><rect x="18" y="16" width="10" height="10" rx="1.5" fill="#1a1e24" stroke="#3fb950" stroke-width="1"/><text x="23" y="23" text-anchor="middle" fill="#3fb950" font-size="4" font-family="monospace">RPi</text><rect x="34" y="12" width="6" height="5" rx="1" fill="#2a2e34" stroke="#6e7681" stroke-width="0.5"/><rect x="34" y="18" width="6" height="5" rx="1" fill="#2a2e34" stroke="#6e7681" stroke-width="0.5"/><rect x="34" y="28" width="6" height="8" rx="1" fill="#2a2e34" stroke="#6e7681" stroke-width="0.5"/><g><circle cx="12" cy="10" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="14" cy="10" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="16" cy="10" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="18" cy="10" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="20" cy="10" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="12" cy="12" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="14" cy="12" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="16" cy="12" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="18" cy="12" r="0.6" fill="#e3b341" opacity="0.5"/><circle cx="20" cy="12" r="0.6" fill="#e3b341" opacity="0.5"/></g><circle cx="12" cy="34" r="1.5" fill="#3fb950" opacity="0.7"><animate attributeName="opacity" values="0.3;1;0.3" dur="2s" repeatCount="indefinite"/></circle></svg></div>Raspberry Pi<span class="path-label">RPi 4 or 5</span></div>
<div class="path-btn" onclick="showPath('stm32')"><div class="svg-icon"><svg viewBox="0 0 48 48" aria-hidden="true"><rect x="8" y="8" width="32" height="32" rx="3" fill="url(#gs-grad-pcb)" stroke="#2a8a4a" stroke-width="1"/><rect x="16" y="14" width="14" height="14" rx="2" fill="#1a1e24" stroke="#79c0ff" stroke-width="1"/><text x="23" y="23" text-anchor="middle" fill="#79c0ff" font-size="4" font-family="monospace">STM</text><line x1="18" y1="14" x2="18" y2="10" stroke="#8b949e" stroke-width="1.2"/><line x1="22" y1="14" x2="22" y2="10" stroke="#8b949e" stroke-width="1.2"/><line x1="26" y1="14" x2="26" y2="10" stroke="#8b949e" stroke-width="1.2"/><line x1="18" y1="28" x2="18" y2="32" stroke="#8b949e" stroke-width="1.2"/><line x1="22" y1="28" x2="22" y2="32" stroke="#8b949e" stroke-width="1.2"/><line x1="26" y1="28" x2="26" y2="32" stroke="#8b949e" stroke-width="1.2"/><circle cx="12" cy="12" r="1.5" fill="#3fb950" opacity="0.7"><animate attributeName="opacity" values="0.3;1;0.3" dur="2s" repeatCount="indefinite"/></circle><circle cx="12" cy="17" r="1.5" fill="#f85149" opacity="0.5"/><rect x="34" y="18" width="6" height="8" rx="1" fill="#2a2e34" stroke="#6e7681" stroke-width="0.5"/></svg></div>STM32 Board<span class="path-label">Discovery/Nucleo</span></div>
<div class="path-btn" onclick="showPath('apps')"><div class="svg-icon"><svg viewBox="0 0 48 48" aria-hidden="true"><rect x="10" y="4" width="18" height="30" rx="3" fill="none" stroke="#e3b341" stroke-width="1.5"/><line x1="10" y1="10" x2="28" y2="10" stroke="#e3b341" stroke-width="0.5" opacity="0.4"/><line x1="10" y1="28" x2="28" y2="28" stroke="#e3b341" stroke-width="0.5" opacity="0.4"/><rect x="13" y="13" width="5" height="5" rx="1" fill="#58a6ff" opacity="0.5"/><rect x="20" y="13" width="5" height="5" rx="1" fill="#3fb950" opacity="0.5"/><rect x="13" y="21" width="5" height="5" rx="1" fill="#f0883e" opacity="0.5"/><rect x="20" y="21" width="5" height="5" rx="1" fill="#bc8cff" opacity="0.5"/><rect x="30" y="10" width="12" height="20" rx="2" fill="none" stroke="#e3b341" stroke-width="1" opacity="0.6"/><rect x="32" y="13" width="3" height="3" rx="0.5" fill="#58a6ff" opacity="0.3"/><rect x="37" y="13" width="3" height="3" rx="0.5" fill="#3fb950" opacity="0.3"/><rect x="32" y="18" width="3" height="3" rx="0.5" fill="#f0883e" opacity="0.3"/><rect x="37" y="18" width="3" height="3" rx="0.5" fill="#bc8cff" opacity="0.3"/></svg></div>I Want Apps<span class="path-label">Build eApps</span></div>
<div class="path-btn" onclick="showPath('design')"><div class="svg-icon"><svg viewBox="0 0 48 48" aria-hidden="true"><rect x="6" y="6" width="36" height="28" rx="2" fill="none" stroke="#f778ba" stroke-width="1.5"/><line x1="6" y1="12" x2="42" y2="12" stroke="#f778ba" stroke-width="0.5" opacity="0.4"/><circle cx="10" cy="9" r="1" fill="#f85149" opacity="0.6"/><circle cx="14" cy="9" r="1" fill="#e3b341" opacity="0.6"/><circle cx="18" cy="9" r="1" fill="#3fb950" opacity="0.6"/><rect x="10" y="16" width="14" height="14" rx="1" fill="none" stroke="#f778ba" stroke-width="0.8" opacity="0.5"/><path d="M14 26L17 20L20 24L22 22" stroke="#f778ba" stroke-width="1" fill="none" stroke-linecap="round"/><rect x="28" y="16" width="10" height="4" rx="1" fill="#58a6ff" opacity="0.3"/><rect x="28" y="22" width="10" height="4" rx="1" fill="#bc8cff" opacity="0.3"/><rect x="28" y="28" width="10" height="4" rx="1" fill="#3fb950" opacity="0.3"/><line x1="16" y1="36" x2="32" y2="36" stroke="#f778ba" stroke-width="1.5" stroke-linecap="round"/><line x1="24" y1="34" x2="24" y2="36" stroke="#f778ba" stroke-width="1.5"/></svg></div>I Want to Design<span class="path-label">EoStudio</span></div>
</div>
<!-- PATH: SIMULATOR -->
<div id="path-sim" class="path-content active">
<h2 style="color:var(--green)">🎮 No Hardware? No Problem!</h2>
<p>EoSim lets you simulate any board on your computer. No soldering, no wires — just code and run!</p>
<div class="callout callout-info"><div class="callout-title">Prerequisites</div><p>Python 3.10+ and pip installed on your computer.</p></div>
<div class="steps step-green">
<div class="step"><h3>Install EoSim</h3>
<pre><code>pip install embeddedos-eosim
eosim --version
# EoSim v0.1.0</code></pre></div>
<div class="step"><h3>List Available Platforms</h3>
<pre><code>eosim list
# stm32f4 ARM Cortex-M4 (168 MHz, 1MB Flash, 192KB RAM)
# esp32 Xtensa LX6 (240 MHz, Wi-Fi, BLE)
# raspi4 ARM Cortex-A72 (1.5 GHz, 8GB RAM)
# ... 52 platforms total</code></pre></div>
<div class="step"><h3>Run Your First Simulation</h3>
<pre><code>eosim run --platform stm32f4 --gui
# [EoSim] Loading platform: stm32f4
# [EoSim] CPU: Cortex-M4 @ 168 MHz
# [EoSim] GUI launched on :8080</code></pre></div>
<div class="step"><h3>Try a Firmware Image</h3>
<pre><code># Install ebuild to create a project
pip install embeddedos-ebuild
ebuild init my-blink --template rtos --target stm32f4
cd my-blink && ebuild build
eosim run build/firmware.elf --platform stm32f4 --gui</code></pre></div>
<div class="step"><h3>Explore the Dashboard</h3>
<p>Open <code>http://localhost:8080</code> in your browser to see GPIO pins, UART output, memory, and CPU registers all simulated in real time!</p></div>
</div>
<div class="callout callout-tip"><div class="callout-title">What's Next?</div>
<p>Try different platforms: <code>eosim run --platform esp32 --gui</code> or <code>--platform raspi4</code>. See the <a href="docs/eosim.html">EoSim docs</a><a href="https://embeddedos-org.github.io/eApps/" class="nav-github">🏪 App Store</a> for all 52 platforms.</p></div>
</div>
<!-- PATH: RASPBERRY PI -->
<div id="path-raspi" class="path-content">
<h2 style="color:var(--blue)">🍓 I Have a Raspberry Pi</h2>
<p>Get EmbeddedOS running on your Pi in 5 steps. You'll blink an LED and see UART output.</p>
<div class="callout callout-info"><div class="callout-title">You'll Need</div>
<p>Raspberry Pi 4 or 5, microSD card, USB-C power supply, keyboard/mouse, monitor. See <a href="hardware-lab.html#raspi">full shopping list</a>.</p></div>
<div class="steps">
<div class="step"><h3>Set Up Your Pi</h3>
<p>Flash Raspberry Pi OS (64-bit) using <a href="https://www.raspberrypi.com/software/">Raspberry Pi Imager</a>. Boot and open a terminal.</p></div>
<div class="step"><h3>Install Build Tools</h3>
<pre><code>sudo apt update && sudo apt install -y cmake ninja-build gcc g++ git python3-pip
pip install embeddedos-ebuild embeddedos-eosim</code></pre></div>
<div class="step"><h3>Create a Blink Project</h3>
<pre><code>ebuild init my-blink --template rtos --target raspi4
cd my-blink</code></pre></div>
<div class="step"><h3>Build and Run</h3>
<pre><code>ebuild build
ebuild run
# [app] EmbeddedOS v0.1.0 starting...
# [app] LED toggled, tick=500</code></pre></div>
<div class="step"><h3>Monitor Output</h3>
<pre><code>ebuild monitor --baud 115200
# [app] LED toggled, tick=1000
# [app] LED toggled, tick=1500</code></pre></div>
</div>
<div class="callout callout-tip"><div class="callout-title">Next Steps</div>
<p>Try the <a href="hardware-lab.html#raspi">full hardware lab guide</a> or add <a href="docs/eai.html">AI features</a> to your project.</p></div>
</div>
<!-- PATH: STM32 -->
<div id="path-stm32" class="path-content">
<h2 style="color:var(--cyan)">⚙️ I Have an STM32 Board</h2>
<p>Flash EmbeddedOS onto your STM32 in 5 steps using the built-in ST-Link debugger.</p>
<div class="callout callout-info"><div class="callout-title">You'll Need</div>
<p>STM32F4 Discovery ($20) or Nucleo board, USB cable. See <a href="hardware-lab.html#stm32">full shopping list</a>.</p></div>
<div class="steps step-cyan">
<div class="step"><h3>Install ARM Toolchain</h3>
<pre><code># Ubuntu: sudo apt install gcc-arm-none-eabi
# macOS: brew install arm-none-eabi-gcc
# Windows: download from developer.arm.com
arm-none-eabi-gcc --version</code></pre></div>
<div class="step"><h3>Install ebuild + Flash Tools</h3>
<pre><code>pip install embeddedos-ebuild
sudo apt install openocd stlink-tools</code></pre></div>
<div class="step"><h3>Create and Build</h3>
<pre><code>ebuild init my-blink --template rtos --target stm32f4
cd my-blink
ebuild build --jobs 8</code></pre></div>
<div class="step"><h3>Flash</h3>
<pre><code>ebuild flash --verify
# [ebuild] Writing firmware.bin (45,232 bytes)... OK
# [ebuild] Flash complete. Resetting device.</code></pre></div>
<div class="step"><h3>Monitor</h3>
<pre><code>ebuild monitor --baud 115200
# [app] EmbeddedOS v0.1.0 starting...
# [app] LED toggled, tick=500</code></pre></div>
</div>
<div class="callout callout-tip"><div class="callout-title">Next Steps</div>
<p>See the <a href="hardware-lab.html#stm32">full STM32 lab guide</a> with GDB debugging, or try <a href="hardware-lab.html#esp32">ESP32</a> ($5!).</p></div>
</div>
<!-- PATH: APPS -->
<div id="path-apps" class="path-content">
<h2 style="color:var(--yellow)">📱 I Want to Build Apps</h2>
<p>Build and run eApps — 38 cross-platform C + LVGL apps including Snake, Calculator, and more.</p>
<div class="callout callout-info"><div class="callout-title">Prerequisites</div>
<p>Git, CMake 3.20+, C compiler (gcc/clang/MSVC), SDL2 development libraries.</p></div>
<div class="steps step-yellow">
<div class="step"><h3>Install SDL2</h3>
<pre><code># Ubuntu: sudo apt install libsdl2-dev
# macOS: brew install sdl2
# Windows: download from libsdl.org</code></pre></div>
<div class="step"><h3>Clone eApps</h3>
<pre><code>git clone https://github.com/embeddedos-org/eApps.git
cd eApps</code></pre></div>
<div class="step"><h3>Build for Desktop</h3>
<pre><code>cmake -B build -DEAPPS_PORT=sdl2
cmake --build build --parallel</code></pre></div>
<div class="step"><h3>Run Snake!</h3>
<pre><code>./build/apps/snake/snake
# A window opens with the Snake game!
# Use arrow keys to play</code></pre></div>
<div class="step"><h3>Try More Apps</h3>
<pre><code>./build/apps/ecalc/ecalc # Calculator
./build/apps/enote/enote # Text editor
./build/eapps_suite # All 38 apps</code></pre></div>
</div>
<div class="callout callout-tip"><div class="callout-title">Next Steps</div>
<p>See all <a href="docs/eosuite.html">38 apps with CLI vs GUI comparison</a>. Build for <a href="docs/eosuite.html#build">Web (Emscripten)</a> or EoS (embedded).</p></div>
</div>
<!-- PATH: DESIGN -->
<div id="path-design" class="path-content">
<h2 style="color:var(--pink)">🎨 I Want to Design</h2>
<p>EoStudio is an all-in-one design tool with AI tutoring. Create 3D models, games, UIs, and more.</p>
<div class="callout callout-info"><div class="callout-title">Prerequisites</div>
<p>Python 3.10+, 4GB RAM, OpenGL 3.3+.</p></div>
<div class="steps step-pink">
<div class="step"><h3>Install EoStudio</h3>
<pre><code>pip install eostudio
eostudio --version
# EoStudio v0.1.0</code></pre></div>
<div class="step"><h3>Launch</h3>
<pre><code>eostudio
# The main window opens with all 10 editors</code></pre></div>
<div class="step"><h3>Create a 3D Model with AI Help</h3>
<p>Open the 3D Modeler and click "AI Tutor". Ask: <em>"Help me create a simple robot"</em>. The AI guides you step-by-step!</p></div>
<div class="step"><h3>Design a Game</h3>
<p>Switch to Game Editor. Create sprites, add physics, and build a playable game — no coding required.</p></div>
<div class="step"><h3>Generate Code</h3>
<p>Design a UI in the UI Designer, then click "Export → Flutter" or "Export → React" to get production-ready code!</p></div>
</div>
<div class="callout callout-tip"><div class="callout-title">Next Steps</div>
<p>Explore the <a href="docs/eostudio.html">EoStudio Learning Hub</a> with 4 learning paths and 50+ project templates.</p></div>
</div>
<h2 style="border:none;text-align:center;margin-top:3rem">📚 Full Documentation</h2>
<div class="quick-links">
<a href="docs/eos.html" class="quick-link"><div class="ql-icon" style="background:var(--blue-dim);color:var(--blue)">EoS</div><div class="ql-text">EoS Kernel API</div></a>
<a href="docs/eai.html" class="quick-link"><div class="ql-icon" style="background:var(--purple-dim);color:var(--purple)">EAI</div><div class="ql-text">AI Framework</div></a>
<a href="docs/eosuite.html" class="quick-link"><div class="ql-icon" style="background:var(--yellow-dim);color:var(--yellow)">Apps</div><div class="ql-text">38 eApps</div></a>
<a href="docs/eostudio.html" class="quick-link"><div class="ql-icon" style="background:var(--pink-dim);color:var(--pink)">🎨</div><div class="ql-text">EoStudio</div></a>
<a href="docs/eosim.html" class="quick-link"><div class="ql-icon" style="background:var(--red-dim);color:var(--red)">Sim</div><div class="ql-text">EoSim</div></a>
<a href="hardware-lab.html" class="quick-link"><div class="ql-icon" style="background:var(--green-dim);color:var(--green)">🔌</div><div class="ql-text">Hardware Lab</div></a>
</div>
</div>
<script>
function showPath(id){
document.querySelectorAll('.path-content').forEach(function(el){el.classList.remove('active')});
document.querySelectorAll('.path-btn').forEach(function(el){el.classList.remove('active')});
document.getElementById('path-'+id).classList.add('active');
document.querySelector('.path-btn[onclick*="'+id+'"]').classList.add('active');
}
</script>
<footer class="footer"><div class="footer-inner">
<div class="footer-brand"><h3 style="margin-bottom:.5rem">EmbeddedOS</h3><p>Open-source embedded OS.</p></div>
<div><h4>Docs</h4><ul><li><a href="docs/eos.html">EoS</a></li><li><a href="docs/eboot.html">eBoot</a></li><li><a href="docs/eai.html">EAI</a></li><li><a href="docs/ebuild.html">ebuild</a></li></ul></div>
<div><h4>Components</h4><ul><li><a href="docs/eipc.html">EIPC</a></li><li><a href="docs/eni.html">ENI</a></li><li><a href="docs/eosuite.html">eApps</a></li><li><a href="docs/eosim.html">EoSim</a></li><li><a href="docs/eostudio.html">EoStudio</a></li></ul></div>
<div><h4>Learn</h4><ul><li><a href="kids.html">Kids Guide 🎮</a></li><li><a href="hardware-lab.html">Hardware Lab 🔌</a></li><li><a href="https://github.com/embeddedos-org">GitHub</a></li></ul></div>
</div><div class="footer-bottom">© 2025 EmbeddedOS Project • MIT License</div></footer>
<div id="eos-search-overlay" class="search-overlay" hidden>
<div class="search-modal">
<div class="search-header">
<span class="search-icon">🔍</span>
<input type="text" id="eos-search-input" class="search-input" placeholder="Search EmbeddedOS docs..." autocomplete="off">
<kbd class="search-kbd">Esc</kbd>
</div>
<ul id="eos-search-results" class="search-results"></ul>
</div>
</div>
<script>
const EosSearch={pages:[
{t:'Home',u:'index.html',d:'The Operating System for Every Device'},
{t:'Get Started',u:'getting-started.html',d:'Choose your path and get running in minutes'},
{t:'Documentation Hub',u:'docs/index.html',d:'Complete developer documentation for all components'},
{t:'Platform Flow',u:'flow.html',d:'EoS platform build and deployment flow'},
{t:'Kids Guide',u:'kids.html',d:'Welcome young explorers to EmbeddedOS'},
{t:'Hardware Lab',u:'hardware-lab.html',d:'Pick your board and get EoS running on real hardware'},
{t:'App Store',u:'https://embeddedos-org.github.io/eApps/',d:'60+ apps across all platforms'},
{t:'EoS Kernel',u:'docs/eos.html',d:'Modular RTOS kernel with HAL and multicore framework'},
{t:'eBoot Bootloader',u:'docs/eboot.html',d:'Secure A/B bootloader with verified boot chain'},
{t:'ebuild CLI',u:'docs/ebuild.html',d:'Unified build system with cross-compilation'},
{t:'EIPC Protocol',u:'docs/eipc.html',d:'Secure real-time IPC framework'},
{t:'EAI Framework',u:'docs/eai.html',d:'Embedded AI for on-device LLM inference'},
{t:'ENI Neural Interface',u:'docs/eni.html',d:'Brain-computer interface framework'},
{t:'EoSim Simulator',u:'docs/eosim.html',d:'Multi-architecture simulation platform'},
{t:'EoStudio',u:'docs/eostudio.html',d:'Unified design suite with 12 editors'},
{t:'eApps Suite',u:'docs/eosuite.html',d:'60+ apps for all platforms'},
{t:'eDB Database',u:'docs/edb.html',d:'Unified multi-model database'},
{t:'eBowser Browser',u:'docs/ebowser.html',d:'Lightweight web browser engine'},
{t:'eOffice Suite',u:'docs/eoffice.html',d:'AI-powered office suite with 11 apps'},
{t:'eServiceApps',u:'docs/eserviceapps.html',d:'Flutter mobile service apps'}
],
overlay:null,input:null,results:null,
init(){this.overlay=document.getElementById('eos-search-overlay');this.input=document.getElementById('eos-search-input');this.results=document.getElementById('eos-search-results')},
open(){if(!this.overlay)this.init();this.overlay.hidden=false;this.input.value='';this.render(this.pages);this.input.focus()},
close(){if(this.overlay)this.overlay.hidden=true},
render(items){this.results.innerHTML=items.map(p=>'<li class="search-result-item"><a href="'+p.u+'"><strong>'+p.t+'</strong><span>'+p.d+'</span></a></li>').join('')||'<li class="search-result-item" style="color:var(--text-secondary)">No results found.</li>'},
filter(q){const l=q.toLowerCase();this.render(this.pages.filter(p=>p.t.toLowerCase().includes(l)||p.d.toLowerCase().includes(l)))}
};
document.addEventListener('keydown',e=>{if(e.key==='/'&&!['INPUT','TEXTAREA'].includes(document.activeElement.tagName)){e.preventDefault();EosSearch.open()}if(e.key==='Escape')EosSearch.close()});
document.addEventListener('DOMContentLoaded',()=>{const i=document.getElementById('eos-search-input');if(i)i.addEventListener('input',e=>EosSearch.filter(e.target.value));const o=document.getElementById('eos-search-overlay');if(o)o.addEventListener('click',e=>{if(e.target===o)EosSearch.close()})});
</script>
</body></html>