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>
|
||||
<toc-element topic="Klassifikation.md"/>
|
||||
<toc-element topic="arm.md">
|
||||
<toc-element topic="arm_toolchain.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
<toc-element toc-title="EWI">
|
||||
<toc-element topic="1_WirtschaftsinformatikImDigitalenZeitalter.md"/>
|
||||
@ -56,4 +59,5 @@
|
||||
<toc-element topic="6_ProcessMiningManifest.md"/>
|
||||
</toc-element>
|
||||
</toc-element>
|
||||
|
||||
</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:
|
||||
- 
|
||||
-
|
||||
|