diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/Mikroprozessorsysteme2/mi2/Termin3 | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Bachelor/Mikroprozessorsysteme2/mi2/Termin3')
13 files changed, 453 insertions, 0 deletions
diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/Termin3.pdf b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/Termin3.pdf Binary files differnew file mode 100644 index 0000000..a4be8fb --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/Termin3.pdf diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/Termin3Aufgabe1.c b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/Termin3Aufgabe1.c new file mode 100644 index 0000000..b222c22 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/Termin3Aufgabe1.c @@ -0,0 +1,12 @@ +// Lösung zu Termin3
+// Aufgabe 1
+// Namen: __________; ___________
+// Matr.: __________; ___________
+// vom : __________
+//
+
+int main(void)
+{
+
+ return 0;
+}
diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/makefile1 b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/makefile1 new file mode 100644 index 0000000..d10a7f9 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Aufgabe/makefile1 @@ -0,0 +1,14 @@ +FILE = Termin3Aufgabe1
+Opti = 1
+
+all:
+ arm-elf-gcc -c -g -O$(OPTI) ../boot/swi.S
+ arm-elf-gcc -c -g -O$(OPTI) ../boot/boot.s
+ arm-elf-gcc -g -c -O$(OPTI) $(FILE).c
+ arm-elf-gcc -S -O$(OPTI) $(FILE).c
+ arm-elf-ld -Ttext 0x2000000 swi.o boot.o $(FILE).o -o $(FILE).elf
+
+clean:
+ rm -f *.o
+ rm *.elf
+
diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Interface.pdf b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Interface.pdf Binary files differnew file mode 100644 index 0000000..00b5d6c --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Interface.pdf diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3.pdf b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3.pdf Binary files differnew file mode 100644 index 0000000..b34cd69 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3.pdf diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.bak.c b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.bak.c new file mode 100644 index 0000000..8c19eac --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.bak.c @@ -0,0 +1,77 @@ +// Lösung zu Termin3
+// Aufgabe 1
+// von:
+// vom:
+//
+
+#include "../h/pmc.h"
+#include "../h/tc.h"
+#include "../h/pio.h"
+#include "../h/aic.h"
+
+void taste_irq_handler (void) __attribute__ ((interrupt));
+
+// Interruptserviceroutine für die Tasten SW1 und SW2
+void taste_irq_handler (void)
+{
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+ StructAIC* aicbase = AIC_BASE; //__
+
+// ab hier entsprechend der Aufgabestellung ergänzen
+//**************************************************
+
+
+
+ aicbase->AIC_EOICR = piobaseB->PIO_ISR; //__
+}
+
+// Timer3 initialisieren
+void Timer3_init( void )
+{
+ StructTC* timerbase3 = TCB3_BASE; // Basisadressse TC Block 1
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO B
+
+ timerbase3->TC_CCR = TC_CLKDIS; // Disable Clock
+
+ // Initialize the mode of the timer 3
+ timerbase3->TC_CMR =
+ TC_ACPC_CLEAR_OUTPUT | //ACPC : Register C clear TIOA
+ TC_ACPA_SET_OUTPUT | //ACPA : Register A set TIOA
+ TC_WAVE | //WAVE : Waveform mode
+ TC_CPCTRG | //CPCTRG : Register C compare trigger enable
+ TC_CLKS_MCK1024; //TCCLKS : MCKI / 1024
+
+ // Initialize the counter:
+ timerbase3->TC_RA = 300; //__
+ timerbase3->TC_RC = 600; //__
+
+ // Start the timer :
+ timerbase3->TC_CCR = TC_CLKEN ; //__
+ timerbase3->TC_CCR = TC_SWTRG ; //__
+ piobaseA->PIO_PER = (1<<PIOTIOA3) ; //__
+ piobaseA->PIO_OER = (1<<PIOTIOA3) ; //__
+ piobaseA->PIO_CODR = (1<<PIOTIOA3) ; //__
+}
+
+int main(void)
+{
+
+ StructPMC* pmcbase = PMC_BASE; // Basisadresse des PMC
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+
+ pmcbase->PMC_PCER = 0x4000; // Peripheral Clocks einschalten für PIOB, _____
+
+// ab hier entsprechend der Aufgabestellung ergänzen
+//**************************************************
+
+
+
+
+ while(1)
+ {
+
+ }
+
+ return 0;
+}
diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.c b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.c new file mode 100644 index 0000000..05c3406 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.c @@ -0,0 +1,77 @@ +// Lösung zu Termin3 +// Aufgabe 1 +// von: +// vom: +// + +#include "../h/pmc.h" +#include "../h/tc.h" +#include "../h/pio.h" +#include "../h/aic.h" + +void taste_irq_handler (void) __attribute__ ((interrupt)); + +// Interruptserviceroutine für die Tasten SW1 und SW2 +void taste_irq_handler (void) +{ + StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B + StructAIC* aicbase = AIC_BASE; //__ + +// ab hier entsprechend der Aufgabestellung ergänzen +// ************************************************* + + + + aicbase->AIC_EOICR = piobaseB->PIO_ISR; //__ +} + +// Timer3 initialisieren +void Timer3_init( void ) +{ + StructTC* timerbase3 = TCB3_BASE; // Basisadressse TC Block 1 + StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO B + + timerbase3->TC_CCR = TC_CLKDIS; // Disable Clock + + // Initialize the mode of the timer 3 + timerbase3->TC_CMR = + TC_ACPC_CLEAR_OUTPUT | //ACPC : Register C clear TIOA + TC_ACPA_SET_OUTPUT | //ACPA : Register A set TIOA + TC_WAVE | //WAVE : Waveform mode + TC_CPCTRG | //CPCTRG : Register C compare trigger enable + TC_CLKS_MCK1024; //TCCLKS : MCKI / 1024 + + // Initialize the counter: + timerbase3->TC_RA = 300; //__ + timerbase3->TC_RC = 600; //__ + + // Start the timer : + timerbase3->TC_CCR = TC_CLKEN ; //__ + timerbase3->TC_CCR = TC_SWTRG ; //__ + piobaseA->PIO_PER = (1<<PIOTIOA3) ; //__ + piobaseA->PIO_OER = (1<<PIOTIOA3) ; //__ + piobaseA->PIO_CODR = (1<<PIOTIOA3) ; //__ +} + +int main(void) +{ + + StructPMC* pmcbase = PMC_BASE; // Basisadresse des PMC + StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A + StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B + + pmcbase->PMC_PCER = 0x4000; // Peripheral Clocks einschalten für PIOB, _____ + +// ab hier entsprechend der Aufgabestellung ergänzen +//************************************************** + + + + + while(1) + { + + } + + return 0; +} diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.out b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.out Binary files differnew file mode 100644 index 0000000..e32599e --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe1.out diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe2.c b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe2.c new file mode 100644 index 0000000..9fe2783 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe2.c @@ -0,0 +1,99 @@ +// Lösung zu Termin3
+// Aufgabe 1
+
+// vom: 04.11.2003
+//
+
+#include "../h/pmc.h"
+#include "../h/tc.h"
+#include "../h/pio.h"
+#include "../h/aic.h"
+
+void taste_irq_handler (void) __attribute__ ((interrupt));
+
+// Interruptserviceroutine für die Tasten SW1 und SW2
+void taste_irq_handler (void)
+{
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A
+ StructAIC* aicbase = AIC_BASE; // Basisadresse Advanced Interrupt Controller
+
+// ab hier entsprechend der Aufgabestellung ergänzen
+//**************************************************
+
+ if (!(piobaseB->PIO_PDSR & KEY1)) // falls Schalter 1 gedrückt
+ piobaseA->PIO_PDR = (1<<PIOTIOA3); // Timer herrscht über Bit (Tacktsignal)
+ if (!(piobaseB->PIO_PDSR & KEY2)) // falls Schalter 2 gedrückt
+ piobaseA->PIO_PER = (1<<PIOTIOA3); // PIOA herrscht über (0 Signal)
+
+ aicbase->AIC_EOICR = piobaseB->PIO_ISR; // AIC End of Interrupt Command Register = PIOB Interrupt Status Register
+}
+
+// Timer3 initialisieren
+void Timer3_init( void )
+{
+ StructTC* timerbase3 = TCB3_BASE; // Basisadressse TC Block 1
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO B
+
+ timerbase3->TC_CCR = TC_CLKDIS; // Disable Clock
+
+ // Initialize the mode of the timer 3
+ timerbase3->TC_CMR =
+ TC_ACPC_CLEAR_OUTPUT | //ACPC : Register C clear TIOA
+ TC_ACPA_SET_OUTPUT | //ACPA : Register A set TIOA
+ TC_WAVE | //WAVE : Waveform mode
+ TC_CPCTRG | //CPCTRG : Register C compare trigger enable
+ TC_CLKS_MCK1024; //TCCLKS : MCKI / 1024
+
+ // Initialize the counter:
+ timerbase3->TC_RA = 2440; // Wert 300 in Register RA: wenn Wert erreicht Steigende Flanke
+ timerbase3->TC_RC = 4880; // Wert 600 in Register RC: wenn Wert erreicht Fallende Flanke
+
+ // Start the timer :
+ timerbase3->TC_CCR = TC_CLKEN ; // Timer Clock enabled
+ timerbase3->TC_CCR = TC_SWTRG ; // Reset Counter
+ // Vermeiden, daß dauerhaftes High Signal (PIO herrscht über das BIT)
+ piobaseA->PIO_PER = (1<<PIOTIOA3) ; // PIN der PIO zuweisen
+ piobaseA->PIO_OER = (1<<PIOTIOA3) ; // wird auf Output gesetzt
+ piobaseA->PIO_CODR = (1<<PIOTIOA3) ; // Clear Output (low Signal)
+}
+
+int main(void)
+{
+
+ StructPMC* pmcbase = PMC_BASE; // Basisadresse des PMC
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+
+ // pmcbase->PMC_PCER = 0x4000; // Peripheral Clocks einschalten für PIOB,
+
+// ab hier entsprechend der Aufgabestellung ergänzen
+//**************************************************
+
+ pmcbase->PMC_PCER = 0x6200; // Timer (0x200), PIOA (0x2000), PIOB (0x4000) einschalten
+ Timer3_init();
+ piobaseB->PIO_PER = 0x38; // Schalter 1-3 enabeled
+
+
+ // Interrupt Initialisierung für PIOB (0x4000)
+ piobaseB->PIO_IER = 0x18; // Schalter 1+2 lösen Interrupts aus
+ StructAIC* aicbase = AIC_BASE; // Basisadresse Advanced Interrupt Controller
+ aicbase->AIC_IDCR = 0x4000; // Interrupt disabled
+ aicbase->AIC_ICCR = 0x4000; // Interrupt clear
+ aicbase->AIC_SMR[14] = 0x07; // An Stelle 14 Level Sensitive / Höchste Priorität
+ aicbase->AIC_SVR[14] = (unsigned int)taste_irq_handler; // Adresse der Interrupt Service Routine in Vektor-Tabelle
+ aicbase->AIC_IECR = 0x4000;
+
+
+
+ while(piobaseB->PIO_PDSR & KEY3)
+ {
+
+ }
+
+ // Vermeiden, daß dauerhaftes High Signal (PIO herrscht über das BIT)
+ piobaseA->PIO_PER = (1<<PIOTIOA3) ; // PIN der PIO zuweisen
+ aicbase->AIC_IDCR = 0x4000; // Interrupt Disable
+
+ return 0;
+}
diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe3.c b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe3.c new file mode 100644 index 0000000..48a7955 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/Termin3Aufgabe3.c @@ -0,0 +1,109 @@ +// Lösung zu Termin3
+// Aufgabe 3
+
+// vom: 07.12.2005
+// Andreas Spirka, Sven Eisenhauer
+
+#include "../h/pmc.h"
+#include "../h/tc.h"
+#include "../h/pio.h"
+#include "../h/aic.h"
+
+void taste_irq_handler (void) __attribute__ ((interrupt));
+
+// Interruptserviceroutine für die Tasten SW1 und SW2
+void taste_irq_handler (void)
+{
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A
+ StructAIC* aicbase = AIC_BASE; // Basisadresse Advanced Interrupt Controller
+
+// ab hier entsprechend der Aufgabestellung ergänzen
+//**************************************************
+
+ if (!(piobaseB->PIO_PDSR & KEY1)) // falls Schalter 1 gedrückt
+ piobaseA->PIO_PDR = (1<<PIOTIOA3); // Timer herrscht über Bit (Tacktsignal)
+ if (!(piobaseB->PIO_PDSR & KEY2)) // falls Schalter 2 gedrückt
+ piobaseA->PIO_PER = (1<<PIOTIOA3); // PIOA herrscht über (0 Signal)
+
+ aicbase->AIC_EOICR = piobaseB->PIO_ISR; // AIC End of Interrupt Command Register = PIOB Interrupt Status Register
+}
+
+// Timer3 initialisieren
+void Timer3_init( void )
+{
+ StructTC* timerbase3 = TCB3_BASE; // Basisadressse TC Block 1
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO B
+
+ timerbase3->TC_CCR = TC_CLKDIS; // Disable Clock
+
+ // Initialize the mode of the timer 3
+ timerbase3->TC_CMR =
+ TC_ACPC_CLEAR_OUTPUT | //ACPC : Register C clear TIOA
+ TC_ACPA_SET_OUTPUT | //ACPA : Register A set TIOA
+ TC_WAVE | //WAVE : Waveform mode
+ TC_CPCTRG | //CPCTRG : Register C compare trigger enable
+ TC_CLKS_MCK1024; //TCCLKS : MCKI / 1024
+
+ // Initialize the counter:
+ timerbase3->TC_RA = 2440; // Wert 300 in Register RA: wenn Wert erreicht Steigende Flanke
+ timerbase3->TC_RC = 4880; // Wert 600 in Register RC: wenn Wert erreicht Fallende Flanke
+
+ // Start the timer :
+ timerbase3->TC_CCR = TC_CLKEN ; // Timer Clock enabled
+ timerbase3->TC_CCR = TC_SWTRG ; // Reset Counter
+ // Vermeiden, daß dauerhaftes High Signal (PIO herrscht über das BIT)
+ piobaseA->PIO_PER = (1<<PIOTIOA3) ; // PIN der PIO zuweisen
+ piobaseA->PIO_OER = (1<<PIOTIOA3) ; // wird auf Output gesetzt
+ piobaseA->PIO_CODR = (1<<PIOTIOA3) ; // Clear Output (low Signal)
+}
+
+void piob_init(void)
+{
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+ // disable all interrupt sources of pio
+ piobaseB->PIO_IDR = 0xFFFFFFFF;
+ piobaseB->PIO_PER = KEY1|KEY2|KEY3; // Schalter 1-3 enabeled
+ // Interrupt Initialisierung für PIOB (0x4000)
+ piobaseB->PIO_IER = KEY1|KEY2; // Schalter 1+2 lösen Interrupts aus
+}
+
+int main(void)
+{
+
+ StructPMC* pmcbase = PMC_BASE; // Basisadresse des PMC
+ StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A
+ StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
+
+
+// ab hier entsprechend der Aufgabestellung ergänzen
+//**************************************************
+
+ // Timer (0x200), PIOA (0x2000), PIOB (0x4000) einschalten
+ pmcbase->PMC_PCER = (1<<PIOA_ID)|(1<<PIOB_ID)|(1<<TC3_ID);
+ Timer3_init();
+ piob_init();
+
+ StructAIC* aicbase = AIC_BASE; // Basisadresse Advanced Interrupt Controller
+ aicbase->AIC_IDCR = (1<<PIOB_ID); // Interrupt disabled
+ aicbase->AIC_ICCR = (1<<PIOB_ID); // Interrupt clear
+ aicbase->AIC_SMR[PIOB_ID] = AIC_SRCTYPE_EXT_LOW_LEVEL|AIC_PRIOR; // An Stelle 14 Level Sensitive / Höchste Priorität
+ aicbase->AIC_SVR[PIOB_ID] = (unsigned int)taste_irq_handler; // Adresse der Interrupt Service Routine in Vektor-Tabelle
+ aicbase->AIC_IECR = (1<<PIOB_ID); // enable PIOB Interrupt in AIC
+
+ while(piobaseB->PIO_PDSR & KEY3)
+ {
+
+ }
+ // Vermeiden, daß dauerhaftes High Signal (PIO herrscht über das BIT)
+ piobaseA->PIO_PER = (1<<PIOTIOA3) ; // PIN der PIO zuweisen
+ piobaseA->PIO_OER = (1<<PIOTIOA3) ; // wird auf Output gesetzt
+ piobaseA->PIO_CODR = (1<<PIOTIOA3) ; // Clear Output (low Signal)
+ // disable piob command register in AIC
+ aicbase->AIC_IDCR = (1<<PIOB_ID);
+ // disable all interrupt sources of pio
+ piobaseB->PIO_IDR = 0xFFFFFFFF;
+ // Timer (0x200), PIOA (0x2000), PIOB (0x4000) ausschalten
+ pmcbase->PMC_PCDR = (1<<PIOA_ID)|(1<<PIOB_ID)|(1<<TC3_ID);
+ return 0;
+}
diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/frank_micsys2_praktikum03.zip b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/frank_micsys2_praktikum03.zip Binary files differnew file mode 100644 index 0000000..13733fb --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/frank_micsys2_praktikum03.zip diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/makefile b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/makefile new file mode 100644 index 0000000..80f70dd --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/makefile @@ -0,0 +1,51 @@ +FILE = Termin3Aufgabe1
+Opti = 0
+all:
+
+# Übersetzen der Quelldatei
+ arm-elf-gcc -c -g -O$(Opti) $(FILE).c -I ../h
+
+# Erzeugen der Assemblerdatei aus der Quelldatei
+ arm-elf-gcc -S -o$(Opti) $(FILE).c -I ../h
+
+# Erzeugen der benötitgen Objektdateien
+ arm-elf-gcc -c -g -O$(Opti) ../boot/swi.S -o swi.o -I ../h
+ arm-elf-gcc -c -g -O$(Opti) ../boot/boot_ice.S -o boot_ice.o -I ../h
+ arm-elf-gcc -c -g -O$(Opti) ../boot/boot_flash.S -o boot_flash.o -I ../h
+# arm-elf-gcc -c -g -O$(Opti) seriell.S -I ../h
+# arm-elf-gcc -c -g -O$(Opti) ser_io.S -I ../h
+
+# Binden für die RAM-Version
+# arm-elf-ld -Ttext 0x02000000 -O$(Opti) boot.o swi.o $(FILE).o -o $(FILE).elf /usr/gnutools/lib/gcc-lib/arm-elf/3.3.2/libgcc.a
+ arm-elf-ld -Ttext 0x02000000 -O$(Opti) boot_ice.o swi.o $(FILE).o -o $(FILE).elf
+
+# Linkerskripte noch nicht getestet
+# arm-elf-ld -T ldscript.ram boot.o swi.o seriell.o ser_io.o swi.o $(FILE).o -o $(FILE).elf /gnutools/lib/gcc-lib/arm-elf/3.2.2/libgcc.a
+
+# Binden für die FLASH-Version
+# arm-elf-ld -Ttext 0x1000000 boot.o swi.o $(FILE).o -o $(FILE).out /usr/gnutools/lib/gcc-lib/arm-elf/3.3.2/libgcc.a
+ arm-elf-ld -Ttext 0x1000000 boot_flash.o swi.o $(FILE).o -o $(FILE).out
+
+# Linkerskripte noch nicht getestet
+# arm-elf-ld -T ldscript.rom boot.o seriell.o ser_io.o swi.o $(FILE).o -o $(FILE).out /gnutools/lib/gcc-lib/arm-elf/3.2.2/libgcc.a
+
+# -I --input-target <bfdname> Assume input file is in format <bfdname>
+# -O --output-target <bfdname> Create an output file in format <bfdname>
+# -S --strip-all Remove all symbol and relocation information
+# -x --discard-all Remove all non-global symbols
+# -N --strip-symbol <name> Do not copy symbol <name>
+# -O --output-target <bfdname> Create an output file in format <bfdname>
+# -g --strip-debug Remove all debugging symbols
+ arm-elf-objcopy -I elf32-littlearm -O binary -x -S -N -g $(FILE).out $(FILE).rom
+# programm.rom nach /tftpboot/downlaod.bin kopieren <cp name.rom /tftpboot/download.bin>
+# Jumper E7 muß auf STD stecken
+# Mit <telnet 141.100.xxx.xxx> mit dem BDI2000 verbinden.
+# mit <erase 0x1000000> flash-Bereich löschen
+# mit <prog 0x1000000 download.bin bin> Programm ins flash schreiben.
+#
+#
+clean:
+ rm *.o
+ rm *.s
+ rm *.elf
+ rm *.rom
\ No newline at end of file diff --git a/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/makefile1 b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/makefile1 new file mode 100644 index 0000000..6308804 --- /dev/null +++ b/Bachelor/Mikroprozessorsysteme2/mi2/Termin3/makefile1 @@ -0,0 +1,14 @@ +FILE = Termin3Aufgabe3
+Opti = 1
+
+all:
+ arm-elf-gcc -c -g -O1 ../boot/swi.S
+ arm-elf-gcc -c -g -O1 ../boot/boot.s
+ arm-elf-gcc -c -g -O1 $(FILE).c
+ arm-elf-gcc -S $(FILE).c
+ arm-elf-ld -Ttext 0x2000000 swi.o boot.o $(FILE).o -o $(FILE).elf
+
+clean:
+ rm -f *.o
+ rm *.elf
+
|
