Hallo,
ich würde gerne mit euch zusammen ein Konzept entwickeln um mit der
STM32-Familie (z.B. STM32F407 vom Discovery-Board) die Möglichkeit
auszuarbeiten, Verschiedene Applikationen innerhalb eines Core-Systems
betreiben zu können.
Vielleicht wäre hier bereits hier eine Möglichkeit das Core-System mit
z.B. FreeRTOS oder anderen RTOS-Systemen seiner Wahl aufzubauen.
Idee:
[Core-OS]:
- RTOS als Grundgerüst um z.b. Threads und ähnliches vereinfacht
integrieren zu können.
- Beinhaltet Funktionen wie:
# Installieren von Applikationen
# Löschen von Applikationen
# Anzeigen freier Speicher
# Systemeigene Funktionen (z.B. STM32 standard peripheral library
integration)
# Sollte eigene zu flashende Binär-File (Typ z.B. ELF BIN HEX)
sein
- Speichermanagement:
# Flash des STM32-Chips per Linker-Script teilen
# Für Applikationen feste Bereiche festlegen (z.B. pro Applikation max
16kbytes
# Festlegen von Application-Slots (z.B. Max 5 Slots per Linker-Script
vom
Core-OS festgelegt
- Jobmanagement:
# Regelt das Schreiben Löschen Ausführen von Applications
# Schreibt neue Applications in den Flashbereich
## Prüft Slot´s, sollte einer Frei sein wird hier die Application
abgelegt.
# Lädt und Führt die Application aus, bei beenden wird z.b. Ram
automatisch freigeben
# Beim Löschen wird der betreffende Slot wieder freigeben.
[Applications]
- Bekommt eigenes Linker Script z.B.
1 | ENTRY(main)
|
2 |
|
3 | MEMORY
|
4 | {
|
5 | APP (rwx) : ORIGIN = 0, LENGTH = XX <- Max Größe der Application in K
|
6 | }
|
7 |
|
8 | SECTIONS
|
9 | {
|
10 | ...
|
11 | ... <- Sections festlegen(z.B. .text .data .bss)
|
12 | ...
|
13 | }
|
- Beim Compilieren gegen die Core-OS-Binary linken um Funktionen usw
nutzen
zu können
#Oder Header-File bauen mit wichtigsten Funktionen und eine Static-
Library
includieren
- Compiler Optionen nutzen um Speicherplatz so klein wie möglich zu
halten
(nicht benötigte bzw genutzte Funktionen ausklammern beim
BUILD-Process
Ich hoffe dass euch meine Idee gefällt und es vielleicht ein paar Leute
gibt welche etwas ähnliches aufgebaut haben bzw Interesse haben
möglicherweise dergleichen durchzuführen.
Gerne nehme ich Ideen und Verbesserungsvorschläge an, Source-Code kann
gerne hier hochgeladen oder extern verlinkt werden z.B. Github / SVN /
etc.