Skip to content

Commit 3ceef63

Browse files
committed
EmbeddedOS website v0.3.0 - Full documentation site with API reference
0 parents  commit 3ceef63

15 files changed

Lines changed: 1972 additions & 0 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: false
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Validate HTML
25+
run: |
26+
echo "── Checking for required files ──"
27+
test -f index.html || { echo "ERROR: index.html not found"; exit 1; }
28+
echo "✓ index.html exists"
29+
30+
echo "── Checking for broken internal links ──"
31+
MISSING=0
32+
for file in $(grep -oP 'href="(?!https?://|#|mailto:)[^"]+' index.html | sed 's/href="//'); do
33+
if [ ! -f "$file" ]; then
34+
echo "WARNING: linked file not found: $file"
35+
MISSING=$((MISSING + 1))
36+
fi
37+
done
38+
if [ "$MISSING" -eq 0 ]; then
39+
echo "✓ No broken internal links"
40+
fi
41+
42+
echo "── File sizes ──"
43+
for f in $(find . -name '*.html' -o -name '*.css' -o -name '*.js' | grep -v node_modules | grep -v .git); do
44+
SIZE=$(wc -c < "$f")
45+
echo " $f: ${SIZE} bytes"
46+
done
47+
echo "✓ Build validation complete"
48+
49+
- name: Prepare CNAME
50+
run: |
51+
if [ -f CNAME ]; then
52+
DOMAIN=$(grep -v '^#' CNAME | grep -v '^$' | head -1)
53+
if [ -n "$DOMAIN" ]; then
54+
echo "$DOMAIN" > CNAME
55+
echo "✓ Custom domain: $DOMAIN"
56+
else
57+
echo "ℹ CNAME has no active domain — removing from artifact"
58+
rm -f CNAME
59+
fi
60+
else
61+
echo "ℹ No CNAME file — using default github.io domain"
62+
fi
63+
64+
- name: Setup Pages
65+
uses: actions/configure-pages@v5
66+
67+
- name: Upload artifact
68+
uses: actions/upload-pages-artifact@v3
69+
with:
70+
path: .
71+
72+
deploy:
73+
runs-on: ubuntu-latest
74+
needs: build
75+
environment:
76+
name: github-pages
77+
url: ${{ steps.deployment.outputs.page_url }}
78+
steps:
79+
- name: Deploy to GitHub Pages
80+
id: deployment
81+
uses: actions/deploy-pages@v4

CNAME

Whitespace-only changes.

