реклама на сайте
подробности

 
 
> Nios II 7.1 IDE. Функции из HAL., Вопросы...
Волощенко
сообщение Oct 29 2007, 13:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Есть желание применить функции из HAL. Вот программа, в ней вызывается функция alt_timestamp_start(), которая описана в altera_avalon_timer_ts.c.

#include "sys/alt_stdio.h"
//-----------------------------
#include "alt_types.h"
#include "system.h"
//-----------------------------
#include "altera_avalon_timer_regs.h" //for timer
#include "altera_avalon_timer_ts.c"
//-----------------------------
int main()
{alt_u32 a;
a=alt_timestamp_start();
alt_putstr("Hello from Nios II!\n");
printf("%08x, ", a);
while (1);
return 0;
}

Но при компиляции сообщается об ошибке: undefined reference to `alt_timestamp_start'.
Вопрос: Что в программе не так, и как правильно подключать функции и макросы из системной библиотеки, например, из hello_world_small_0_syslib\Device Drivers [Sopc Builder]\altera_avalon_timer\HAL\src
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
popeye
сообщение Nov 9 2007, 18:52
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 18-08-05
Пользователь №: 7 750



Волощенко

Если Вы хотите использовать timestamp таймер, то нужно написать строчку:

Код
#include "sys/alt_timestamp.h"


Никаких си файлов инклюдить не надо.
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Nov 9 2007, 19:49
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



к popeye, спасибо за ответ!
Однако, если вставить просто #include "sys/alt_timestamp.h" в текст Hello_world_small, а затем компилировать, то все будет нормально. Но если добавить в текст еще функцию extern int alt_timestamp_start (void); то будет выдано сообщение:
undefined reference to `alt_timestamp_start'

#include "sys/alt_stdio.h"
#include "sys/alt_timestamp.h"
int main()
{int t; t=alt_timestamp_start ();
alt_putstr("Hello from Nios II!\n");
while (1);
return 0;
}

То есть, надо еще что-то сделать... Я пока не знаю что...Надеюсь на солидарность Форума...
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Nov 12 2007, 01:50
Сообщение #4


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Волощенко @ Nov 10 2007, 04:49) *
к popeye, спасибо за ответ!
Однако, если вставить просто #include "sys/alt_timestamp.h" в текст Hello_world_small, а затем компилировать, то все будет нормально. Но если добавить в текст еще функцию extern int alt_timestamp_start (void); то будет выдано сообщение:
undefined reference to `alt_timestamp_start'

#include "sys/alt_stdio.h"
#include "sys/alt_timestamp.h"
int main()
{int t; t=alt_timestamp_start ();
alt_putstr("Hello from Nios II!\n");
while (1);
return 0;
}

То есть, надо еще что-то сделать... Я пока не знаю что...Надеюсь на солидарность Форума...

тоесть Вы утверждаете что прочитали таки главу про Timestamp driver в Nios II Software Developer’s Handbook? Если так тогда мне совершенно не ясно почему у Вас с ошибками компилится, а у меня без ошибок
Код
Creating libhello_world_0_syslib.a...
Compiling hello_world.c...
Linking hello_world_0.elf...
Info: (hello_world_0.elf) 2032 Bytes program size (code + initialized data).
Info:                     6160 Bytes free for stack + heap.

компилил тот же исходник что и у Вас. smile.gif
Возможно что Вы не обратили внимания на строчки
1) страница 6-12
The HAL-specific API functions for accessing timer devices are defined
in sys/alt_alarm.h and sys/alt_timestamp.h.

2)6-14
Timestamp Driver
Sometimes you want to measure time intervals with a degree of accuracy
greater than that provided by HAL system clock ticks. The HAL provides
high resolution timing functions using a timestamp driver. A timestamp
driver provides a monotonically increasing counter that you can sample
to obtain timing information. The HAL only supports one timestamp
driver in the system.
You specify a hardware timer peripheral as the timestamp device by
manipulating BSP settings
. The Altera-provided timestamp driver uses
the timer that you specify.

3) чтобы сделать 2 нужно в свойствах проекта (НИОС ИДЕ) ВЫБРАТЬ ТОТ ТАЙМЕР КОТОРЫЙ БУДЕТ У ВАС тем самым timestamp

надеюсь теперь у Вас всё получится smile.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Nov 12 2007, 11:28
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



to Postoroniy_V. Спасибо за ответы!
1. Пока у меня эта программа в Nios II 7.1 IDE не получается:
#include "sys/alt_stdio.h"
#include "sys/alt_timestamp.h"
int main()
{int t; t=alt_timestamp_start ();
alt_putstr("Hello from Nios II!\n");
while (1);
return 0;
}
2. Во вторник в Киеве будет семинар от Альтеры, попробую спросить там. Все что нужно для работы с Timestamp Driver, согласно и Quartus II Version 7.1 Handbook стр.14-6, я учел. А именно: The timer core may be used as a timestamp device if it meets the following conditions:
■ The timer has a writeable period register, as configured in SOPC Builder.
■ The timer is not selected as the system clock.
т.е. эти режимы заданы еще на этапе работы в SOPC (см.пост от Nov 9 2007, 14:59). Повторюсь там только : cpu, jtag_uart, onchip_mem и timer
3. Еще вопрос. В теле alt_timestamp.h", есть строка с #ifdef __cplusplus, как Вы ее обошли? Моя попытка вставить между двумя инклудами (см.текст проги), что-то типа #define __cplusplus 1, тоже не дало результата.

to id_gene. Спасибо за ответы!
Вы писали: "Добавлено: про инклуды: _подозреваю_, что область поиска файлов для инклуда (ключ gcc -include) ограничена по умолчанию только необходимыми вещами, чтобы не замусорить систему. Посмотрите, как это будет сделано через скрипты или правьте пути поиска в настройках компилятора."
Думаю, что, действительно, искать нужно здесь, но пока не разобрался.

to All
Может уже поднадоел кому, но, думаю, что тема заслуживает того, что бы с ней разобраться. Есть, конечно, обходные варианты, и их много. Но надо попробовать на этом маленьком примере научиться работать с HAL.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Nov 12 2007, 13:45
Сообщение #6


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Волощенко @ Nov 12 2007, 20:28) *
Может уже поднадоел кому, но, думаю, что тема заслуживает того, что бы с ней разобраться. Есть, конечно, обходные варианты, и их много. Но надо попробовать на этом маленьком примере научиться работать с HAL.

ну мне не надоело smile.gif повторять одно и тоже
То что Вы проделали манипуляции с таймером в сопц билдере никак не относится как этот таймер будет использоваться в софте! Тоесть - Вы должны указать в свойствах либы в ниос иде что у вас есть таймер- timer и вы его планируете использовать как stamptimer! именно как stamptimer! и ВСЁ!
никаких манипулций я с инклудами не делал!
после этого спокойно компилируте ваш тест...ДОЛЖНО ПОЛУЧИТСЯ!
если нет то - help.gif
выложу ваш-свой тестовый проект, который удачно компилируется завтра.
Удачи!


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Nov 12 2007, 16:20
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Цитата(Postoroniy_V @ Nov 12 2007, 17:45) *
...ДОЛЖНО ПОЛУЧИТСЯ!

Спасибо БОЛЬШОЕ, все получилось!
Вот итоговый текст
#include "sys/alt_stdio.h"
#define __cplusplus 1
#include "sys/alt_timestamp.h"
int main()
{int t; t=alt_timestamp_start ();
alt_putstr("Hello from Nios II!\n");
while (1);
return 0;
}
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Nov 12 2007, 22:48
Сообщение #8


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Волощенко @ Nov 13 2007, 01:20) *
Спасибо БОЛЬШОЕ, все получилось!
Вот итоговый текст
#include "sys/alt_stdio.h"
#define __cplusplus 1
#include "sys/alt_timestamp.h"
int main()
{int t; t=alt_timestamp_start ();
alt_putstr("Hello from Nios II!\n");
while (1);
return 0;
}

простите мне мою тупость smile.gif
но нахрена
Код
#define __cplusplus 1

нужен??? без него компилится всё очень замечательно
вот что у меня в свойствах системной либы установлено
Прикрепленное изображение


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Волощенко   Nios II 7.1 IDE. Функции из HAL.   Oct 29 2007, 13:30
- - RHnd   Сейчас не могу проверить, но мне кажется, что подк...   Oct 29 2007, 15:19
|- - Волощенко   Цитата(RHnd @ Oct 29 2007, 19:19) Сейчас ...   Nov 8 2007, 11:39
|- - Postoroniy_V   Цитата(Волощенко @ Nov 8 2007, 20:39) Тем...   Nov 8 2007, 13:51
|- - Волощенко   Цитата(Postoroniy_V @ Nov 8 2007, 17:51) ...   Nov 9 2007, 10:21
- - id_gene   С этой функцией не работал, но могу предположить с...   Nov 9 2007, 10:40
|- - Волощенко   to id_gene Спасибо, за дополнительную информацию,...   Nov 9 2007, 10:59
- - id_gene   Ошибки - это плохо. Про билдер я, похоже, потороп...   Nov 9 2007, 11:04
- - popeye   Может это глупый вопрос, а Вы код для своей alt_ti...   Nov 9 2007, 20:12
|- - Волощенко   Цитата(popeye @ Nov 10 2007, 00:12) Может...   Nov 9 2007, 21:02
- - Harbour   Если оригинальная f() описана как 'static inli...   Nov 10 2007, 05:56


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 22:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016