update
BIN
Writerside/images/image_291.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
Writerside/images/image_292.png
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
Writerside/images/image_293.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
Writerside/images/image_294.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
Writerside/images/image_295.png
Normal file
After Width: | Height: | Size: 122 KiB |
BIN
Writerside/images/image_296.png
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
Writerside/images/image_297.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
Writerside/images/image_298.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
Writerside/images/image_299.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
Writerside/images/image_300.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
Writerside/images/image_301.png
Normal file
After Width: | Height: | Size: 29 KiB |
@ -43,6 +43,9 @@
|
|||||||
<toc-element topic="MU7Rechner.md"/>
|
<toc-element topic="MU7Rechner.md"/>
|
||||||
</toc-element>
|
</toc-element>
|
||||||
<toc-element topic="Klassifikation.md"/>
|
<toc-element topic="Klassifikation.md"/>
|
||||||
|
<toc-element topic="arm.md">
|
||||||
|
<toc-element topic="arm_toolchain.md"/>
|
||||||
|
</toc-element>
|
||||||
</toc-element>
|
</toc-element>
|
||||||
<toc-element toc-title="EWI">
|
<toc-element toc-title="EWI">
|
||||||
<toc-element topic="1_WirtschaftsinformatikImDigitalenZeitalter.md"/>
|
<toc-element topic="1_WirtschaftsinformatikImDigitalenZeitalter.md"/>
|
||||||
@ -56,4 +59,5 @@
|
|||||||
<toc-element topic="6_ProcessMiningManifest.md"/>
|
<toc-element topic="6_ProcessMiningManifest.md"/>
|
||||||
</toc-element>
|
</toc-element>
|
||||||
</toc-element>
|
</toc-element>
|
||||||
|
|
||||||
</instance-profile>
|
</instance-profile>
|
102
Writerside/topics/RA/arm.md
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
# ARM
|
||||||
|
|
||||||
|
## ARM Prozessoren
|
||||||
|
### Architektur Revisionen
|
||||||
|
- Unterschiedliche Features
|
||||||
|
- bspw. unterschiedliche Multiplikationsbefehle, Adressierungsarten, ...
|
||||||
|
- jeweils gleiches Befehssatzdesign für jede Revision
|
||||||
|
- aktuell: v7 / v8
|
||||||
|
|
||||||
|
### Profile: Konkrete Prozessor-Implementierungen
|
||||||
|
- Application Profil ['A']:
|
||||||
|
- High Performance
|
||||||
|
- bspw. Mobile, Enterprise
|
||||||
|
- Real Time Profil ['M']:
|
||||||
|
- Embedded Anwendungen
|
||||||
|
- bspw. Automotive, Industriesteuerungen
|
||||||
|
- Microcontroller Profil ['M']:
|
||||||
|
- Mikrocontroller für große Bandbreite an Anforderungen
|
||||||
|
- Anzahl Gatter, Kosten, Realtime, Performance
|
||||||
|
|
||||||
|
|
||||||
|
- Aktuell in 2017:
|
||||||
|
- v7 (32Bit):
|
||||||
|
- Cortex A7, Cortex M4, Cortex M0+
|
||||||
|
- v8 (64Bit):
|
||||||
|
- Cortex A53, Cortex A57
|
||||||
|
|
||||||
|
|
||||||
|
## Bedeutung des Befehlssatzes (ISA)
|
||||||
|
- Befehlssatz = Instruction Set Architektur
|
||||||
|
- ISA Level
|
||||||
|
- ist das Interface zwischen Soft- und Hardware
|
||||||
|
- definiert die Sprache, die von Soft- & Hardware verstanden werden muss
|
||||||
|
- 
|
||||||
|
|
||||||
|
|
||||||
|
### ARM Instruction Sets
|
||||||
|

