|
Nios II 7.1 IDE. Функции из HAL., Вопросы... |
|
|
|
Nov 8 2007, 11:39
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Цитата(RHnd @ Oct 29 2007, 19:19)  Сейчас не могу проверить, но мне кажется, что подключать надо.... Тема не раскрыта, вопросы остались. Альтера рекомендует функции и макросы из своих библиотек HAL. Прекрасно! Однако, механизм работы с HAL описан слабо, а жаль. Альтера советует писать программы, стартуя с шаблонов типа "Hello world small", с последующим их развитием. Допустим, что в проект еще вводится таймер, как его инициализировать, сделать с ним что-то с помощью функций из HAL, как эти HAL библиотеки подключить, как будет выглядеть простейшая работающая программа в целом с этими инклудами (как выглядят пути)? Неужели никто этот HAL еще не освоил?
|
|
|
|
|
Nov 8 2007, 13:51
|

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

|
Цитата(Волощенко @ Nov 8 2007, 20:39)  Тема не раскрыта, вопросы остались. Альтера рекомендует функции и макросы из своих библиотек HAL. Прекрасно! Однако, механизм работы с HAL описан слабо, а жаль. Альтера советует писать программы, стартуя с шаблонов типа "Hello world small", с последующим их развитием. Допустим, что в проект еще вводится таймер, как его инициализировать, сделать с ним что-то с помощью функций из HAL, как эти HAL библиотеки подключить, как будет выглядеть простейшая работающая программа в целом с этими инклудами (как выглядят пути)? Неужели никто этот HAL еще не освоил? вот выдрал заголовки из проекта Код #include <stdio.h> #include <unistd.h> #include <io.h> #include <sys/alt_irq.h>
#include "alt_types.h" #include "altera_avalon_dm9000.h"//my component and HAL #include "altera_avalon_pio_regs.h"//
#include "system.h" #include "socrat.h" подключаются Халы "сами"  когда новый компонент добавляете как использовать хал...берёте и используете  подробности в хедерах самого хала See the Nios II Software Developer’s Handbook for details on using the system clock and timestamp features that use these drivers. The Nios II Embedded Design Suite (EDS) also provides several example designs that use the timer core.
--------------------
Cogito ergo sum
|
|
|
|
|
Nov 9 2007, 10:21
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Цитата(Postoroniy_V @ Nov 8 2007, 17:51)  подключаются Халы "сами"  когда новый компонент добавляете как использовать хал...берёте и используете  подробности в хедерах самого хала Уважаемый, Postoroniy_V! Мой вопрос был конкретный, и я ожидал пример. В "Nios II Software Developer’s Handbook" прямых ответов на свои изыскания я не нашел, т.е. я пытаюсь на основе сведений из n2sw_nii5v2.pdf что-то сделать в части HAL, но при работе в среде Nios II 7.1 IDE постоянно натыкаюсь на errors. Еще раз про мои вопросы: 1. Вот простейшая работающая программа Hello world small: #include "sys/alt_stdio.h" int main() { alt_putstr("Hello from Nios II!\n"); while (1); return 0; } Я пытаюсь работаю с NiosII, в котором на SOPC задана конфигурация: cpu, jtag_uart, onchip_mem и timer. 2. Есть файл в C:\altera\71\ip\sopc_builder_ip\altera_avalon_timer\HAL\src\altera_avalon_timer_ts.c, в котором есть, к примеру, две интересующие меня функции: int alt_timestamp_start(void); alt_u32 alt_timestamp(void); 3. Предполагаю, что это функции из HAL, и хочу вставить их в программу Hello world small, что бы периодически выводит состояние таймера через stdio. 4. Как будет выглядеть работающая программа с этими функциями? Т.е. хотел бы видеть ее текст и немного разъяснений. Надеюсь, что на этом примере смогу разобраться со своими ошибками. Спасибо за ответы.
|
|
|
|
|
Nov 9 2007, 10:59
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
to id_gene Спасибо, за дополнительную информацию, буду разбираться, а пока: Конфигурация timer взята по умолчанию и такая: Period: 1 us Hardware options: Presents: Customs Registers: Writable period + Readable snapshot + Start/Stop control bits + Пример из n2sw_nii5v2.pdf (стр.250, 251) не компилится, ошибки. Да, еще. В http://electronix.ru/forum/index.php?showt...37321&st=15 в сообщении номер 27, сходная задача решена включением прямого описания функций int alt_timestamp_start(void) и alt_u32 alt_timestamp(void) в тело основной программы. Почему я не могу подключить их (функции) прямо из библиотеки HAL через инклуды?
Сообщение отредактировал Волощенко - Nov 9 2007, 11:06
|
|
|
|
|
Nov 9 2007, 18:52
|
Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 18-08-05
Пользователь №: 7 750

|
ВолощенкоЕсли Вы хотите использовать timestamp таймер, то нужно написать строчку: Код #include "sys/alt_timestamp.h" Никаких си файлов инклюдить не надо.
|
|
|
|
|
Nov 9 2007, 21:02
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Цитата(popeye @ Nov 10 2007, 00:12)  Может это глупый вопрос, а Вы код для своей alt_timestamp_start создали?  Функция с прототипом extern int alt_timestamp_start (void); описана в файле: C:\altera\71\ip\sopc_builder_ip\altera_avalon_timer\HAL\src\altera_avalon_timer_ts.c .... и является принадлежностью HAL-системы, создавать ее уже не надо, а только использовать. Но в этом и вопрос топика, как это правильно сделать.
|
|
|
|
|
Nov 12 2007, 01:50
|

МедвеД Инженер 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. компилил тот же исходник что и у Вас. Возможно что Вы не обратили внимания на строчки 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 надеюсь теперь у Вас всё получится
--------------------
Cogito ergo sum
|
|
|
|
|
Nov 12 2007, 11:28
|
Местный
  
Группа: Свой
Сообщений: 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.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|