Файл сборки (.S) вызывает ошибки с помощью инструментария GNU ARM в Eclipse photon - PullRequest
0 голосов
/ 17 июня 2020

Файл сборки перенесен из синтаксиса ARM CC в синтаксис GNU. Ошибка при компиляции.

Среда: набор инструментов GNU arm для ARM7 в фотоне Eclipse. Требование: Перенос с keil ARM CC на набор инструментов GNU arm в eclipse.

Скомпилирован и собран правильно. Когда я добавил файл сборки iap_blue.S (прилагается), возникли ошибки компиляции (вставлено ниже).

//iap_blue.S
            .section .text,"x"
            .balign 4

.globl blue_execute
blue_execute:
        STMFD   SP!,{LR}               // Save Return Address
                ADD     R1,R0,#0x14            // R0 = &IAP.cmd, R1 = &IAP.stat
                ADR     LR,blue_exit           // Return Address
                LDR     R2,=0x7FFFFFF1         // IAP Entry (Thumb Mode)
                BX      R2                     // Execute IAP Command

blue_exit:
                LDMFD   SP!,{LR}               // Restore Return Address
                BX      LR                     // Return
                .end
12:18:38 **** Build of configuration Debug for project LEDblink ****
make all
Building file: ../LPC2468_startup.c
Invoking: GNU ARM Cross C Compiler
arm-none-eabi-gcc -mcpu=arm7tdmi-s -march=armv4t -marm -mthumb-interwork -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -g3 -include"E:\EclipseARM\workspace\LEDblink\iap_blue.S" -std=gnu11 -MMD -MP -MF"LPC2468_startup.d" -MT"LPC2468_startup.o" -c -o "LPC2468_startup.o" "../LPC2468_startup.c"
In file included from <command-line>:
E:\EclipseARM\workspace\LEDblink\iap_blue.S:1:13: error: expected identifier or '(' before '.' token
1 | .section .text,"x"
| ^
E:\EclipseARM\workspace\LEDblink\iap_blue.S:7:17: error: unknown type name 'ADD'
7 | ADD R1,R0,#0x14 // R0 = &IAP.cmd, R1 = &IAP.stat
| ^~~
E:\EclipseARM\workspace\LEDblink\iap_blue.S:7:31: error: stray '#' in program
7 | ADD R1,R0,#0x14 // R0 = &IAP.cmd, R1 = &IAP.stat
| ^
E:\EclipseARM\workspace\LEDblink\iap_blue.S:7:32: error: expected identifier or '(' before numeric constant
7 | ADD R1,R0,#0x14 // R0 = &IAP.cmd, R1 = &IAP.stat
| ^~~~
E:\EclipseARM\workspace\LEDblink\iap_blue.S:14:17: error: unknown type name 'BX'
14 | BX LR // Return
| ^~
E:\EclipseARM\workspace\LEDblink\iap_blue.S:15:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
15 | .end
| ^
In file included from c:\program files (x86)\gnu tools arm embedded\9 2019-q4-major\arm-none-eabi\include\stdint.h:14,
from c:\program files (x86)\gnu tools arm embedded\9 2019-q4-major\lib\gcc\arm-none-eabi\9.2.1\include\stdint.h:9,
from ../LPC2468_startup.c:1:
c:\program files (x86)\gnu tools arm embedded\9 2019-q4-major\arm-none-eabi\include\sys\_stdint.h:20:9: error: unknown type name '__int8_t'
20 | typedef __int8_t int8_t ;
| ^~~~~~~~
subdir.mk:31: recipe for target 'LPC2468_startup.o' failed
make: *** [LPC2468_startup.o] Error 1

1 Ответ

0 голосов
/ 18 июня 2020

Спасибо. Проблема решена.

Я хотел бы подробнее рассказать о том, в чем была ошибка, которую я делал, и как она решается. Это может быть полезно для других. Ошибка 1: я использовал .s вместо .S для файла сборки. Ошибка 2: Включенный файл .S в компилятор eclipse включает файлы как часть настроек проекта.

Решение: Проверено C / C ++ General -> Типы файлов, в которых .S указан как файл сборки. Я изменил .s на .S, ошибка 1. исправлена.

Несмотря на то, что я столкнулся с ошибками компиляции, которые я разместил здесь. Я не был уверен, есть ли проблема, связанная с eclipse, или проблема с моим файлом сборки, поскольку я перенес его на синтаксис GNU из синтаксиса ARM CC. Я создал свой собственный файл make и построил код с помощью командной строки, он успешно строится без каких-либо ошибок. Это означает, что возникла проблема с конфигурацией проекта eclipse.

Затем я понял, что у вас нет файла сборки в настройках компилятора. Если Вы уже включили его в проект. Уже одно это позволит правильно распознать и собрать файл. Это решило ошибку 2.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...