Подключение файлов Atmel Studio(undefined reference to)

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

Использую atmel studio 6.2, нужно подключить файлы (asmroutine.h, asmroutine.s). Файлы добавил через (add->existing item). При сборки f7, выдает ошибку (undefined reference to). При этом, вместо asmroutine.s поставить asmroutine.cpp, ошибки нет. В чем дело?

Код (asmroutine.h):
#ifndef ASMROUTINE_H_
#define ASMROUTINE_H_
//Общие определения
#ifdef __ASSEMBLER__
//Определения только для ассемблера
#endif
#ifndef __ASSEMBLER__
//Определения только для С
extern char afun(char); //добавление, удаление extern, inline не помогает
#endif
#endif /* ASMROUTINE_H_ */

Код (asmroutine.s):
#include "asmroutine.h"
.global afun
afun:
ldi R30,R24
add R24,R30
ret

Основной код:
#include <avr/io.h>
#include <avr/interrupt.h>
#include "asmroutine.h"

volatile char m=5,d;

ISR(TIMER0_OVF_vect) {d=afun(m);}

int main(void)
{
TCCR0=(1<<CS00);TIMSK=(1<<TOIE0);sei();
while(1){}
}
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение ARV »

avr-gcc различает заглавные и прописные буквы в расширении файлов, причем для ассемблера .s и .S компилируются по-разному. к сожалению, сейчас не могу вспомнить, но какой-то вариант компилируется без поддержки макросов в стиле Си. рекомендую попробовать переименовать исходник - поменять регистр расширения ассемблерного файла.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

рекомендую попробовать переименовать исходник - поменять регистр расширения ассемблерного файла.
Попробовал, не помогает.
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

Добавил
extern "C"
{
char afun(char);
}
Проект собрался без ошибок, только пока не проверил. Не уверен пока, что все норм, т. к. понятия не имею зачем нужен extern "C".
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение ARV »

блин, вы бы сразу написали точное описание ошибки...
KaiTheKat писал(а):ldi R30,R24
здесь ошибка! R24 должна быть ранее определенной константой, а не регистром! т.е. вот так было бы правильно:
ldi R30, 24
и ошибка у вас именно на эту строку и эту "неопределенную ссылку" R24
undefined reference to `r24'
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

Да там тоже была ошибка, но компилятор на него указал только что, когда проект уже собрался. До этого он указывал на функцию afun. Я пробовал и пустую функцию использовать, таже ошибка была

afun:

ret

А вот после добавления extern "C" исчезла именно ошибка undefined reference to afun
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение ARV »

не верю!

я собрал ваш проект в первоначальном виде после замены R24 на 24, прочее - 1 в 1 так, как вы его разместили в первом посте. т.е. в первоначальном виде других ошибок не было.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

Я тоже в это не мог поверить. Походу проблема редкая. Может у меня что-то в atmel studio или visual studio что-то не так настроено. Вот скрины, в одном функция внутри exturn "C", в другом отдельно. Ошибки разные.
Изображение
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение ARV »

ошибки разные, но где вариант для вашего первоначального кода?
KaiTheKat писал(а):Код (asmroutine.h):
#ifndef ASMROUTINE_H_
#define ASMROUTINE_H_
//Общие определения
#ifdef __ASSEMBLER__
//Определения только для ассемблера
#endif
#ifndef __ASSEMBLER__
//Определения только для С
extern char afun(char); //добавление, удаление extern, inline не помогает
#endif
#endif /* ASMROUTINE_H_ */
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение ARV »

а почему у вас main.cpp ? если вы собрались на С++ писать - это правильно, и тогда ваша "добавка" необходима, ибо С++ не понимает ссылки в стиле простого Си по умолчанию.

если пишите на Си, то и расширение файлам давайте правильное
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение KaiTheKat »

Понятно, спасибо. Пишу на C++
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Подключение файлов Atmel Studio(undefined reference to)

Сообщение ARV »

в вышеприведенном коде нет ни какого намёка на С++.

но вам виднее
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»