|
NIOS II, RS232 |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 34)
|
Jul 2 2008, 13:18
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Men - скриптик ?? На сях ?? Тема думаю в этот. раздел Но если по сути: Если не охота лезть глубоко - getchar/putchar вроде в сях есть - их можно заюзать.. Если охота лезть глубоко - пишется свои ф-ции для приёма и передачи (если работали ранее на каких либо МК и писали под GCC-> WinAVR,WinARM - портировать не составить труда, главное с архитектурой разберитесь). Структурка проги прибл будет такова - есть интеррупт от уарта. Когда приходит байт вваливаемся в интерупт по приёму (там интерупт 1 на весб уарт , потому внутри интерупта надо битики смотерть - что собсно было причиной- приём или передача). записываем в массив и выставляем флаг - типа был приём и байт записан в обменник. НУ там сбрасываем флажок и выаливаемся из интерупта. В мэйне у нас цикл верится - ждём этого самого флага чтоб начать работать. Когда флаг выставился - делаем страшное дело с полученным байтом и отправляем назад. Тут можно по разному, но я б опять же заюзал интерупты - слал через них же. Вот собсно и всё..
|
|
|
|
|
Jul 3 2008, 07:32
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Men Специально для вас как начинающего ВОТВсё ж описано, лень было полезть посмотреть ? (Про квартус на додачу ) А самый простой пример на С - в шаблонах NIOSII IDE -
Цитата Hello World
называется..
|
|
|
|
|
Jul 3 2008, 07:40
|
Местный
  
Группа: Свой
Сообщений: 357
Регистрация: 6-01-07
Пользователь №: 24 139

|
Цитата(Men @ Jul 3 2008, 10:09)  Мне нужен простой пример работы с RS а не "можно printf например всякие юзать..."(Я начинающий!!!) Уровень таков лампочки зажигать только научился!!!  Если научились лампочки зажигать из НИОС, значит, как минимум должны были столкнуться с добавлением в SOPS Buildere параллельного порта. А еще узнали бы что никаких скриптов для этого добавления не нужно, а делается добавление тыканием на пункты меню и указанием параметров добавляемого блока в программе. Ну, и как минимум, простейшая программа должна быть написана. Иначе лампочки не зажглись бы. аналогично добавлению параллельного порта добавляется и последовательный, только выбираете другую закладку и задаете его параметры. А вообще, в качестве совета, если и Си и НИОС пока не знаете, научитесь сначала программированию на Си, хотя бы основам. Для этого можно использовать, например, старый добрый Turbo C 2.0, его легко можно найти в интернете. Потом, уже ориентируясь в программировании переходите к НИОС. Если же нужно просто получить готовое решение, не стоит маскировать его под желание разобраться, а четко сказать, что тема соответствует разделу "Предлагаю работу" и озвучить, сколько готовы заплатить за успешную сдачу зачета/экзамена/курсовой и т.д. где требуется показать программу.
|
|
|
|
|
Jul 3 2008, 09:01
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Men - хммм.. Та а что непонятного? пЫсЫ Если вы Цитата прошли эту тему с параллелиными портами То тогда при чём тут скрипты ????
|
|
|
|
|
Jul 3 2008, 11:31
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604

|
Цитата(Men @ Jul 3 2008, 11:53)  Господа я прошел эту тему с параллелиными портами и мне надо разобратся как работать с RS. SOPC вроде немного уже знаю. 1. По RS прочтите в n2cpu_nii51010.pdf. 2. Настройки скорости и по протоколу - при вводе в SOPC, и больше ничего не надо. 3. Начните с выдачи байта из Ниоса, для этого достаточно выполнить команду: IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, 0x55); 4. Когда примете в свой комп байт 0x55, то потом, можно поговорить и дальше...
|
|
|
|
|
Jul 3 2008, 12:20
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Цитата(608 @ Jul 3 2008, 15:31)  1. По RS прочтите в n2cpu_nii51010.pdf. 2. Настройки скорости и по протоколу - при вводе в SOPC, и больше ничего не надо. 3. Начните с выдачи байта из Ниоса, для этого достаточно выполнить команду: IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, 0x55); 4. Когда примете в свой комп байт 0x55, то потом, можно поговорить и дальше... из какого документа вы взяли эту комонду IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, 0x55);
|
|
|
|
|
Jul 3 2008, 12:32
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604

