Skip to content

Commit

Permalink
rework of docs started
Browse files Browse the repository at this point in the history
  • Loading branch information
thir820 committed Aug 9, 2024
1 parent 8c8c5c9 commit 2bbc974
Show file tree
Hide file tree
Showing 25 changed files with 178 additions and 102 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ htmlcov

initrd.img

state/
/state

tools/
/tools

*.swp

Expand Down
4 changes: 2 additions & 2 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@

### Docs

- [ ] Overview
- [ ] Setup
- [x] Overview
- [x] Setup
- [ ] Develop images
- [ ] Packaging apps
- [ ] Developing apps
Expand Down
23 changes: 18 additions & 5 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,22 @@

- [Overview](overview.md)
- [Setup](setup.md)
- [Developing images](images.md)
- [Packaging apps](packaging.md)
- [Developing apps](app_development.md)
- [The dev container](container/index.md)
- [The workspace](workspace/index.md)
- [Developing images](images/index.md)
- [EbcL image concept](images/overview.md)
- [EbcL image specification](images/spec.md)
- [Building an image from scratch](images/from_scatch.md)
- [The example images](examples/index.md)
- [Kernel development](kernel.md)
- [Board Bringup](board_bringup.md)
- [Packaging apps](packaging.md)
- [Developing apps](apps/index.md)
- [Bulding old images](old_images.md)
- [The workspace in detail](workspace/index.md)
- [The dev container](dev_container.md)
- [The build tools](tools/index.md)
- [Embdgen](tools/embdgen.md)
- [Root generator](tools/root.md)
- [Root configurator](tools/root_config.md)
- [Initrd generator](tools/initrd.md)
- [Boot generator](tools/boot.md)

Empty file removed docs/app_development.md
Empty file.
1 change: 1 addition & 0 deletions docs/apps/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Developing apps
97 changes: 97 additions & 0 deletions docs/assets/EmbeddedSystem.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.5 Chrome/126.0.6478.183 Electron/31.3.0 Safari/537.36" version="24.7.5">
<diagram name="Page-1" id="2TYgwuEKGSjm0ON4_aNX">
<mxGraphModel dx="1728" dy="1003" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="XRMtSqIOEsNKMCHWb8mg-1" value="System on Chip (SoC)&lt;br&gt;Hardware Layer" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="30" y="260" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-2" value="Bootloader (SPL)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="30" y="220" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-3" value="Linux kernel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="30" y="180" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-4" value="Linux Userland&lt;div&gt;(Libraries, Apps,&lt;/div&gt;&lt;div&gt;Containers, ...)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="30" y="50" width="160" height="120" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-5" value="Very simple embedded system" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry y="40" width="200" height="260" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-6" value="System on Chip (SoC)&lt;br&gt;Hardware Layer" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="250" y="260" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-7" value="Bootloader (SPL)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="250" y="220" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-8" value="Linux kernel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="250" y="180" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-9" value="Linux Userland&lt;div&gt;(Libraries, Apps,&lt;/div&gt;&lt;div&gt;Containers, ...)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="250" y="50" width="160" height="120" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-12" value="Trusted Execution Environment&lt;div&gt;(TEE)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="420" y="50" width="80" height="160" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-13" value="Simple embedded system" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="220" y="40" width="290" height="260" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-14" value="System on Chip (SoC)&lt;br&gt;Hardware Layer" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="30" y="530" width="370" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-15" value="Bootloader (SPL)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="30" y="490" width="370" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-16" value="Linux kernel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="30" y="450" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-17" value="Linux Userland&lt;div&gt;(Libraries, Apps,&lt;/div&gt;&lt;div&gt;Containers, ...)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="30" y="320" width="160" height="120" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-18" value="Trusted Execution Environment&lt;div&gt;(TEE)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="200" y="320" width="80" height="160" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-19" value="Embedded system" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry y="310" width="410" height="260" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-20" value="Real-time&lt;div&gt;Operating&lt;/div&gt;&lt;div&gt;System&lt;/div&gt;&lt;div&gt;(e.g.&amp;nbsp;&lt;span style=&quot;background-color: initial;&quot;&gt;FreeRTOS,&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;classic Autosar)&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-19">
<mxGeometry x="290" y="10" width="110" height="160" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-23" value="Linux kernel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="30" y="720" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-24" value="Linux Userland&lt;div&gt;(Libraries, Apps,&lt;/div&gt;&lt;div&gt;Containers, ...)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="30" y="590" width="110" height="120" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-26" value="Embedded High-Perfomance Controller" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry y="580" width="540" height="300" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-21" value="System on Chip (SoC)&lt;br&gt;Hardware Layer" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="30" y="260" width="500" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-22" value="Bootloader (SPL)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="30" y="220" width="500" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-28" value="Hypervisor" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="30" y="180" width="290" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-25" value="Trusted Execution Environment&lt;div&gt;(TEE)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="330" y="10" width="80" height="200" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-27" value="Real-time&lt;div&gt;Operating&lt;/div&gt;&lt;div&gt;System&lt;/div&gt;&lt;div&gt;(e.g.&amp;nbsp;&lt;span style=&quot;background-color: initial;&quot;&gt;FreeRTOS,&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;classic Autosar)&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="420" y="10" width="110" height="200" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-29" value="Android kernel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="150" y="140" width="90" height="30" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-30" value="Andorid&lt;div&gt;Userland&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="150" y="10" width="90" height="120" as="geometry" />
</mxCell>
<mxCell id="XRMtSqIOEsNKMCHWb8mg-31" value="Other VMs" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="XRMtSqIOEsNKMCHWb8mg-26">
<mxGeometry x="250" y="10" width="70" height="160" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added docs/assets/EmbeddedSystem.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/assets/EmbeddedSystem.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/board_bringup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Board Bringup
8 changes: 0 additions & 8 deletions docs/container/index.md

