как интерпретировать ошибки?
-
-
28.04.2023 #76293
Николай
Ключникgoreprogrammist 28 апр 2023, 22:47во-первых, прикольно было увидеть, что этот раздел еще живее всех живых (хотя в активных темах оно как-то теряется)
портирую тут одну штуку под mega8aCompiling: timer1ovf_isr.c
/usr/local/bin/avr-gcc -c -mmcu=atmega8a -I. -gstabs -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=Builds/timer1ovf_isr.lst -std=gnu99 -gstabs -gstrict-dwarf /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c -o Builds/timer1ovf_isr.o
In file included from /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/config.h:38,
from /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:36:
/usr/local/Cellar/avr-gcc@9/9.3.0_3/avr/include/avr/iom8a.h:42:4: error: #error Include <,avr/io.h>, instead of this file.
42 | # error Include <,avr/io.h>, instead of this file.
| ^
/Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:54: warning: ignoring #pragma optimize -Wunknown-pragmas
54 | #pragma optimize=z 2 // Force no optimization for this ISR.
|
/Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:55: warning: ignoring #pragma vector -Wunknown-pragmas
55 | #pragma vector= TIMER1_OVF_vect
|
/Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:56:12: error: expected ‘,’ before ‘void’
56 | __interrupt void TIMER1_Overflow_ISR (void){
| ^
| ,
make: *** Builds/timer1ovf_isr.o Error 1видимо, код из какой-то другой среды. собираю через avr-gcc, ну и вот такая ругань.
для начала не ясно, где, вместо какого файла и почему нужно инклюдить avr/io.h
почему игнорируются эти строки про оптимизацию и почему ему нужна точка с запятой перед войдом (тоже игнорирует __interrupt?)goreprogrammist 28 апр 2023, 23:11допустим, от той ругани я избавился (не уверен, что правильно) – поменял с инклюда iom8a.h на io.h
прагмы поудалял, __interrupt тоже
теперь интереснее:
/usr/local/opt/avr-binutils/bin/avr-ld: Builds/timer1ovf_isr.o: in function `TIMER1_Overflow_ISR’:
/Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:62: undefined reference to `l_sch_tick’
при этом у меня есть в этом файле инклюд на другой файл, где есть прототип этой функции (ну и реализация в соответствующем .c файле)
кстати, файлы .dep, .ewd и .ewp – это что за среда вообще?COKPOWEHEU 28 апр 2023, 23:14для начала не ясно, где, вместо какого файла и почему нужно инклюдить avr/io.hОн же написал, что ошибка в файле /usr/local/Cellar/avr-gcc@9/9.3.0_3/avr/include/avr/iom8a.h
Вот вместо него и нужен io.h/Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:54: warning: ignoring #pragma optimizeОптимизации задаются ключом -O (например, -O0, -O1, -Os, -Ofast) в мейкфайле
/Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:55: warning: ignoring #pragma vectorНе знаю где используется вариант с прагмами, просто пишите ISR(TIMER1_OVF_vect){…} вместо __interrupt void TIMER1_Overflow_ISR (void){
Еще не забудьте, что в том же мейкфайле задается частота камня -FD_CPU=1000000UL (НЕ В ИСХОДНИКАХ!) или что-то в этом роде и тип контроллера –mcu=atmega8goreprogrammist 29 апр 2023, 01:05про ISR – спасибо, напомнили)
про оптимизацию – в мейкфайле она для всего проекта, а тут – для отдельного обработчика.
пытаюсь понять, как его заставить собирать все .c файлы (вроде бы в makefile указал директории
EXTRAINCDIRS = lin_uart TIMER UART
но в выводе один фиг для других файлов, которые не в корне проекта, ничего не собирается, ну и ругань идет от линковщика, как я понимаюgoreprogrammist 29 апр 2023, 01:15тэк, добавил в мейкфайл в строку SRC через пробел директорию и вроде пошло дело.
теперь другая напасть: в заинклюженном файле строки* @fn _lin_it_uart_rx
* @brief This interrupt function manages the State machine of the LIN.
* The receive interrrupt is used to be able to check at each byte
* if the byte monitored (received) is the same than byte sent.
**/
__interrupt void _lin_it_uart_rx (void) {
switch (_lin_state) {
/** STATE_CHECK_BREAK: This state is used for both SLAVE and MASTER
* configuration.но разве такой вектор существует? какое-то пользовательское прерывание? первый раз такое вижу. хз как тут быть.
TrD 29 апр 2023, 07:48Эти файлы от IAR.goreprogrammist 29 апр 2023, 19:29хз как тут быть с makefile.
он не хочет собирать файлы, которые находятся в подпапках.
я добавил их явным образом
SRC = $(wildcard *.c) lin_uart/lin_drv_usart.c lin_uart/runtime_calibration_lib.c lin_uart/lin_lib.c lin_uart/slave_lin.c
но не особо помогло. теперь оно ругается вот так:
<,built-in>,: fatal error: opening dependency file Builds/.dep/lin_uart/slave_lin.d: No such file or directory
-
- Вы должны войти в систему, чтобы ответить в этой теме.