|
||||||
|
- ARM unterstützt derzeit 3 IS
|
||||||
|
- A64 instruction set
|
||||||
|
- eingeführt mit ARMv8-A, um 64 Bit zu unterstützen
|
||||||
|
- A32 instruction set ("ARM")
|
||||||
|
- 32 Bit Befehlsatz in pre-ARMv8-Architekturen
|
||||||
|
- T32 instruction set ("Thumb"/"Thumb2")
|
||||||
|
- komprimierter 16/32 Bit Befehlssatz (gemischt)
|
||||||
|
- in pre-ARMv8-Architekturen
|
||||||
|
|
||||||
|
|
||||||
|
## Coding Standards UAL und APCS
|
||||||
|
### Unified Assembler Language (UAL)
|
||||||
|
- Coding Standard, der von Compilern für ARM (32bit) und Thumb verstanden wird
|
||||||
|
- Macht Programme möglich, die mit verschiedenen Prozessoren kompatibel sind
|
||||||
|
|
||||||
|
### ARM Program Calling Standard (APCS)
|
||||||
|
- Regelt Aufruf von
|
||||||
|
- Unterprogrammen
|
||||||
|
- Verwendung von Registern
|
||||||
|
- ...
|
||||||
|
- Ermöglicht Verwendung von Objektbibliotheken, welche von anderen Compilern übersetzt wurden
|
||||||
|
|
||||||
|
|
||||||
|
## Architektonisches Erbe der ARM-Prozessoren
|
||||||
|
**Verwendete Merkmale**
|
||||||
|
- RISC
|
||||||
|
- Grundlegendes Design-Prinzip: Einfachheit
|
||||||
|
- Load/Store Architektur (Register-Register), von Neumann
|
||||||
|
- 32Bit oder 64Bit (1 Wort)
|
||||||
|
- 1Byte = 8Bit
|
||||||
|
- Byteweise Adressierung des Speichers
|
||||||
|
- Little-Endian und Big-Endian kompatibel
|
||||||
|
- Vorteil für Einsatzzweck als Standard CPU in Kommunikationsgeräten
|
||||||
|
- Standard: Little-Endian
|
||||||
|
- [3-Adressbefehle](Klassifikation.md#3-adress-befehle) (32Bit) oder Thumb
|
||||||
|
|
||||||
|
**Verworfene Merkmale**
|
||||||
|
- Registerfenster
|
||||||
|
- wird nur bei SPARC Prozessoren genutzt
|
||||||
|
- Delayed Branches
|
||||||
|
- der dem Branch folgende Befehl wird ausgeführt bevor der Sprung durchgeführt wurde
|
||||||
|
- Behandlung von Interrupts und Exceptions schwieriger
|
||||||
|
- Ausführung aller Befehle in einem Taktzyklus
|
||||||
|
- setzt [Harvard](MU6Rechner.md#harvard-architektur) voraus
|
||||||
|
- Kompensation durch verbesserte Adressierungsmodi
|
||||||
|
|
||||||
|
|
||||||
|
## Ein erstes ARM-Programm (GNU)
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### Wie wird aus einem Programm Maschinencode?
|
||||||
|

|
||||||
|
- Codierungsvorgang immer gleich
|
||||||
|
- kann von Programm (_Assembler_) übernommen werden
|
||||||
|
- Kann weitere Erleichterungen ermöglichen
|
||||||
|
- Bezeichner Konstanten, Daten, Adressen
|
||||||
|
- Reservieren von Speicherbereichen für (Zwischen-)Ergebnisse
|
||||||
|
- Anlegen und Initialisieren von Daten und Datenstrukturen beim Programmstart hinzufügen
|
||||||
|
-
|
||||||
|
|
||||||
|
|
||||||
|
## [ARM Toolchain](arm_toolchain.md)
|
||||||
|
|
48
Writerside/topics/RA/arm_toolchain.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# ARM Toolchain
|
||||||
|

|
||||||
|
|
||||||
|
## Targets
|
||||||
|
### Entwicklung auf dem Device
|
||||||
|
- Native Toolchain
|
||||||
|
- Benötigt ein OS
|
||||||
|
|
||||||
|
### Cross Entwicklung
|
||||||
|
- Compiler auf dem PC übersetzt für Hardware für die Zielplattform
|
||||||
|
|
||||||
|
### Entwicklung im Emulator auf dem PC
|
||||||
|
- Compiler auf dem PC übersetzt für Hardware, ausgeführt im Simulator
|
||||||
|
- Wenn Hardware nicht verfügbar oder Entwicklung zeitaufwändig
|
||||||
|
- Insight, QEmu
|
||||||
|
|
||||||
|
### Bare Metal
|
||||||
|
- Für Mikroprozessor ohe BS
|
||||||
|
|
||||||
|
### Betriebssysteme
|
||||||
|
- Linux
|
||||||
|
- Embedded Windows
|
||||||
|
- Realtime OS
|
||||||
|
|
||||||
|
|
||||||
|
## Toolchain für das Praktikum
|
||||||
|

|
||||||
|
|
||||||
|
## GNU ARM Assembler
|
||||||
|
- 
|
||||||
|
- rn = Registername
|
||||||
|
|
||||||
|
|
||||||
|
### Assembler-Direktiven
|
||||||
|
- können Übersetzungsvorgang steuern
|
||||||
|
- können Speicherbereiche für das Programm reservieren
|
||||||
|
- 
|
||||||
|
- können Datenstrukturen für das Programm anlegen und initialisieren
|
||||||
|
- 
|
||||||
|
|
||||||
|
|
||||||
|
### Pseudobefehle
|
||||||
|
- Befehle, die es in der Maschinensprache nicht gibt, aber häufig gebraucht werden
|
||||||
|
- Assembler übersetzt diese in eine geeignete Sequenz von "echten" Assemblerbefehlen
|
||||||
|
- Beispiel:
|
||||||
|
- 
|
||||||
|
-
|
||||||
|
|