This file was deleted.

1 change: 1 addition & 0 deletions docs/dev_container.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# The dev container
1 change: 1 addition & 0 deletions docs/images/from_scatch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Building an image from scratch
4 changes: 3 additions & 1 deletion docs/images.md → docs/images/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Developing images

TODO: Rework

EB corbos Linux is intended as _embedded Linux distribution build kit_, like _Yocto_ is.
Instead of starting form a pre-defined and pre-configured already integrated image, you describe
what you need, and build a embedded Linux distribution tailored to your needs.
Expand Down Expand Up @@ -41,4 +43,4 @@ of the template.

The image descriptions of [kiwi-ng](https://osinside.github.io/kiwi/) and [elbe](https://elbe-rfs.org/) use different tags,
but are very similar form the basic ideas, and converting a [kiwi-ng](https://osinside.github.io/kiwi/) to [elbe](https://elbe-rfs.org/)
is straight forward.
is straight forward.
1 change: 1 addition & 0 deletions docs/images/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# EbcL image concept
1 change: 1 addition & 0 deletions docs/images/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# EbcL image specification
1 change: 1 addition & 0 deletions docs/kernel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Kernel development
1 change: 1 addition & 0 deletions docs/old_images.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Bulding old Berrymill images
16 changes: 12 additions & 4 deletions docs/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@

EB corbos Linux built on Ubuntu is a long-term maintained embedded Linux distribution focused on automotive ECUs. It provides security patches for a frozen package set for up to 15 years on a quite low pricing. To realize this, Elektrobit partners with Canonical. EB corbos Linux makes use of many Ubuntu packages, qualifies these packages for automotive embedded use-cases in reference images, and adds additional embedded optimized components, to create an industry grade embedded Linux build toolkit.

In contrast to IT Linux distributions, EB corbos Linux allows a user to create a completely customer specific image from scratch in a reproducible way. This is realized using this SDK.
In contrast to IT Linux distributions, EB corbos Linux allows a user to create a completely customer specific image from scratch in a reproducible way. This is realized using this SDK. A free variant of EB corbos Linux is available at the [Elektrobit homepage](https://www.elektrobit.com/products/ecu/eb-corbos/linux-built-on-ubuntu/). The free variant doesn't contain proprietary hardware drivers or pre-qualified reference images.To kick-start the development of new ECUs, a full EB corbos Linux release also contains pre-qualified reference images which already implement typical automotive use-cases. Please contact [Elektrobit sales](https://www.elektrobit.com/contact-us/) to get a full evaluation package of EB corbos Linux.

A free variant of EB corbos Linux is available at the [Elektrobit homepage](https://www.elektrobit.com/products/ecu/eb-corbos/linux-built-on-ubuntu/). The free variant doesn't contain proprietary hardware drivers or pre-qualified reference images.
![Embedded Systems](/assets/EmbeddedSystem.drawio.png)

To kick-start the development of new ECUs, a full EB corbos Linux release also contains pre-qualified reference images which already implement typical automotive use-cases. Please contact [Elektrobit sales](https://www.elektrobit.com/contact-us/) to get a full evaluation package of EB corbos Linux.
The image above shows a range of embedded system architectures.

[This repository](https://github.com/Elektrobit/ebcl_template/) provides a template workspace to start developing your own Linux images and applications. It's based on a dev container to provide a consistent build environment. This dev container can also be used stand-alone with other IDEs or in CI environments. For more details about the container and stand-alone usage look at the dev container chapter.
Very simple embedded systems run only a bare-metal Linux. An example for such a system is the Raspberry Pi running Raspberry Pi OS. Such images can be easily directly generated with tools like [elbe](https://elbe-rfs.org/), [kiwi-ng](https://osinside.github.io/kiwi/) or [debos](https://github.com/go-debos/debos), but this architecture doesn’t fit industrial needs.

For real world industrial solutions at least secure boot is required, and typically a Trusted Execution Environment (TEE) is involved in the secure boot process. This is depicted above as a simple embedded system. Such images may already require a more complex partition layout, depending on the bootloader and SoC requirements.

In the automotive world, in addition to a Posix OS, typically also a safety certified OS like classic Autosar is involved. This is depicted above as an embedded system. If this is combined with an A/B schema for the update of the Linux and the classic Autosar the partition layouts get quite complex and can hardly be directly created with the tools mentioned above.

Our day to day business at [Elektrobit](https://www.elektrobit.com/) are automotive high-performance controllers. Which extends the embedded system architecture with a hypervisor and multiple virtual machines (VMs), like an additional Andriod VM for infotainment solutions. The target of EB corbos Linux, and this SDK, is to fully support such embedded high-performance controller system architectures, and allow development and maintenance of such systems in an easy, efficient and reliable way.

[This repository](https://github.com/Elektrobit/ebcl_template/) provides a template workspace to start developing your own Linux images and applications. It's based on a [dev container](https://github.com/Elektrobit/ebcl_dev_container) to provide a consistent build environment. This dev container can also be used stand-alone with other IDEs or in CI environments. For more details about the container and stand-alone usage look at the [dev container repository](https://github.com/Elektrobit/ebcl_dev_container).
Loading

0 comments on commit 2bbc974

Please sign in to comment.