README.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# EoS — Embedded Operating System
2+
3+
**Website**: [embeddedos-org.github.io](https://embeddedos-org.github.io)
4+
5+
## v0.1.0 Release
6+
7+
All 9 repositories at v0.1.0, 1 commit each.
8+
9+
### Ecosystem
10+
11+
| Repo | Description | Version |
12+
|---|---|---|
13+
| [eos](https://github.com/embeddedos-org/eos) | Core OS — HAL (33 peripherals), kernel, services, GDB stub, core dump, service manager, loadable drivers, device tree parser | v0.1.0 |
14+
| [eboot](https://github.com/embeddedos-org/eboot) | Bootloader — 26 board ports, A/B update, secure boot, crypto | v0.1.0 |
15+
| [ebuild](https://github.com/embeddedos-org/ebuild) | Build system — SDK generator (14 targets), eBoot board generator, deliverable packager, gated release | v0.1.0 |
16+
| [eipc](https://github.com/embeddedos-org/eipc) | Secure IPC — Go + C SDK, HMAC, replay protection | v0.1.0 |
17+
| [eai](https://github.com/embeddedos-org/eai) | AI layer — llama.cpp, agent loop, Ebot server | v0.1.0 |
18+
| [eni](https://github.com/embeddedos-org/eni) | Neural interface — BCI, assistive input | v0.1.0 |
19+
| [EoSuite](https://github.com/embeddedos-org/EoSuite) | Dev tools — Ebot client, 20+ GUI apps | v0.1.0 |
20+
21+
### Supported Hardware (14 targets)
22+
23+
| Target | Arch | CPU | Vendor | Board |
24+
|---|---|---|---|---|
25+
| stm32f4 | ARM | Cortex-M4 | ST | STM32F407 |
26+
| stm32h7 | ARM | Cortex-M7 | ST | STM32H743 |
27+
| nrf52 | ARM | Cortex-M4 | Nordic | nRF52840 |
28+
| rp2040 | ARM | Cortex-M0+ | RPi | RP2040 |
29+
| raspi3 | AArch64 | Cortex-A53 | Broadcom | BCM2837 |
30+
| raspi4 | AArch64 | Cortex-A72 | Broadcom | BCM2711 |
31+
| imx8m | AArch64 | Cortex-A53 | NXP | i.MX8M |
32+
| am64x | AArch64 | Cortex-A53 | TI | AM6442 |
33+
| riscv_virt | RISC-V | rv64gc | QEMU | virt |
34+
| sifive_u | RISC-V | U74 | SiFive | FU740 |
35+
| malta | MIPS | 24Kf | MIPS | Malta |
36+
| x86_64 | x86_64 | generic | Generic | PC/Server |
37+
38+
### Build & Deploy
39+
40+
```bash
41+
# Generate SDK for target
42+
ebuild sdk --target raspi4
43+
44+
# Source environment
45+
source build/eos-sdk-raspi4/environment-setup
46+
47+
# Build
48+
cmake -B build -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE
49+
cmake --build build
50+
51+
# Deploy
52+
scp build/app pi@192.168.1.100:~/
53+
```
54+
55+
### Release Deliverables
56+
57+
Every build produces `eos-{target}-v0.1.0-deliverable.zip`:
58+
- **EoS source code + SDK** for the product
59+
- **eBoot source code** + board config for the target
60+
- **EAI source code** + Ebot server
61+
- **ENI source code**
62+
- **EoSuite binaries** for the product
63+
- Auto-generated `eos_product_config.h`
64+
65+
### CI/CD
66+
67+
- Gated release — all repos must pass before release
68+
- 104 CI jobs across all repos per push
69+
- 11 QEMU board types, 6 architectures
70+
- Cross-repo dispatch — change in any repo validates all

docs/eai.html

Whitespace-only changes.

docs/eboot.html

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>eBoot Documentation -- EmbeddedOS</title>
7+
<link rel="stylesheet" href="../style.css">
8+
</head>
9+
<body>
10+
11+
<nav class="site-nav">
12+
<span class="brand">EmbeddedOS</span>
13+
<div class="nav-links">
14+
<a href="../index.html">Home</a>
15+
<a href="index.html" class="active">Docs</a>
16+
<a href="../getting-started.html">Getting Started</a>
17+
<a href="https://github.com/embeddedos-org" target="_blank">GitHub</a>
18+
</div>
19+
</nav>
20+
21+
<div class="doc-layout">
22+
<aside class="doc-sidebar">
23+
<h4>Getting Started</h4>
24+
<a href="../getting-started.html">Quick Start Guide</a>
25+
<h4>Core</h4>
26+
<a href="eos.html">EoS</a>
27+
<a href="eboot.html" class="active">eBoot</a>
28+
<a href="ebuild.html">ebuild</a>
29+
<h4>Middleware</h4>
30+
<a href="eipc.html">EIPC</a>
31+
<a href="eai.html">EAI</a>
32+
<a href="eni.html">ENI</a>
33+
<h4>Tools</h4>
34+
<a href="eosuite.html">EoSuite</a>
35+
<a href="eosim.html">EoSim</a>
36+
</aside>
37+
38+
<main class="doc-main">
39+
<h1>eBoot</h1>
40+
<p>Universal bootloader with A/B firmware slot management, secure boot chain, and CRC validation. eBoot supports 26 board configurations and provides safe firmware updates with automatic rollback.</p>
41+
<p><a href="https://github.com/embeddedos-org/eboot" target="_blank">GitHub Repository</a></p>
42+
43+
<h2>Getting Started</h2>
44+
<pre><code>git clone https://github.com/embeddedos-org/eboot.git
45+
cmake -B build -DEBOOT_BUILD_TESTS=ON
46+
cmake --build build</code></pre>
47+
48+
<h2>Features</h2>
49+
<ul>
50+
<li>A/B firmware slot selection with priority and retry counters</li>
51+
<li>Boot control block (BCB) with CRC-32 integrity verification</li>
52+
<li>Secure boot chain with SHA-256 signature verification</li>
53+
<li>Automatic rollback on failed boot attempts</li>
54+
<li>Recovery mode with serial console</li>
55+
<li>Support for 26 board configurations</li>
56+
<li>Minimal footprint for resource-constrained devices</li>
57+
</ul>
58+
59+
<h2>API Reference -- Boot Control</h2>
60+
<ul class="api-list">
61+
<li><code>eos_bootctl_load(bcb)</code> -- Load the boot control block from non-volatile storage</li>
62+
<li><code>eos_bootctl_save(bcb)</code> -- Save the boot control block to non-volatile storage</li>
63+
<li><code>eos_bootctl_init_defaults(bcb)</code> -- Initialize a BCB with default values (slot A active, retry count 3)</li>
64+
<li><code>eos_bootctl_validate(bcb)</code> -- Validate BCB integrity using CRC-32 checksum</li>
65+
</ul>
66+
67+
<h2>API Reference -- Slot Management</h2>
68+
<ul class="api-list">
69+
<li><code>eos_slot_scan_all(slots, count)</code> -- Scan all firmware slots and populate metadata</li>
70+
<li><code>eos_slot_is_valid(slot)</code> -- Check if a firmware slot contains valid firmware</li>
71+
<li><code>eos_slot_get_version(slot, version_buf)</code> -- Get the firmware version string from a slot</li>
72+
<li><code>eos_slot_erase(slot)</code> -- Erase a firmware slot and mark it as empty</li>
73+
</ul>
74+
75+
<h2>Boot Flow</h2>
76+
<p>The eBoot boot process follows this sequence:</p>
77+
<ol>
78+
<li>Hardware initialization (clock, memory, watchdog)</li>
79+
<li>Load boot control block from flash</li>
80+
<li>Validate BCB CRC integrity</li>
81+
<li>Select active slot based on priority and retry count</li>
82+
<li>Verify firmware signature (secure boot)</li>
83+
<li>Jump to firmware entry point</li>
84+
<li>On failure: decrement retry counter, try alternate slot</li>
85+
<li>On all failures: enter recovery mode</li>
86+
</ol>
87+
88+
<h2>Board Configurations</h2>
89+
<p>eBoot supports 26 board configurations out of the box:</p>
90+
<table>
91+
<thead><tr><th>Board</th><th>Architecture</th><th>Flash Size</th><th>Slot Layout</th></tr></thead>
92+
<tbody>
93+
<tr><td>stm32f4_disco</td><td>ARM Cortex-M4</td><td>1 MB</td><td>2 x 448 KB</td></tr>
94+
<tr><td>stm32f4_nucleo</td><td>ARM Cortex-M4</td><td>512 KB</td><td>2 x 224 KB</td></tr>
95+
<tr><td>stm32h7_nucleo</td><td>ARM Cortex-M7</td><td>2 MB</td><td>2 x 896 KB</td></tr>
96+
<tr><td>stm32h7_disco</td><td>ARM Cortex-M7</td><td>2 MB</td><td>2 x 896 KB</td></tr>
97+
<tr><td>nrf52_dk</td><td>ARM Cortex-M4</td><td>1 MB</td><td>2 x 448 KB</td></tr>
98+
<tr><td>nrf52_dongle</td><td>ARM Cortex-M4</td><td>1 MB</td><td>2 x 448 KB</td></tr>
99+
<tr><td>nrf5340_dk</td><td>ARM Cortex-M33</td><td>1 MB</td><td>2 x 448 KB</td></tr>
100+
<tr><td>nrf9160_dk</td><td>ARM Cortex-M33</td><td>1 MB</td><td>2 x 448 KB</td></tr>
101+
<tr><td>esp32_devkit</td><td>Xtensa LX6</td><td>4 MB</td><td>2 x 1.5 MB</td></tr>
102+
<tr><td>esp32_wrover</td><td>Xtensa LX6</td><td>16 MB</td><td>2 x 6 MB</td></tr>
103+
<tr><td>raspi4</td><td>ARM Cortex-A72</td><td>SD Card</td><td>2 partitions</td></tr>
104+
<tr><td>raspi4_cm</td><td>ARM Cortex-A72</td><td>eMMC</td><td>2 partitions</td></tr>
105+
<tr><td>imx8m_evk</td><td>ARM Cortex-A53</td><td>eMMC</td><td>2 partitions</td></tr>
106+
<tr><td>imx8m_mini</td><td>ARM Cortex-A53</td><td>eMMC</td><td>2 partitions</td></tr>
107+
<tr><td>k64f_frdm</td><td>ARM Cortex-M4</td><td>1 MB</td><td>2 x 448 KB</td></tr>
108+
<tr><td>riscv64_virt</td><td>RISC-V 64</td><td>Virtual</td><td>2 x 8 MB</td></tr>
109+
<tr><td>x86_64_efi</td><td>x86_64</td><td>Disk</td><td>2 EFI partitions</td></tr>
110+
<tr><td>jetson_orin_nx</td><td>ARM Cortex-A78AE</td><td>eMMC</td><td>2 partitions</td></tr>
111+
<tr><td>jetson_orin_nano</td><td>ARM Cortex-A78AE</td><td>eMMC</td><td>2 partitions</td></tr>
112+
<tr><td>ti_msp432_lp</td><td>ARM Cortex-M4F</td><td>256 KB</td><td>2 x 112 KB</td></tr>
113+
<tr><td>psoc6_proto</td><td>ARM Cortex-M4/M0+</td><td>2 MB</td><td>2 x 896 KB</td></tr>
114+
<tr><td>psoc6_kit</td><td>ARM Cortex-M4/M0+</td><td>2 MB</td><td>2 x 896 KB</td></tr>
115+
<tr><td>samc21_xpro</td><td>ARM Cortex-M0+</td><td>256 KB</td><td>2 x 112 KB</td></tr>
116+
<tr><td>pic32mz_curiosity</td><td>MIPS32</td><td>2 MB</td><td>2 x 896 KB</td></tr>
117+
<tr><td>s32k344_evb</td><td>ARM Cortex-M7</td><td>4 MB</td><td>2 x 1.5 MB</td></tr>
118+
<tr><td>generic_sim</td><td>Host (x86/ARM)</td><td>Virtual</td><td>2 x 16 MB</td></tr>
119+
</tbody>
120+
</table>
121+
122+
<h2>Configuration</h2>
123+
<p>eBoot is configured at build time using CMake variables:</p>
124+
<pre><code>cmake -B build \
125+
-DEBOOT_BOARD=stm32f4_disco \
126+
-DEBOOT_SECURE_BOOT=ON \
127+
-DEBOOT_SLOT_SIZE=0x70000 \
128+
-DEBOOT_MAX_RETRY=3 \
129+
-DEBOOT_BUILD_TESTS=ON</code></pre>
130+
131+
</main>
132+
</div>
133+
134+
</body>
135+
</html>

docs/ebuild.html

Whitespace-only changes.

0 commit comments

Comments
 (0)