-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathflow.html
More file actions
342 lines (334 loc) · 32.5 KB
/
flow.html
File metadata and controls
342 lines (334 loc) · 32.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
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EoS Platform Flow - EmbeddedOS</title>
<meta name="description" content="Complete build and deployment flow for EmbeddedOS, from ebuild compilation through EoS kernel, eBoot bootloader, to EoSim simulation.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://embeddedos-org.github.io/flow.html">
<meta property="og:title" content="EoS Platform Flow - EmbeddedOS">
<meta property="og:description" content="Complete build and deployment flow for EmbeddedOS, from ebuild compilation through EoS kernel, eBoot bootloader, to EoSim simulation.">
<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="EoS Platform Flow - EmbeddedOS">
<meta name="twitter:description" content="Complete build and deployment flow for EmbeddedOS, from ebuild compilation through EoS kernel, eBoot bootloader, to EoSim simulation.">
<meta name="twitter:image" content="https://embeddedos-org.github.io/og-image.png">
<link rel="canonical" href="https://embeddedos-org.github.io/flow.html">
<link rel="preload" href="style.css" as="style">
<link rel="stylesheet" href="style.css">
<style>
.flow-hero{background:var(--gradient-hero);padding:5rem 2rem 3rem;text-align:center;position:relative;overflow:hidden}
.flow-hero::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at 40% 50%,rgba(88,166,255,.08) 0%,transparent 50%),radial-gradient(circle at 60% 50%,rgba(188,140,255,.08) 0%,transparent 50%);animation:heroGlow 8s ease-in-out infinite alternate}
.flow-hero h1{font-size:3rem;font-weight:800;background:linear-gradient(135deg,var(--blue),var(--purple),var(--pink));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem;position:relative;z-index:1}
.flow-hero>p{color:var(--text-secondary);font-size:1.15rem;position:relative;z-index:1;max-width:600px;margin:0 auto 2rem}
.progress-bar{max-width:700px;margin:0 auto;height:6px;background:var(--bg-tertiary);border-radius:3px;overflow:hidden;position:relative;z-index:1}
.progress-fill{height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--orange),var(--blue),var(--green),var(--purple),var(--pink),var(--cyan),var(--yellow),var(--red));animation:progressFill 4s ease-out .5s forwards}
@keyframes progressFill{to{width:100%}}
.build-flow{max-width:800px;margin:0 auto;padding:4rem 2rem 2rem;position:relative}
.build-flow::before{content:'';position:absolute;left:50%;top:4rem;bottom:2rem;width:3px;background:linear-gradient(180deg,var(--orange),var(--blue),var(--green),var(--purple),var(--pink),var(--cyan),var(--yellow),var(--red));transform:translateX(-50%);opacity:.3}
.flow-step{position:relative;padding:1.5rem;margin-bottom:2.5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);opacity:0;transform:translateY(30px);animation:stepReveal .6s ease-out forwards;transition:all .3s}
.flow-step:hover{transform:translateY(-2px)!important;box-shadow:var(--shadow-lg)}
.flow-step::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:10px 10px 0 0}
.flow-step .step-num{position:absolute;top:-14px;left:50%;transform:translateX(-50%);width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.8rem;color:#fff;z-index:2}
.flow-step h3{font-size:1.1rem;font-weight:700;margin:.5rem 0;border:none;padding:0}
.flow-step p{color:var(--text-secondary);font-size:.88rem;margin:0 0 .5rem;line-height:1.5}
.step-output{display:inline-block;padding:3px 10px;border-radius:12px;font-size:.75rem;font-weight:600}
.step-ebuild::before,.step-ebuild .step-num{background:var(--orange)}.step-ebuild:hover{border-color:var(--orange)}.step-ebuild .step-output{background:var(--orange-dim);color:var(--orange)}
.step-eos::before,.step-eos .step-num{background:var(--blue)}.step-eos:hover{border-color:var(--blue)}.step-eos .step-output{background:var(--blue-dim);color:var(--blue)}
.step-eboot::before,.step-eboot .step-num{background:var(--green)}.step-eboot:hover{border-color:var(--green)}.step-eboot .step-output{background:var(--green-dim);color:var(--green)}
.step-eai::before,.step-eai .step-num{background:var(--purple)}.step-eai:hover{border-color:var(--purple)}.step-eai .step-output{background:var(--purple-dim);color:var(--purple)}
.step-eni::before,.step-eni .step-num{background:var(--pink)}.step-eni:hover{border-color:var(--pink)}.step-eni .step-output{background:var(--pink-dim);color:var(--pink)}
.step-eipc::before,.step-eipc .step-num{background:var(--cyan)}.step-eipc:hover{border-color:var(--cyan)}.step-eipc .step-output{background:var(--cyan-dim);color:var(--cyan)}
.step-eosuite::before,.step-eosuite .step-num{background:var(--yellow)}.step-eosuite:hover{border-color:var(--yellow)}.step-eosuite .step-output{background:var(--yellow-dim);color:var(--yellow)}
.step-eosim::before,.step-eosim .step-num{background:var(--red)}.step-eosim:hover{border-color:var(--red)}.step-eosim .step-output{background:var(--red-dim);color:var(--red)}
@keyframes stepReveal{to{opacity:1;transform:translateY(0)}}
.flow-step:nth-child(1){animation-delay:.3s}.flow-step:nth-child(2){animation-delay:.7s}.flow-step:nth-child(3){animation-delay:1.1s}.flow-step:nth-child(4){animation-delay:1.5s}
.flow-step:nth-child(5){animation-delay:1.9s}.flow-step:nth-child(6){animation-delay:2.3s}.flow-step:nth-child(7){animation-delay:2.7s}.flow-step:nth-child(8){animation-delay:3.1s}
.flow-dot{position:absolute;left:50%;width:8px;height:8px;border-radius:50%;transform:translateX(-50%);animation:dotFlow 2s ease-in-out infinite;z-index:3}
@keyframes dotFlow{0%{top:-10px;opacity:0}20%{opacity:1}80%{opacity:1}100%{top:calc(100% + 10px);opacity:0}}
.flow-step:nth-child(1) .flow-dot{background:var(--orange);animation-delay:.5s}.flow-step:nth-child(2) .flow-dot{background:var(--blue);animation-delay:1s}
.flow-step:nth-child(3) .flow-dot{background:var(--green);animation-delay:1.5s}.flow-step:nth-child(4) .flow-dot{background:var(--purple);animation-delay:2s}
.flow-step:nth-child(5) .flow-dot{background:var(--pink);animation-delay:2.5s}.flow-step:nth-child(6) .flow-dot{background:var(--cyan);animation-delay:3s}
.flow-step:nth-child(7) .flow-dot{background:var(--yellow);animation-delay:3.5s}.flow-step:nth-child(8) .flow-dot{background:var(--red);animation-delay:4s}
.flow-step .tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;padding:.5rem .75rem;font-size:.78rem;color:var(--text-secondary);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s;z-index:10;box-shadow:var(--shadow-md)}
.flow-step:hover .tooltip{opacity:1}
.tooltip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--bg-tertiary)}
.flow-step:target{border-color:var(--blue)!important;box-shadow:0 0 30px rgba(88,166,255,.2)!important;transform:scale(1.02)!important}
.runtime-arch,.cicd-pipeline,.hw-grid-section{max-width:900px;margin:0 auto;padding:4rem 2rem}
.runtime-arch h2,.cicd-pipeline h2,.hw-grid-section h2{text-align:center;font-size:1.8rem;border:none;margin-bottom:.5rem}
.arch-device{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:16px;padding:2rem;position:relative;overflow:hidden}
.arch-device::before{content:'TARGET DEVICE (raspi4)';position:absolute;top:0;left:0;right:0;padding:.5rem 1rem;background:var(--bg-tertiary);font-size:.8rem;font-weight:700;color:var(--text-secondary);text-align:center;letter-spacing:1px;border-bottom:1px solid var(--border-color)}
.arch-inner{margin-top:2rem}
.arch-apps{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}
.arch-app{padding:1rem;border-radius:6px;border:2px solid;text-align:center;font-weight:600;font-size:.85rem;animation:pulseApp 3s ease-in-out infinite;background:var(--bg-card)}
@keyframes pulseApp{0%,100%{box-shadow:none}50%{box-shadow:0 0 15px rgba(255,255,255,.05)}}
.app-suite{border-color:var(--yellow);color:var(--yellow)}.app-eai{border-color:var(--purple);color:var(--purple);animation-delay:.5s}.app-eni{border-color:var(--pink);color:var(--pink);animation-delay:1s}
.arch-app small{display:block;font-weight:400;font-size:.75rem;color:var(--text-secondary);margin-top:2px}
.arch-arrows{display:flex;justify-content:center;gap:2rem;padding:.4rem 0;color:var(--text-muted);font-size:1.2rem}
.arch-arrows span{animation:arrowPulse 1.5s ease-in-out infinite}
@keyframes arrowPulse{0%,100%{opacity:.3}50%{opacity:1}}
.arch-arrows span:nth-child(2){animation-delay:.3s}.arch-arrows span:nth-child(3){animation-delay:.6s}
.arch-bidir{display:flex;justify-content:center;gap:.75rem;padding:.3rem 0;font-size:.85rem;color:var(--text-muted)}
.arch-bidir span{animation:arrowPulse 1.5s ease-in-out infinite}
.arch-ipc{padding:.75rem 1rem;border:2px solid var(--cyan);border-radius:6px;text-align:center;font-weight:600;font-size:.85rem;color:var(--cyan);margin-bottom:1rem;background:var(--bg-card);animation:pulseApp 3s ease-in-out 1.5s infinite}
.arch-kernel{padding:1rem;border:2px solid var(--blue);border-radius:6px;text-align:center;margin-bottom:1rem;background:var(--bg-card);animation:pulseApp 3s ease-in-out 2s infinite}
.kern-title{font-weight:700;color:var(--blue);font-size:.9rem;margin-bottom:.5rem}
.kern-modules{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}
.kern-mod{padding:3px 10px;background:var(--blue-dim);color:var(--blue);border-radius:4px;font-size:.72rem;font-weight:600}
.arch-boot{padding:1rem;border:2px solid var(--green);border-radius:6px;text-align:center;margin-bottom:1rem;background:var(--bg-card);animation:pulseApp 3s ease-in-out 2.5s infinite}
.boot-title{font-weight:700;color:var(--green);font-size:.9rem;margin-bottom:.5rem}
.boot-flow{color:var(--text-secondary);font-size:.82rem}
.arch-hw{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap;margin-top:.5rem}
.arch-hw-label{width:100%;text-align:center;font-size:.8rem;color:var(--text-muted);font-weight:700;letter-spacing:1px;text-transform:uppercase;margin-bottom:.25rem}
.arch-hw-chip{padding:.4rem .8rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:4px;font-size:.78rem;font-weight:600;color:var(--text-secondary);animation:chipPulse 2s ease-in-out infinite}
@keyframes chipPulse{0%,100%{border-color:var(--border-color)}50%{border-color:var(--text-muted)}}
.arch-hw-chip:nth-child(2){animation-delay:.2s}.arch-hw-chip:nth-child(3){animation-delay:.4s}.arch-hw-chip:nth-child(4){animation-delay:.6s}.arch-hw-chip:nth-child(5){animation-delay:.8s}.arch-hw-chip:nth-child(6){animation-delay:1s}
.pipeline-track{display:flex;align-items:center;justify-content:center;gap:0;flex-wrap:wrap;padding:1rem 0}
.gate{text-align:center;flex:0 0 auto}
.gate-circle{width:70px;height:70px;border-radius:50%;border:3px solid var(--border-color);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.75rem;color:var(--text-muted);background:var(--bg-card);position:relative;overflow:hidden}
.gate-circle::before{content:'';position:absolute;bottom:0;left:0;right:0;height:0}
.gate-label{font-size:.72rem;color:var(--text-secondary);margin-top:.5rem;max-width:90px}
.gate-connector{width:40px;height:3px;background:var(--border-color);position:relative;overflow:hidden;flex-shrink:0}
.gate-connector::after{content:'';position:absolute;left:-100%;top:0;bottom:0;width:100%}
@keyframes fillUp{to{height:100%}}
@keyframes connectorFlow{to{left:100%}}
.gate-push .gate-circle{border-color:var(--text-muted)}.gate-push .gate-circle::before{background:rgba(139,148,158,.3);animation:fillUp .8s ease-out 1s forwards}
.gate-1 .gate-circle{border-color:var(--blue)}.gate-1 .gate-circle::before{background:var(--blue-dim);animation:fillUp .8s ease-out 1.8s forwards}
.gate-2 .gate-circle{border-color:var(--green)}.gate-2 .gate-circle::before{background:var(--green-dim);animation:fillUp .8s ease-out 2.6s forwards}
.gate-3 .gate-circle{border-color:var(--purple)}.gate-3 .gate-circle::before{background:var(--purple-dim);animation:fillUp .8s ease-out 3.4s forwards}
.gate-release .gate-circle{border-color:var(--orange)}.gate-release .gate-circle::before{background:var(--orange-dim);animation:fillUp .8s ease-out 4.2s forwards}
.pipeline-track .gate-connector:nth-of-type(2)::after{background:linear-gradient(90deg,transparent,var(--blue),transparent);animation:connectorFlow 2s linear 1.4s infinite}
.pipeline-track .gate-connector:nth-of-type(4)::after{background:linear-gradient(90deg,transparent,var(--green),transparent);animation:connectorFlow 2s linear 2.2s infinite}
.pipeline-track .gate-connector:nth-of-type(6)::after{background:linear-gradient(90deg,transparent,var(--purple),transparent);animation:connectorFlow 2s linear 3s infinite}
.pipeline-track .gate-connector:nth-of-type(8)::after{background:linear-gradient(90deg,transparent,var(--orange),transparent);animation:connectorFlow 2s linear 3.8s infinite}
.hw-row{margin-bottom:1.5rem}
.hw-row-label{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:.75rem;padding-left:.25rem}
.hw-row-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}
.hw-target{padding:.75rem 1rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;text-align:center;font-size:.85rem;font-weight:600;transition:all .3s}
.hw-target:hover{transform:translateY(-2px)}
.hw-target small{display:block;font-weight:400;font-size:.72rem;color:var(--text-secondary);margin-top:2px}
.hw-row-mcu .hw-row-label{color:var(--green)}.hw-row-mcu .hw-target{animation:pulseGreen 3s ease-in-out infinite;border-color:rgba(63,185,80,.3)}
@keyframes pulseGreen{0%,100%{box-shadow:0 0 3px rgba(63,185,80,.1)}50%{box-shadow:0 0 12px rgba(63,185,80,.25)}}
.hw-row-sbc .hw-row-label{color:var(--blue)}.hw-row-sbc .hw-target{animation:pulseBlue 3s ease-in-out infinite;border-color:rgba(88,166,255,.3)}
@keyframes pulseBlue{0%,100%{box-shadow:0 0 3px rgba(88,166,255,.1)}50%{box-shadow:0 0 12px rgba(88,166,255,.25)}}
.hw-row-soc .hw-row-label{color:var(--purple)}.hw-row-soc .hw-target{animation:pulsePurple 3s ease-in-out infinite;border-color:rgba(188,140,255,.3)}
@keyframes pulsePurple{0%,100%{box-shadow:0 0 3px rgba(188,140,255,.1)}50%{box-shadow:0 0 12px rgba(188,140,255,.25)}}
.hw-row-virt .hw-row-label{color:var(--cyan)}.hw-row-virt .hw-target{animation:pulseCyan 3s ease-in-out infinite;border-color:rgba(121,192,255,.3)}
@keyframes pulseCyan{0%,100%{box-shadow:0 0 3px rgba(121,192,255,.1)}50%{box-shadow:0 0 12px rgba(121,192,255,.25)}}
.flow-page .footer{margin-top:0}
@media(max-width:768px){.arch-apps{grid-template-columns:1fr}.pipeline-track{flex-direction:column}.gate-connector{width:3px;height:30px}.hw-row-cards{grid-template-columns:repeat(2,1fr)}.flow-hero h1{font-size:2.2rem}}
</style></head>
<body class="flow-page">
<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">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" class="active">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>
<section class="flow-hero">
<h1>EoS Platform Flow</h1>
<p>Watch how the entire embedded OS ecosystem builds, tests, and deploys — from hardware design to production.</p>
<div class="progress-bar"><div class="progress-fill"></div></div>
</section>
<section class="build-flow">
<div class="flow-step step-ebuild" id="step1"><div class="flow-dot"></div><div class="step-num">1</div>
<span class="tooltip">Analyze board schematics and pin mappings from KiCad/YAML</span>
<h3>📑 Hardware Design</h3>
<p>KiCad schematics & YAML board definitions analyzed by <code>ebuild analyze</code> to extract pin maps, peripheral configs, and memory layouts.</p>
<span class="step-output">→ Board Support Package</span></div>
<div class="flow-step step-ebuild" id="step2"><div class="flow-dot"></div><div class="step-num">2</div>
<span class="tooltip">Generate cross-compilation toolchain and sysroot for target</span>
<h3>⚙ SDK Generation</h3>
<p><code>ebuild sdk --target raspi4</code> generates cross-compilation toolchain, sysroot, headers, and pre-built libraries.</p>
<span class="step-output">→ toolchain + sysroot</span></div>
<div class="flow-step step-eos" id="step3"><div class="flow-dot"></div><div class="step-num">3</div>
<span class="tooltip">Compile the core OS: HAL, kernel scheduler, and system services</span>
<h3>🔌 Build OS</h3>
<p><strong style="color:var(--blue)">eos</strong> (HAL + Kernel + Services) → <code>libeos.a</code><br><strong style="color:var(--green)">eboot</strong> (Secure Bootloader) → <code>libeboot.a</code></p>
<span class="step-output">→ libeos.a + libeboot.a</span></div>
<div class="flow-step step-eai" id="step4"><div class="flow-dot"></div><div class="step-num">4</div>
<span class="tooltip">Build AI inference engine, neural interface, and secure IPC</span>
<h3>🤖 Build AI + Neural</h3>
<p><strong style="color:var(--purple)">eai</strong> → <code>libeai.a</code> • <strong style="color:var(--pink)">eni</strong> → <code>libeni.a</code> • <strong style="color:var(--cyan)">eipc</strong> → <code>libeipc.a</code></p>
<span class="step-output">→ libeai.a + libeni.a + libeipc.a</span></div>
<div class="flow-step step-eosuite" id="step5"><div class="flow-dot"></div><div class="step-num">5</div>
<span class="tooltip">Compile eApps applications and ebot chat client</span>
<h3>🛠 Build Tools</h3>
<p><strong style="color:var(--yellow)">eApps</strong> (38 GUI apps + ebot) compiled into the <code>ebot</code> binary and application suite.</p>
<span class="step-output">→ ebot binary</span></div>
<div class="flow-step step-eipc" id="step6"><div class="flow-dot"></div><div class="step-num">6</div>
<span class="tooltip">Assemble root filesystem image from all compiled components</span>
<h3>📦 Package Image</h3>
<p>rootfs = eos + eboot + eai + eni + eipc + eApps. All components packaged into a deployable filesystem image.</p>
<span class="step-output">→ eos-image-raspi4.cpio.gz</span></div>
<div class="flow-step step-eosim" id="step7"><div class="flow-dot"></div><div class="step-num">7</div>
<span class="tooltip">Boot image in virtual machine and run full test suite</span>
<h3>🔬 Simulate & Test</h3>
<p><strong style="color:var(--red)">EoSim</strong> boots the image in a VM. Runs <strong>583+ tests</strong> across <strong>52 platforms</strong> and <strong>14 CPU architectures</strong> (GPIO, UART, SPI, I2C, crypto, OTA, AI).</p>
<span class="step-output">→ 583 tests passed</span></div>
<div class="flow-step step-eboot" id="step8"><div class="flow-dot"></div><div class="step-num">8</div>
<span class="tooltip">Flash firmware to real hardware and connect to AI server</span>
<h3>🚀 Deploy</h3>
<p>Flash to real hardware (RPi4, STM32, etc.). <code>ebot</code> connects to <code>eai</code> server at <code>192.168.1.100:8420</code>.</p>
<span class="step-output">→ Device online</span></div>
</section>
<!--RUNTIME_ARCH-->
<section class="runtime-arch">
<h2>Runtime Architecture</h2>
<p style="text-align:center;color:var(--text-secondary);margin-bottom:2rem">How EoS components interact on a deployed device</p>
<div class="arch-device"><div class="arch-inner">
<div class="arch-apps">
<div class="arch-app app-suite">eApps<small>(ebot)</small></div>
<div class="arch-app app-eai">EAI<small>(server)</small></div>
<div class="arch-app app-eni">ENI<small>(neuralink)</small></div></div>
<div class="arch-bidir"><span>↓</span><span>↑</span><span>↓</span><span>↑</span><span>↓</span><span>↑</span></div>
<div class="arch-ipc">EIPC (Secure IPC)</div>
<div class="arch-arrows"><span>↓</span><span>↓</span><span>↓</span></div>
<div class="arch-kernel"><div class="kern-title">EoS (HAL + Kernel + Services)</div>
<div class="kern-modules"><span class="kern-mod">GPIO</span><span class="kern-mod">UART</span><span class="kern-mod">SPI</span><span class="kern-mod">I2C</span><span class="kern-mod">Timer</span><span class="kern-mod">IRQ</span></div></div>
<div class="arch-arrows"><span>↓</span><span>↓</span></div>
<div class="arch-boot"><div class="boot-title">eBoot (Bootloader)</div><div class="boot-flow">Secure Boot → A/B Slots → OTA</div></div>
<div class="arch-arrows"><span>↓</span></div>
<div class="arch-hw"><div class="arch-hw-label">Hardware</div>
<div class="arch-hw-chip">GPIO</div><div class="arch-hw-chip">UART</div><div class="arch-hw-chip">SPI</div><div class="arch-hw-chip">I2C</div><div class="arch-hw-chip">ETH</div></div>
</div></div></section>
<!--CICD_SECTION-->
<section class="cicd-pipeline">
<h2>CI/CD Pipeline</h2>
<p style="text-align:center;color:var(--text-secondary);margin-bottom:2.5rem">Gated release pipeline — every commit passes 4 quality gates</p>
<div class="pipeline-track">
<div class="gate gate-push"><div class="gate-circle">Push</div><div class="gate-label">git push</div></div>
<div class="gate-connector"></div>
<div class="gate gate-1"><div class="gate-circle">G1</div><div class="gate-label">Test All 15 Repos</div></div>
<div class="gate-connector"></div>
<div class="gate gate-2"><div class="gate-circle">G2</div><div class="gate-label">Cross-Compile 3 Archs</div></div>
<div class="gate-connector"></div>
<div class="gate gate-3"><div class="gate-circle">G3</div><div class="gate-label">EoSim 21 Boards</div></div>
<div class="gate-connector"></div>
<div class="gate gate-release"><div class="gate-circle">✓</div><div class="gate-label">Release 6 Platforms</div></div>
</div></section>
<!--HW_GRID-->
<section class="hw-grid-section">
<h2>Hardware Targets</h2>
<p style="text-align:center;color:var(--text-secondary);margin-bottom:2.5rem">52 hardware targets across 14 CPU architectures</p>
<div class="hw-row hw-row-mcu"><div class="hw-row-label">⚫ MCU — 19 Platforms (ARM Cortex-M, Xtensa, RISC-V, MIPS)</div>
<div class="hw-row-cards">
<div class="hw-target">STM32F4<small>Cortex-M4 • 180MHz</small></div>
<div class="hw-target">STM32H7<small>Cortex-M7 • 480MHz</small></div>
<div class="hw-target">STM32L4<small>Cortex-M4 • LP</small></div>
<div class="hw-target">nRF52<small>Cortex-M4F • BLE</small></div>
<div class="hw-target">nRF5340<small>Cortex-M33 • Dual</small></div>
<div class="hw-target">nRF9160<small>Cortex-M33 • LTE</small></div>
<div class="hw-target">RP2040<small>Cortex-M0+ • Dual</small></div>
<div class="hw-target">K64F<small>Cortex-M4 • Ethernet</small></div>
<div class="hw-target">PSoC 6<small>M4/M0+ • BLE</small></div>
<div class="hw-target">SAMC21<small>Cortex-M0+ • CAN</small></div>
<div class="hw-target">SAMD51<small>Cortex-M4 • USB</small></div>
<div class="hw-target">RA6M5<small>Cortex-M33 • TZ</small></div>
<div class="hw-target">MSP432<small>Cortex-M4F • LP</small></div>
<div class="hw-target">ESP32<small>Xtensa LX6 • Wi-Fi</small></div>
<div class="hw-target">ESP32-C3<small>RISC-V • Wi-Fi</small></div>
<div class="hw-target">ESP32-S3<small>Xtensa LX7 • AI</small></div>
<div class="hw-target">GD32VF103<small>RISC-V • 108MHz</small></div>
<div class="hw-target">PIC32MZ<small>MIPS • 200MHz</small></div>
</div></div>
<div class="hw-row hw-row-sbc"><div class="hw-row-label">🖥 SBC & Application Processors — 15 Platforms (ARM64, RISC-V 64)</div>
<div class="hw-row-cards">
<div class="hw-target">Raspberry Pi 5<small>Cortex-A76 • 4-core</small></div>
<div class="hw-target">Raspberry Pi 4<small>Cortex-A72 • 8GB</small></div>
<div class="hw-target">Raspberry Pi 3<small>Cortex-A53 • 64-bit</small></div>
<div class="hw-target">RPi 2B<small>Cortex-A7 • Quad</small></div>
<div class="hw-target">RPi Zero 2W<small>Cortex-A53 • Compact</small></div>
<div class="hw-target">NXP i.MX8M<small>Cortex-A53 • NPU</small></div>
<div class="hw-target">TI AM64x<small>A53+R5F • Industrial</small></div>
<div class="hw-target">STM32MP1<small>A7+M4 • Linux</small></div>
<div class="hw-target">BeagleBone<small>Cortex-A8 • PRU</small></div>
<div class="hw-target">Jetson Nano<small>A57 • 128 CUDA</small></div>
<div class="hw-target">Jetson Orin<small>A78AE • 40 TOPS</small></div>
<div class="hw-target">SiFive U<small>RISC-V U74 • Linux</small></div>
<div class="hw-target">K210<small>RISC-V 64 • AI</small></div>
<div class="hw-target">VExpress A9<small>Cortex-A9 • Dev</small></div>
<div class="hw-target">VExpress A15<small>Cortex-A15 • Dev</small></div>
</div></div>
<div class="hw-row hw-row-soc"><div class="hw-row-label">🔨 Automotive & Safety — 6 Platforms (TriCore, Cortex-R, RH850)</div>
<div class="hw-row-cards">
<div class="hw-target">AURIX TC3xx<small>TriCore • ASIL-D</small></div>
<div class="hw-target">Renesas RH850<small>RH850 • Auto MCU</small></div>
<div class="hw-target">TI TMS570<small>Cortex-R4F • Safety</small></div>
<div class="hw-target">Cortex-R5<small>ARM R5 • Lockstep</small></div>
<div class="hw-target">Cortex-R52<small>ARM R52 • ASIL-D</small></div>
<div class="hw-target">S32K344<small>Cortex-M7 • CAN-FD</small></div>
</div></div>
<div class="hw-row hw-row-virt"><div class="hw-row-label">💻 x86 / Intel / AMD — 3 Platforms</div>
<div class="hw-row-cards">
<div class="hw-target">x86_64 Generic<small>Intel/AMD • Linux</small></div>
<div class="hw-target">QEMU Q35<small>Intel Q35 • UEFI</small></div>
<div class="hw-target">x86_64 EFI<small>Intel/AMD • Edge</small></div>
</div></div>
<div class="hw-row hw-row-virt"><div class="hw-row-label">🌐 Other Architectures — 6 Platforms (MIPS, PowerPC, MicroBlaze, ARC)</div>
<div class="hw-row-cards">
<div class="hw-target">MIPS Malta<small>MIPS 24Kf • LE</small></div>
<div class="hw-target">PowerPC e500<small>PPC • Embedded</small></div>
<div class="hw-target">MicroBlaze<small>Xilinx • FPGA</small></div>
<div class="hw-target">ARC EM<small>Synopsys • IoT</small></div>
<div class="hw-target">VersatilePB<small>ARM926 • Legacy</small></div>
<div class="hw-target">ARM Generic<small>AArch64 • Linux</small></div>
</div></div>
<div class="hw-row hw-row-soc"><div class="hw-row-label">🎯 Specialty Simulators — 5 Platforms</div>
<div class="hw-row-cards">
<div class="hw-target">Aerodynamics<small>Physics • CFD</small></div>
<div class="hw-target">Finance<small>Domain • Quant</small></div>
<div class="hw-target">Gaming<small>Domain • Engine</small></div>
<div class="hw-target">Physiology<small>Domain • Medical</small></div>
<div class="hw-target">Weather<small>Domain • Forecast</small></div>
</div></div>
<div style="text-align:center;margin-top:2rem;padding:1.5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md)">
<p style="font-size:1rem;font-weight:700;color:var(--cyan);margin-bottom:.5rem">14 CPU Architectures Supported</p>
<p style="font-size:.85rem;color:var(--text-secondary);margin:0">ARM Cortex-M • ARM Cortex-A • ARM Cortex-R • AArch64 • RISC-V 32 • RISC-V 64 • Xtensa • <strong style="color:var(--blue)">x86_64 (Intel/AMD)</strong> • MIPS • PowerPC • MicroBlaze • ARC • TriCore • RH850</p>
</div>
</section>
<footer class="footer"><div class="footer-inner"><div class="footer-brand"><h3>EmbeddedOS</h3><p>Open-source embedded operating system.</p></div>
<div><h4>Documentation</h4><ul><li><a href="docs/eos.html">EoS</a></li><li><a href="docs/eboot.html">eBoot</a></li><li><a href="docs/ebuild.html">ebuild</a></li></ul></div>
<div><h4>Components</h4><ul><li><a href="docs/eai.html">EAI</a></li><li><a href="docs/eni.html">ENI</a></li><li><a href="docs/eipc.html">EIPC</a></li><li><a href="docs/eosuite.html">eApps</a></li><li><a href="docs/eosim.html">EoSim</a></li></ul></div>
<div><h4>Community</h4><ul><li><a href="https://github.com/embeddedos-org">GitHub</a></li><li><a href="https://github.com/embeddedos-org/eos/discussions">Discussions</a></li></ul></div>
</div><div class="footer-bottom">© 2025 EmbeddedOS Project • Licensed under MIT</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>