|
Цитата(Men @ Jul 3 2008, 15:20)  из какого документа вы взяли эту команду IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, 0x55); Для передачи через UART загружают в регистр TXDATA код, и выдача начинается автоматически. А это команда загрузки в данный регистр, а точнее макрос, предлагаемый в системном файле, который подключается через #include "system.h". В этом файле Вы и найдете данный макрос. Идеология Ниоса и его С/С++ замысловата, но разобраться можно (если отступать некуда).
|
|
|
|
|
Jul 3 2008, 12:55
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
Хм.. На сколько я знаю в "system.h" находятся определения адресов приоритеты прерываний, ну и такое всякое.. А вот если вы взглянёте на "alt_sys_init.c " - там вы найдёте прибл такое содержание: Код /* * device headers * */
#include "altera_avalon_uart.h"
/* * Allocate the device storage * */
ALTERA_AVALON_UART_INSTANCE( UART, uart );
/* * Initialise the devices * */
void alt_sys_init( void ) { ALTERA_AVALON_UART_INIT( UART, uart ); } инстансом мы создаём структуру типа UART и обзываем её uart, а в ините - мы инициализируем наше чЮдо - там прописано как раз регистрация прерывания про которое я говорил выше ну и другие всякие там настройки.. А на счёт Цитата IOWR_ALTERA_AVALON_UART_TXDATA посичите в паках альтеры, где у вас есть "altera_avalon_uart.h" - где то в айпи валятся должен - там как раз вы и найдёте все интересные файлики
|
|
|
|
|
Jul 4 2008, 05:34
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604

