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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> NIOS II, RS232
608
сообщение Jul 3 2008, 11:31
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 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, то потом, можно поговорить и дальше...
Прикрепленные файлы
Прикрепленный файл  n2cpu_nii51010.pdf ( 259.12 килобайт ) Кол-во скачиваний: 367
 
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 3 2008, 12:20
Сообщение #17


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

Группа: Свой
Сообщений: 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);
Go to the top of the page
 
+Quote Post
608
сообщение Jul 3 2008, 12:32
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 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". В этом файле Вы и найдете данный макрос.
Идеология Ниоса и его С/С++ замысловата, но разобраться можно (если отступать некуда).
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 3 2008, 12:55
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 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" - где то в айпи валятся должен - там как раз вы и найдёте все интересные файлики smile.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 4 2008, 00:03
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



макрос IOWR_ALTERA_AVALON_UART_TXDATA определен в "altera_avalon_uart_regs.h"
"altera_avalon_uart.h" - это для HAL, удобно если с printf/scanf работать.
"altera_avalon_uart_regs.h" - для работы с регистрами напрямую.
Go to the top of the page
 
+Quote Post
608
сообщение Jul 4 2008, 05:34
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 4 2008, 07:01
Сообщение #22


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

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



Ну можем же когда захотим!!!
Огромное спасибо буду пробовать! yeah.gif

Ну вот начинаю генерить и вот что получается
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]

Наверное это какие то настройки компилятора!?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 4 2008, 07:59
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 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

вы похоже заюзали урезанный вариант мейна..

В обсчем приведите исходник - так проще будет..
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 4 2008, 08:26
Сообщение #24


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

Группа: Свой
Сообщений: 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)
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 4 2008, 08:30
Сообщение #25


Гуру
******

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



2 Men -
И всё таки строка
Код
In function `alt_main':

На талкивает меня на мысль что не такой как у 608 smile.gif

Меняйте на обычное
Цитата
int main (void)
{
...
}

и памяти под программу выделите больше - вам решать как wink.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 4 2008, 09:09
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



че-то много памяти сожрал, поди stdlib или stdio подключен?
собери новый проект File/New/New Nios II Application на основе Hello_led,
там все по минимуму. потом добавть свой код с UART.
ну еще в настройках System Library поставить крыжики Lightweight device driver API,
Small C library, Reduced device drivers. stderr,stdin,stdout в null.
System library имеет смысл собрать с
конфигурацией Release (секция Build в настройка System library).
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 4 2008, 09:09
Сообщение #27


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

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



так выглядит мой скрипт

#include "system.h"
#include "altera_avalon_uart_regs.h"
#include "alt_types.h"

int main(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);
};
}

и всеравно непонятно почму там компилится а здесь нет
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 4 2008, 09:15
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



должно компилиться. собери hello_led, убедись, что компилится и работет.
потом воткни свой код.
и это.. короче то,что ты привел-не скрипт,а исходник. не путай народ.
http://ru.wikipedia.org/wiki/%D0%A1%D0%BA%...%B7%D1%8B%D0%BA
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 4 2008, 10:09
Сообщение #29


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

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



Цитата(Kuzmi4 @ Jul 4 2008, 12:30) *
2 Men -
И всё таки строка
Код
In function `alt_main':

На талкивает меня на мысль что не такой как у 608 smile.gif

Меняйте на обычное

и памяти под программу выделите больше - вам решать как wink.gif

ну да вот и откомп-------сь

При заливке:

Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 4 2008, 10:30
Сообщение #30


Гуру
******

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



2 Men - там эта.. у меня такие же глюки бывали - помогала перезагрузка и заново собирание ситемы - как то решил найти в чём прикол - вроде бы заливает не совсем то что надо wacko.gif , но почему не знаю. Работаю с девкитом на 2-м циклоне , 1-й (мной собраный) с байтбластером не глючит, что наталкивает на размышления...

Попробуйте пересобрать заново процюк, перезалит его в плиску и пересобрать,скомпилить и перезалить примерчик - мне помогало.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:58
Рейтинг@Mail.ru


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