How do i resolve this error? error #10056: symbol "_c_int00" redefined (EK-TM4C123GXL)

0

I'm writing code in assembly and i have a big trouble solving the error below. Tried to find solutions all over the internet, but didn't managed to find a suitable solution. i'm using CSS 8.3.1.00004 and the EK-TM4C123GXL LauchPad. The code itself is scissored from a larger one that i wrote, i wanted to test a simple servo motor here (i also got the same error for the larger one), so this code have some unnecessary codes, but those shouldn't interfere. Also the code may not look good as i'm not used to coding, i need to resolve this problem for thesis.

So please help me, thank you!

Here's the build/error message:

**** Build of configuration Release for project Szervo ****

"C:\\ti\\ccsv8\\utils\\bin\\gmake" -k -j 4 all -O 

Building target: "Szervo.out"
Invoking: ARM Linker
"C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me -O2 --define=ccs="ccs" --define=PART_TM4C1231H6PM --gcc --diag_warning=225 --diag_wrap=off --display_error_number --abi=eabi -z -m"Szervo.map" --heap_size=0 --stack_size=0 -i"C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/lib" -i"C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/include" --reread_libs --diag_wrap=off --display_error_number --warn_sections --xml_link_info="Szervo_linkInfo.xml" -o "Szervo.out" "./main.obj" "./tm4c123gh6pm_startup_ccs.obj" "../tm4c123gh6pm.cmd"  -llibc.a 
<Linking>
error #10056: symbol "_c_int00" redefined: first defined in "./main.obj"; redefined in "C:\ti\ccsv8\tools\compiler\ti-cgt-arm_18.1.4.LTS\lib\rtsv7M4_T_le_v4SPD16_eabi.lib<boot_cortex_m.c.obj>"
error #10010: errors encountered during linking; "Szervo.out" not built

>> Compilation failure
makefile:142: recipe for target 'Szervo.out' failed
gmake[1]: *** [Szervo.out] Error 1
makefile:138: recipe for target 'all' failed
gmake: *** [all] Error 2

**** Build Finished ****

Here's the whole code for the test program i try running.

;=========================================================================================================
; Szervohajtas
; By Miklós Áron (2020.01.31.)
; Designed for Tiva Connected Launchpad (TM4C123GH6PMI)
;=========================================================================================================
; Description:
;=========================================================================================================

    .global RESET                       ; Define entry point
    .thumb                      ; use thumb, duh

    .text                       ; set memory location to flash
    .align 4                        ; align on 32-bit boundary

;------------------------------------------------------------------------------
;           Interrupt Vectors
;------------------------------------------------------------------------------

    .sect   ".reset"                        ; MSP430 RESET Vector
    .short  RESET
WDT_CTL_0       .field  0x40000008,32


RESET:  .asmfunc
    mov.w   SP, #0x0280               ; Initialize stackpointer (D0)
    ldr R1, WDT_CTL_0
    mov R0, #0x00000000
    LDR R0, [R1]
    B   _c_int00

    .endasmfunc

;------------------------------------------------------------------------------
;           Main code
;------------------------------------------------------------------------------

    .global _c_int00            ; makes main accessible from outside this file.
    .global init
    .thumb                                          ; use thumb, duh

    .text                                           ; set memory location to flash
    .align 4                                        ; align on 32-bit boundary

;=========================================================================================================
; Hardware Constants
;=========================================================================================================

GPIO_PORTB_DATA_ALL_R           .field  0x400053FC,32
GPIO_PORTB_DIR_R            .field  0x40005400,32
GPIO_PORTB_AFSEL_R          .field  0x40005420,32
GPIO_PORTB_DR8R_R               .field  0x40005508,32
GPIO_PORTB_PUR_R            .field  0x40005510,32
GPIO_PORTB_PDR_R            .field  0x40005514,32
GPIO_PORTB_DEN_R            .field  0x4000551C,32
GPIO_PORTB_LOCK_R           .field  0x40005520,32
GPIO_PORTB_CR_R             .field  0x40005524,32
GPIO_PORTB_AMSEL_R          .field  0x40005528,32
GPIO_PORTB_PCTL_R           .field  0x4000552C,32

GPIO_PORTC_DATA_ALL_R           .field  0x400063FC,32
GPIO_PORTC_DIR_R            .field  0x40006400,32
GPIO_PORTC_AFSEL_R          .field  0x40006420,32
GPIO_PORTC_DR8R_R               .field  0x40006508,32
GPIO_PORTC_PUR_R            .field  0x40006510,32
GPIO_PORTC_PDR_R            .field  0x40006514,32
GPIO_PORTC_DEN_R            .field  0x4000651C,32
GPIO_PORTC_LOCK_R           .field  0x40006520,32
GPIO_PORTC_CR_R             .field  0x40006524,32
GPIO_PORTC_AMSEL_R          .field  0x40006528,32
GPIO_PORTC_PCTL_R           .field  0x4000652C,32

GPIO_PORTD_DIR_R            .field  0x40007400,32
GPIO_PORTD_AFSEL_R          .field  0x40007420,32
GPIO_PORTD_PUR_R            .field  0x40007510,32
GPIO_PORTD_PDR_R            .field  0x40007514,32
GPIO_PORTD_DEN_R            .field  0x4000751C,32
GPIO_PORTD_LOCK_R           .field  0x40007520,32
GPIO_PORTD_CR_R             .field  0x40007524,32
GPIO_PORTD_AMSEL_R          .field  0x40007528,32
GPIO_PORTD_PCTL_R           .field  0x4000752C,32

GPIO_PORTE_DATA_ALL_R           .field  0x400243FC,32
GPIO_PORTE_DIR_R            .field  0x40024400,32
GPIO_PORTE_AFSEL_R          .field  0x40024420,32
GPIO_PORTE_PUR_R            .field  0x40024510,32
GPIO_PORTE_PDR_R            .field  0x40024514,32
GPIO_PORTE_DEN_R            .field  0x4002451C,32
GPIO_PORTE_LOCK_R           .field  0x40024520,32
GPIO_PORTE_CR_R             .field  0x40024524,32
GPIO_PORTE_AMSEL_R          .field  0x40024528,32
GPIO_PORTE_PCTL_R           .field  0x4002452C,32

GPIO_PORTF_DATA_ALL_R           .field  0x400253FC,32
GPIO_PORTF_DIR_R            .field  0x40025400,32
GPIO_PORTF_AFSEL_R          .field  0x40025420,32
GPIO_PORTF_PUR_R            .field  0x40025510,32
GPIO_PORTF_PDR_R            .field  0x40025514,32
GPIO_PORTF_DEN_R            .field  0x4002551C,32
GPIO_PORTF_LOCK_R           .field  0x40025520,32
GPIO_PORTF_CR_R             .field  0x40025524,32
GPIO_PORTF_AMSEL_R          .field  0x40025528,32
GPIO_PORTF_PCTL_R           .field  0x4002552C,32

GPIO_LOCK_KEY               .field  0x4C4F434B,32                     ;Unlocks the GPIO_CR register
SYSCTL_RCGCGPIO_R           .field  0x400FE608,32

RCC                 .field  0x400FE060,32
RCGC0               .field  0x400FE100,32
RCGC2               .field  0x400FE108,32
GPIOPCTL_B              .field  0x4000552C,32
PWM0CTL             .field  0x40028040,32
PWM0GENA                .field  0x40028060,32
PWM0GENB                .field  0x40028064,32
PWM1GENA                .field  0x400280A0,32
PWM1GENB                .field  0x400280A4,32
PWM0LOAD                .field  0x40028050,32
PWM1LOAD                .field  0x40028090,32
PWM0CMPA                .field  0x40028058,32
PWM0CMPB                .field  0x4002805C,32
PWM1CMPA                .field  0x40028098,32
PWM1CMPB                .field  0x4002809C,32
PWMENABLE               .field  0x40028008,32

ALT_IO_B    .field  0x44440000,32

PE0 .field  0x40024004,32
PE1 .field  0x40024008,32
PE2 .field  0x40024010,32
PE3 .field  0x40024020,32
PE4 .field  0x40024040,32
PE5 .field  0x40024080,32

PD0 .field  0x40007004,32
PD1 .field  0x40007008,32
PD2 .field  0x40007010,32
PD3 .field  0x40007020,32
PD6 .field  0x40007100,32
PD7 .field  0x40007200,32

PC4 .field  0x40006040,32
PC5 .field  0x40006080,32

;=========================================================================================================
; Custom Constants
;=========================================================================================================

XTCP    .field  0x20000000,32
YTCP    .field  0x20000004,32
ZTCP    .field  0x20000008,32
elojel  .field  0x2000000C,32   ;Az aktuális szubrutinhoz tartozó előjelet jegyzi meg, szubrutinokon kivül nincs értelmezve.
tri0    .field  0x20000010,32
tri1    .field  0x20000014,32
tri2    .field  0x20000018,32
tri3    .field  0x2000001C,32
tri4    .field  0x20000020,32
tri5    .field  0x20000024,32
tri6    .field  0x20000028,32
tri7    .field  0x2000002C,32
pszi    .field  0x20000030,32
theta   .field  0x20000034,32
fi  .field  0x20000038,32
XCS .field  0x2000003C,32
YCS .field  0x20000040,32
ZCS .field  0x20000044,32

L0hossz .field  0x20000060,32
L1hossz .field  0x20000064,32
L2hossz .field  0x20000068,32
L3hossz .field  0x2000006C,32
Rhossz  .field  0x20000070,32
Lhossz  .field  0x20000074,32
epszilon    .field  0x20000078,32
delta   .field  0x2000007C,32
lx  .field  0x20000080,32
ly  .field  0x20000084,32
lz  .field  0x20000088,32
mx  .field  0x2000008C,32
my  .field  0x20000090,32
mz  .field  0x20000094,32
nx  .field  0x20000098,32
ny  .field  0x2000009C,32
nz  .field  0x20000100,32
magassag    .field  0x20000104,32
ahossz  .field  0x20000108,32
;=========================================================================================================
; Program Code
;=========================================================================================================

_c_int00:   .asmfunc
    B   init

    .endasmfunc

    .global  main
    .thumb                                          ; use thumb, duh

    .text                                           ; set memory location to flash
    .retain
    .retainrefs
    .align 4                                        ; align on 32-bit boundary

;------------main------------
main:
    LDR R1, PD0 ;pointer to PD0
    LDR R2, [R1]    ;read just PD0
    NOP
    ADD R3, R2              ;figyelőjel
    CMP R2, #0
    ITTTTT  EQ
    LDREQ   R1, pszi            ;z tengely körüli forgatás
    LDREQ   R2, [R1]
    MOVEQ   R9, #64             ;16bit törtrésznél 1/1024 radiánt jelent, ami megközelítőleg 1/17,9 fok
    ADDEQ   R2, R9
    STREQ   R2, [R1]

    LDR R1, PD1 ;pointer to PD1
    LDR R4, [R1]    ;read just PD1
    NOP
    ADD R3, R4              ;figyelőjel
    CMP R4, #0
    ITTTTT  EQ
    LDREQ   R1, pszi            ;z tengely körüli forgatás
    LDREQ   R2, [R1]
    MOVEQ   R9, #64             ;16bit törtrésznél 1/1024 radiánt jelent, ami megközelítőleg 1/17,9 fok
    SUBEQ   R2, R9
    STREQ   R2, [R1]


;------------VEZERLES------------
;Meghatározza a PWM kitöltési tényezőjét a csuklók helyzetéből. Feltételezem, hogy az összes szög 0-180. (q1-q6)
;VAGYIS GONDOLD ÁT!!!
;Bemenet: nincs
;Kimenet: nincs
;A következőket módosítja: ?
VEZERLES:
    MOV R2, #36408
    MOV R6, #10
    MUL R2, R6
    LDR R1, pszi
    LDR R3, [R1]
    SMULL   R4, R5, R3, R2
    ADD R5, #1000
    LDR R1, PWM0CMPA
    STR R5, [R1]
    NOP
    NOP


    B   main

;------------Init------------
init:
    BL  All_Port_Run
    BL  PortB_Init
    BL  PortD_Init
    BL  PortE_Init
    BL  PortF_Init
    BL  PWM_init

    B   main

;------------All_Port_Run------------
;Aktíválja az B, D, E és F GPIO portok időzítőjét (timer)
;Bemenet: nincs
;Kimenet: nincs
;A következőket módosítja: R0, R1
All_Port_Run:
    LDR R1, SYSCTL_RCGCGPIO_R   ;1) activate clock for Port B, D, E és F
    LDR R0, [R1]
    ORR R0, R0, #0x3A   ;set bit 1, 3, 4 és 5 to turn on clock
    STR R0, [R1]
    NOP
    NOP ;allow time for clock to finish
    BX  LR

;------------PortB_Init------------
;Az B GPIO port inicializálása kimenetként, előtét
;ellenállás nélkül.
;Bemenet: nincs
;Kimenet: nincs
;A következőket modosítja: R0, R1
PortB_Init:
    LDR R1, GPIO_PORTB_LOCK_R   ;2) unlock the lock register
    LDR R0, GPIO_LOCK_KEY       ;unlock GPIO Port B Commit Register
    STR R0, [R1]
    LDR R1, GPIO_PORTB_CR_R     ;enable commit for Port B
    MOV R0, #0xFF           ;1 means allow access
    STR R0, [R1]
    LDR R1, GPIO_PORTB_AMSEL_R  ;3) disable analog functionality
    MOV R0, #0          ;0 means analog is off
    STR R0, [R1]
    LDR R1, GPIO_PORTB_PCTL_R   ;4) configure as GPIO
    MOV R0, #0x00000000     ;0 means configure Port B as GPIO
    STR R0, [R1]
    LDR R1, GPIO_PORTB_DIR_R    ;5) set direction register
    MOV R0, #0xFF           ;portB APB 0-7: output
    STR R0, [R1]
    LDR R1, GPIO_PORTB_AFSEL_R  ;6) regular port function for 0-3 and alternate function for 4-7
    MOV R0, #0xF0           ;0 means disable alternate function
    STR R0, [R1]
    LDR R1, GPIO_PORTB_PUR_R    ;no pull-up resistors for Port B
    MOV R0, #0x00           ;disable weak pull-up on Port B
    STR R0, [R1]
    LDR R1, GPIO_PORTB_PDR_R    ;no pull-down resistors for Port B
    MOV R0, #0x00           ;disable weak pull-down on Port B
    STR R0, [R1]
    LDR R1, GPIO_PORTB_DEN_R    ;7) enable Port B digital port
    MOV R0, #0xFF           ;1 means enable digital I/O
    STR R0, [R1]
    BX  LR

;------------PortD_Init------------
;A D GPIO port 0-3, 6-7 bitjének inicializálása kimenetként,
;7. bit pedig bemenetként, előtét ellenállás a port 7. bitjén.
;Bemenet: nincs
;Kimenet: nincs
;A következőket modosítja: R0, R1
PortD_Init:
    LDR R1, GPIO_PORTD_LOCK_R   ;2) unlock the lock register
    LDR R0, GPIO_LOCK_KEY   ;unlock GPIO Port D Commit Register
    STR R0, [R1]
    LDR R1, GPIO_PORTD_CR_R ;enable commit for Port D
    MOV R0, #0xFF           ;1 means allow access
    STR R0, [R1]
    LDR R1, GPIO_PORTD_AMSEL_R  ;3) disable analog functionality
    MOV R0, #0          ;0 means analog is off
    STR R0, [R1]
    LDR R1, GPIO_PORTD_PCTL_R   ;4) configure as GPIO
    MOV R0, #0x00000000     ;0 means configure Port D as GPIO
    STR R0, [R1]
    LDR R1, GPIO_PORTD_DIR_R    ;5) set direction register
    MOV R0, #0xFF           ;portC APB 0-7: output
    STR R0, [R1]
    LDR R1, GPIO_PORTD_AFSEL_R  ;6) regular port function
    MOV R0, #0          ;0 means disable alternate function
    STR R0, [R1]
    LDR R1, GPIO_PORTD_PUR_R    ;no pull-up resistors for Port D
    MOV R0, #0x00           ;disable weak pull-up on Port D
    STR R0, [R1]
    LDR R1, GPIO_PORTD_PDR_R    ;no pull-down resistors for Port D
    MOV R0, #0x00           ;disable weak pull-down on Port D
    STR R0, [R1]
    LDR R1, GPIO_PORTD_DEN_R    ;7) enable Port A digital port
    MOV R0, #0xFF           ;1 means enable digital I/O
    STR R0, [R1]
    BX  LR

;------------PortE_Init------------
;Az E GPIO port inicializálása bemenetként, előtét
;ellenállás a port 0-5. bitjein.
;Bemenet: nincs
;Kimenet: nincs
;A következőket modosítja: R0, R1
PortE_Init:
    LDR R1, GPIO_PORTE_LOCK_R   ;2) unlock the lock register
    LDR R0, GPIO_LOCK_KEY   ;unlock GPIO Port E Commit Register
    STR R0, [R1]
    LDR R1, GPIO_PORTE_CR_R ;enable commit for Port E
    MOV R0, #0xFF           ;1 means allow access
    STR R0, [R1]
    LDR R1, GPIO_PORTE_AMSEL_R  ;3) disable analog functionality
    MOV R0, #0          ;0 means analog is off
    STR R0, [R1]
    LDR R1, GPIO_PORTE_PCTL_R   ;4) configure as GPIO
    MOV R0, #0x00000000     ;0 means configure Port E as GPIO
    STR R0, [R1]
    LDR R1, GPIO_PORTE_DIR_R    ;5) set direction register
    MOV R0, #0x00           ;portE APB 0-5: input (input is default)
    STR R0, [R1]
    LDR R1, GPIO_PORTE_AFSEL_R  ;6) regular port function
    MOV R0, #0          ;0 means disable alternate function
    STR R0, [R1]
    LDR R1, GPIO_PORTE_PUR_R    ;pull-up resistors for Port E bit 0-5
    MOV R0, #0xFF           ;enable weak pull-up on Port E bit 0-5
    STR R0, [R1]
    LDR R1, GPIO_PORTE_DEN_R    ;7) enable Port E digital port
    MOV R0, #0xFF           ;1 means enable digital I/O
    STR R0, [R1]
    BX  LR

;------------PortF_Init------------
;Az F GPIO port inicializálása kimenetként, előtét
;ellenállás nélkül.
;Bemenet: nincs
;Kimenet: nincs
;A következőket modosítja: R0, R1
PortF_Init:
    LDR R1, GPIO_PORTF_LOCK_R   ;2) unlock the lock register
    LDR R0, GPIO_LOCK_KEY   ;unlock GPIO Port F Commit Register
    STR R0, [R1]
    LDR R1, GPIO_PORTF_CR_R ;enable commit for Port F
    MOV R0, #0xFF           ;1 means allow access
    STR R0, [R1]
    LDR R1, GPIO_PORTF_AMSEL_R  ;3) disable analog functionality
    MOV R0, #0          ;0 means analog is off
    STR R0, [R1]
    LDR R1, GPIO_PORTF_PCTL_R   ;4) configure as GPIO
    MOV R0, #0x00000000     ;0 means configure Port F as GPIO
    STR R0, [R1]
    LDR R1, GPIO_PORTF_DIR_R    ;5) set direction register
    MOV R0, #0xFF           ;portF APB 0-7: output
    STR R0, [R1]
    LDR R1, GPIO_PORTF_AFSEL_R  ;6) alternate port function for 0-3 and regular function for 4
    MOV R0, #0x0F           ;0 means disable alternate function
    STR R0, [R1]
    LDR R1, GPIO_PORTF_PUR_R    ;no pull-up resistors for Port F
    MOV R0, #0x00           ;disable weak pull-up on Port F
    STR R0, [R1]
    LDR R1, GPIO_PORTF_PDR_R    ;no pull-down resistors for Port F
    MOV R0, #0x00           ;disable weak pull-down on Port F
    STR R0, [R1]
    LDR R1, GPIO_PORTF_DEN_R    ;7) enable Port F digital port
    MOV R0, #0xFF           ;1 means enable digital I/O
    STR R0, [R1]
    BX  LR

;------------PWM_init------------
;M0PWM0 (portB 6. bit), M0PWM1 (portB 7. bit), M0PWM2 (portB 4. bit)
;és M0PWM3 (portB 5. bit) inicializációja.
;Bemenet: nincs
;Kimenet: nincs
;A következőket modosítja: R0, R1
PWM_init:
    LDR R1, RCGC0
    MOV R0, #0x00100000 ;pwm órajel engedélyezése
    STR R0, [R1]

    LDR R1, RCGC2
    MOV R0, #0x00000002 ;pwm órajel engedélyezése a Bportra
    STR R0, [R1]

    LDR R1, GPIOPCTL_B
    LDR R0, ALT_IO_B    ;Alternatív funkció kiválasztása a B port 4-7 lábain
    STR R0, [R1]

    LDR R1, RCC     ;(Az alap órajel 80MHz)
    MOV R0, #0x001A0000 ;PWM osztás engedélyezés és 32-es előosztás (2,5MHz)
    STR R0, [R1]

    LDR R1, PWM0CTL
    MOV R0, #0x00000000 ;deaktiválja a PWN-t
    STR R0, [R1]

    LDR R1, PWM0GENA    ;M0PWM0
    MOV R0, #0x000000C8 ;PWM jel kialakítása feszültség szintek meghatározásával
    STR R0, [R1]

    LDR R1, PWM0GENB    ;M0PWM1
    MOV R0, #0x00000C08 ;PWM jel kialakítása feszültség szintek meghatározásával
    STR R0, [R1]

    LDR R1, PWM1GENA    ;M0PWM2
    MOV R0, #0x000000C8 ;PWM jel kialakítása feszültség szintek meghatározásával
    STR R0, [R1]

    LDR R1, PWM1GENB    ;M0PWM3
    MOV R0, #0x00000C08 ;PWM jel kialakítása feszültség szintek meghatározásával
    STR R0, [R1]

    LDR R1, PWM0LOAD
    MOV R0, #0x0000C350 ;50000 -> 50Hz (25000:61A8)
    STR R0, [R1]

    LDR R1, PWM1LOAD
    MOV R0, #0x0000C350 ;50000 -> 50Hz (25000:61A8)
    STR R0, [R1]

    LDR R1, PWM0CMPA
    MOV R0, #1633       ;pwm00 kitöltési tényezője (1000-2000)
    STR R0, [R1]

    LDR R1, PWM0CMPB
    MOV R0, #1133       ;pwm01 kitöltési tényezője (1000-2000)
    STR R0, [R1]

    LDR R1, PWM1CMPA
    MOV R0, #1000       ;pwm02 kitöltési tényezője (1000-2000)
    STR R0, [R1]

    LDR R1, PWM1CMPB
    MOV R0, #1000       ;pwm03 kitöltési tényezője (1000-2000)
    STR R0, [R1]

    LDR R1, PWM0CTL
    MOV R0, #0x00000001 ;aktiválja a PWN-t
    STR R0, [R1]

    LDR R1, PWMENABLE
    MOV R0, #0x0F       ;Engedélyezi az M0PWM0-M0PWM3 PWM jelek kiírását a portokra
    STR R0, [R1]

    BX  LR



assembly
asked on Stack Overflow May 13, 2020 by Áron

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0