|
Цитата(vadimuzzz @ Jul 4 2008, 03:03)  макрос IOWR_ALTERA_AVALON_UART_TXDATA определен в "altera_avalon_uart_regs.h" "altera_avalon_uart.h" - это для HAL, удобно если с printf/scanf работать. "altera_avalon_uart_regs.h" - для работы с регистрами напрямую. Для Men Все правильно, я поторопился по поводу IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, 0x55); Подключайте к своей программе #include "system.h" #include "altera_avalon_uart_regs.h" в первом значение константы UART_BASE, что сгененрировано от SOPC, во втором макросы. Еще к ним добавить #include "alt_types.h"Теперь, если без прерываний, то нужно периодически, например через 1 мс, выполнять функцию приема и выдачи, в соответствии с заданными в начале топика условиями: void rs232 () { alt_u16 word; alt_u8 byte; word=IORD_ALTERA_AVALON_UART_STATUS(UART_BASE); if (word & ALTERA_AVALON_UART_STATUS_RRDY_MSK) {byte=IORD_ALTERA_AVALON_UART_RXDATA(UART_BASE); byte++; IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, byte); }; } Некоторые подобное делают без макросов, но можно и с ними. Удачи.
Сообщение отредактировал 608 - Jul 4 2008, 05:42
|
|
|
|
|
Jul 4 2008, 07:01
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Ну можем же когда захотим!!! Огромное спасибо буду пробовать!  Ну вот начинаю генерить и вот что получается Errors: - /cygdrive/d/altera/72sp2/nios2eds/components/altera_hal/HAL/inc/sys/alt_errno.h Unable to reach errno (at 0x00001024) from the global pointer (at 0x0000aad4) because the offset (-39600) is out of the allowed range, -32678 to 32767. - /cygdrive/d/altera/72sp2/nios2eds/components/altera_hal/HAL/src/alt_main.c undefined reference to `main' - /cygdrive/d/altera/72sp2/qdesigns/UART_nios/RS232/RS232_syslib/Debug/libRS232_syslib.a(alt_main.o) In function `alt_main': - /cygdrive/d/altera/72sp2/qdesigns/UART_nios/RS232/RS232_syslib/Debug/libRS232_syslib.a(altera_avalon_uart_read.o) In function `alt_get_errno': - ld: region onchip_mem is full (RS232.elf section .rwdata). Region needs to be 2860 bytes larger. - ld: region onchip_mem is full (RS232.elf section .text). Region needs to be 9336 bytes larger. - ld: section .bss [00001020 -> 00001233] overlaps section .exceptions [00001020 -> 000011c7] - ld: section .rodata [00001020 -> 0000105b] overlaps section .exceptions [00001020 -> 000011c7] - ld: section .rwdata [0000105c -> 00002b2b] overlaps section .exceptions [00001020 -> 000011c7] Наверное это какие то настройки компилятора!?
|
|
|
|
|
Jul 4 2008, 07:59
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Men - просто вы стали ставить более точные вопросы.. Касательно ld - так у вас там onchip_mem переполнен - он же так и пишет Цитата onchip_mem is full Попробуйте с рам засунуть внешний. А на счёт Цитата alt_main.c вы похоже заюзали урезанный вариант мейна.. В обсчем приведите исходник - так проще будет..
|
|
|
|
|
Jul 4 2008, 08:26
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Цитата(Kuzmi4 @ Jul 4 2008, 11:59)  2 Men - просто вы стали ставить более точные вопросы.. Касательно ld - так у вас там onchip_mem переполнен - он же так и пишет
Попробуйте с рам засунуть внешний. А на счёт
вы похоже заюзали урезанный вариант мейна..
В обсчем приведите исходник - так проще будет.. ИСХОДНИК выще взят у 608-го onmem 4Кb до этого пользовался обучающим пакетом от Альтеры в нем все влазило а в IDE нет это касается даже элементарных скриптов типа #include "system.h" #define SW (volatile char *) 0x0003000 #define LED (char *) 0x0003010 void main() { while (1) *LED = *SW; } ВОТ ТО ЧТО У МЕНЯ РЕАЛЬНО ПОЛУЧИЛОСЬ(скомпилировано с помощью Altera Debug Client)
|
|
|
|
|
Jul 4 2008, 08:30
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Men - И всё таки строка Код In function `alt_main': На талкивает меня на мысль что не такой как у 608 Меняйте на обычное Цитата int main (void) { ... } и памяти под программу выделите больше - вам решать как
|
|
|
|
|
Jul 4 2008, 10:09
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Цитата(Kuzmi4 @ Jul 4 2008, 12:30)  2 Men - И всё таки строка Код In function `alt_main': На талкивает меня на мысль что не такой как у 608 Меняйте на обычное и памяти под программу выделите больше - вам решать как  ну да вот и откомп-------сь При заливке: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Pausing target processor: not responding. Resetting and trying again: FAILED Leaving target processor paused
|
|
|
|
|
Jul 4 2008, 12:28
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Цитата(Kuzmi4 @ Jul 4 2008, 14:30)  2 Men - там эта.. у меня такие же глюки бывали - помогала перезагрузка и заново собирание ситемы - как то решил найти в чём прикол - вроде бы заливает не совсем то что надо  , но почему не знаю. Работаю с девкитом на 2-м циклоне , 1-й (мной собраный) с байтбластером не глючит, что наталкивает на размышления... Попробуйте пересобрать заново процюк, перезалит его в плиску и пересобрать,скомпилить и перезалить примерчик - мне помогало. Непомогает
|
|
|
|
|
Jul 4 2008, 14:05
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Men @ Jul 4 2008, 16:28)  Непомогает Имеется ли JTAG Debug модуль у Вашего процессора? Загрузка кода происходит по JTAGу. И для этого FPGA уже должно быть сконфигурировано Вашим проектом, содержащим NiosII (с JTAGом). Если JTAG'а у Вашего процессора нет, то для такой короткой программки можно сделать вот что. Расположите память программ (сегмент .text) в Оn-Chip RAM. Убедитесь, что после компиляции в NiosII IDE в папке с квартусовским проектом появился файл onchip_memory.hex. Если он там есть, то перекомпилируйте проект в квартусе. При этом компилятор подхватит этот файл, и у Вас создастся sof, который будет содержать блок памяти уже инициированный Вашим исполняемым кодом. Заливайте этот sof в FPGA и проверяйте, чего оно там делает. Ну и еще, мое личное имхо по теме. Изучать что-либо "от Адама", задавая вопросы на форуме - это моветон. Ничего, кроме раздражения такой подход у большинства участников не вызывает  Вся необходимая литература по NiosII и иже с ним (как по аппаратной, так и по софтверной части)имеется там : http://www.altera.com/literature/lit-nio2.jspи там : http://www.altera.com/literature/lit-sop.jspИзучайте! А что будет непонятно, уточняйте здесь
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jul 7 2008, 05:08
|

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

|
Цитата(Men @ Jul 4 2008, 21:28)  Непомогает 2 Moderator предлагаю банить за такие ответы-уточнения-вопросы ридонли на пару дней для прочтения документации
--------------------
Cogito ergo sum
|
|
|
|
|
Jul 7 2008, 14:06
|
Знающий
   
Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164

|
Цитата(Postoroniy_V @ Jul 7 2008, 07:08)  2 Moderator предлагаю банить за такие ответы-уточнения-вопросы ридонли на пару дней для прочтения документации  Полность согласен, но банить надо не только за подобные "ответы-уточнения-вопросы", но и за открытие подобных тем. Это в чистом виде борзость задавать безграмотные вопросы, не удосужившись хоть мельком посмотреть форум. Сколько раз говорилось, что RS232, RS422, RS485 и им подобные никакого отношения ни к одному из процессоров не имет - это спецификации физического протокола (уровни, фронты и тд и тп), а здесь еще и С приплетен, и SOPC Builder .... Чего челу надо - фиг поймешь
--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)
А. Эйнштейн.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|