Kompilierung in Keil 4,70

OP #3644113
Lesenswert?

Hallo allerseits

Ich will unter keil uvision 4,70 folgenden Code kompilieren:
1
  AREA MyData, DATA, align = 2
2
  GLOBAL MeinNumFeld  
3

4
  
5
MeinNumFeld    DCD       0x22,  2_00111110,  -52,  78,  0x60000000,  0x50000000
6

7
MeinWordFeld  DCW       0x1234, 0x5678, 0x9abc, 0xdef0
8

9
                
10
MeinTextFeld  DCB      "ABab0123"
11

12
                
13
MeinByteFeld  DCB       0xef, 0xdc, 0xba, 0x98
14

15
MeinBlock       SPACE     0x20
16

17
;********************************************
18
; Code section, aligned on 8-byte boundery
19
;********************************************
20

21
  AREA MyCode, CODE, readonly, align = 2
22

23
;--------------------------------------------
24
; main subroutine
25
;--------------------------------------------
26
  GLOBAL main
27
  
28
  
29
main  PROC
30
  
31
  
32
; ----------------------------------------------------------------------------------------
33
; Laden von Konstanten in Register
34
; ----------------------------------------------------------------------------------------
35
  mov    R0, #0x12    ;Anw-01 : Konstanten 0...255 (*4, *16, *64, ....)
36

37
  mov    R1, #-2      ;Anw-02 : negative Konstanten 0...255 (*4, *16, *64, ....)
38

39
  ldr    R2,=0xfe543210  ;Anw-03: beliebige 32-bit-Konstanten (Pseudobefehl !!!)
40
  
41

42
; -----------------------------------------------------------------------------------------
43
; Zugriff auf Variablen
44
; -----------------------------------------------------------------------------------------
45

46
    ; --- Byte-, Halbword- und Wortzugriffe ---
47
    ldr     r0, =MeinByteFeld    ; Anw-04: Lade die Startadresse des Bytefeldes
48
    ldrb    r1, [r0]             ; Anw-05: Achtung: auch bei Byte- und Halbwort-Zugriffen
49
    ldrh    r2, [r0]             ; Anw-06           wird immer das ganze Register verändert !!!!!
50
    ldr     r3, [r0]             ; Anw-07
51

52
    ; --- einfache Feldzugriffe ---
53
    ldr     r4, =MeinWordFeld    ; Anw-08: Lade die Adresse des Wortfeldes "MeinWortFeld"
54
    ldr     r5, [r4]             ; Anw-09
55
    ldr     r6, [r4, #4]         ; Anw-10: konstanter Offset
56

57
    ; --- Variablen (Worte) speichern ---
58
    ldr     r0, =0x123456ab      ; Anw-11: Lade die Konstante (>255)
59
    ldr     r1, =MeinBlock       ; Anw-12: Lade die Anfangsadresse von "MeinBlock"
60
    str     r0, [r1]             ; Anw-13 (word-Befehl) Speicheradresse muss aligned sein !
61
    str     r0, [r1, #4]         ; Anw-14 (word-Befehl) Speicheradresse muss aligned sein !
62
    
63
    ; --- Variablen (Byte) speichern ---    
64
    mov     r2, #0x1a            ; Anw-15
65
    strb    r2, [r1, #9]         ; Anw-16 (byte-Befehl) 
66
    strb    r2, [r1, #10]        ; Anw-17 (byte-Befehl)
67

68
; -------------------------------------------------------------------------------------------
69
; Ganzzahl-Addition und Flags
70
; -------------------------------------------------------------------------------------------
71

72
    ldr     r0,=MeinNumFeld      ; Anw-18
73
    ldr     r1, [r0]             ; Anw-19
74
    ldr     r2, [r0, #4]         ; Anw-20
75
    
76
    adds    r3, r1, r2           ; Anw-21
77
    
78
    ; ---------------------------------------------
79
    ldr     r0,=MeinNumFeld+8    ; Anw-22
80
    ldr     r1, [r0]             ; Anw-23
81
    ldr     r2, [r0, #4]         ; Anw-24
82
    
83
    adds    r3, r1, r2           ; Anw-25
84
    
85
    ; ---------------------------------------------    
86
    ldr     r0,=MeinNumFeld+16   ; Anw-26
87
    ldr     r1, [r0]             ; Anw-27
88
    ldr     r2, [r0, #4]         ; Anw-28
89
    
90
    adds    r3, r1, r2           ; Anw-29            
91
                        
92
              
93
; ------------------------------------------------------------------------------------------
94
; Indirekte Adressierungsarten mit update
95
; ------------------------------------------------------------------------------------------
96

97
    ldr     r0,=MeinTextFeld     ; Anw-30
98
    ldrb    r1, [r0, #1]!        ; Anw-31
99
    ldrb    r1, [r0, #1]!        ; Anw-32
100

101
    ldr     r0,=MeinWordFeld     ; Anw-33
102
    ldr     r2, [r0], #4         ; Anw-34
103
    ldr     r2, [r0], #4         ; Anw-35
104

105

106

107
    
108

109
    
110
forever  b    forever      ; nowhere to retun if main ends    
111
  ENDP
112
  
113
  ALIGN 4
114
  END

Der spuckt aber folgende Fehler:
1
erstes projekt.axf: Warning: L6665W: Neither Lib$$Request$$armlib Lib$$Request$$cpplib defined, not searching ARM libraries.
2

3
erstes projekt.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.

Könnt ihr mir vielleicht weiterhelfen ?
OP #3644188
Lesenswert?

erstmal danke für deine Hilfe. Ich habe beide main geändert und die 
Linker einstellung auch.

Aber jetzt kommt der Fehler
1
erstes projekt.axf: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.
2
erstes projekt.axf: Warning: L6320W: Ignoring --first command. Cannot find argument '__Vectors'.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren