Hallo miteinander
Ich entwickle gerade auf einem TMS320F28388D von Texas Instruments. Auf
dem Chip befindet sich ein Arm Cortex Prozessor auf dem ich ein Teil
meines Projekts implementiere.
Seit gestern habe ich Probleme, meinen Code für den Cortex zu
compilieren. Ein Widerherstellen des Codes zu einem früheren commit hat
bisher nichts gebracht, es scheint ein Problem mit dem Linker zu geben.
Zusammenfassend sieht die Situation so aus:
1. Beim Compilieren kriege ich folgende Fehlermeldungen (s. auch
issue_1.png):
1 | Description Resource Path Location Type
|
2 | no source files, nothing to do ccard_tcp_interface C/C++ Problem
|
3 | Symbol 'Ethernet_receiveISR' could not be resolved main_tcp_interface_lwip.c /ccard_tcp_interface line 615 Semantic Error
|
4 | Symbol 'Ethernet_transmitISR' could not be resolved main_tcp_interface_lwip.c /ccard_tcp_interface line 614 Semantic Error
|
Die Symbole "Ethernet_receiveISR" und "Ethernet_transmitISR" sollten
aber in der library "driverlib_cm.lib" definiert sein, das kann ich mit
dem folgenden Kommando verifizieren:
1 | nm ~/ti/C2000Ware_3_04_00_00_Software/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib | grep Ethernet_rec
|
2 |
|
3 | 00000001 T Ethernet_receiveISR
|
4 | 00000001 T Ethernet_receivePacketCallback
|
5 |
|
6 | nm ~/ti/C2000Ware_3_04_00_00_Software/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib | grep Ethernet_tran
|
7 |
|
8 | 00000001 T Ethernet_transmitISR
|
In Eclipse habe ich die library und deren Pfad explizit für den Linker
angegeben, siehe auch "issue_2.png".
In der Build Konsole scheint der Fehler an folgender Stelle auzutreten:
1 | Building target: "enet_lwip_cm.out"
|
2 | Invoking: ARM Linker
|
3 | "/home/dvarx/ti/ccs1030/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=none -me -O0 --opt_for_speed=0 --define=_FLASH --define=ccs -g --diag_warning=225 --gen_func_subsections=on --abi=eabi --ual -n -z -m"enet_lwip_cm.map" --heap_size=0 --stack_size=2048 -i"/home/dvarx/ti/ccs1030/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS/lib" -i"/home/dvarx/ti/C2000Ware_3_04_00_00_Software/driverlib/f2838x/driverlib_cm/ccs/Debug" -i"/home/dvarx/ti/ccs1030/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS/include" -i"/home/dvarx/ti/ccs1030/ccs/tools/compiler" -i"/home/dvarx/ti/C2000Ware_3_04_00_00_Software/driverlib/f2838x/driverlib_cm/ccs/Debug" --reread_libs --warn_sections --xml_link_info="enet_lwip_cm_linkInfo.xml" --rom_model -o "enet_lwip_cm.out" "./comm_interface.obj" "./f2838xif.obj" "./fs.obj" "./httpd.obj" "./lwiplib.obj" "./main_tcp_interface_lwip.obj" "./pinout.obj" "./startup_ccs.obj" "./ustdlib.obj" "../2838x_flash_lnk_cm_lwip.cmd" -l"/home/dvarx/ti/C2000Ware_3_04_00_00_Software/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib" -l"/home/dvarx/ti/C2000Ware_3_04_00_00_Software/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib" -llibc.a
|
4 | >> ERROR: no source files, nothing to do
|
5 | Finished building target: "enet_lwip_cm.out"
|
Die Fehlermeldung des Linkers verstehe ich nicht. Der Linker muss ja an
sich keine source files kompilieren sondern eben nur linken, weshalb
beschwert er sich dann über fehlende source files?