Почему моя последовательная связь не работает?

Я просмотрел руководство (стр. 177) для DE2 и, насколько я понимаю, должна быть возможность осуществлять последовательную связь, например, через шпатлевку и кабель usb-to-serial к плате, поэтому я беру программу из руководства:

/* A simple program that recognizes the characters 't' and 'v' */
#include <stdio.h>
#include <string.h>
int main ()
{
char* msg = "Detected the character 't'.\n";
FILE* fp;
char prompt = 0;
fp = fopen ("/dev/uart1", "r+"); //Open file for reading and writing
if (fp)
{
while (prompt != 'v')
{ // Loop until we receive a 'v'.
prompt = getc(fp); // Get a character from the JTAG UART.
if (prompt == 't')
{ // Print a message if character is 't'.
fwrite (msg, strlen (msg), 1, fp);
}
if (ferror(fp))// Check if an error occurred with the file pointer 
clearerr(fp); // If so, clear it.
}
fprintf(fp, "Closing the JTAG UART file handle.\n");
fclose (fp);
}
return 0;
}

И я пытаюсь запустить его как оборудование Nios2, но затем получаю это сообщение, когда я настроил стандартный ввод-вывод для использования uart.

nios2-terminal: can't open uart: No such file or directory

И затем, когда я подключаюсь к терминальной программе (последовательное соединение замазки), она не подключается. Что я делаю неправильно? Я попытался в свойствах проекта изменить стандартный ввод-вывод на uart, но это не помогло. Можешь мне помочь?


person Niklas R.    schedule 26.09.2013    source источник
comment
Сначала сделайте отступ в коде.   -  person Grijesh Chauhan    schedule 26.09.2013
comment
Вы перебираете файл, который вы изменяете.   -  person Grijesh Chauhan    schedule 26.09.2013
comment
первая попытка: "/dev/uart1" в оболочке делает, если показывает имя файла... также руна, которую вы кодируете как $sudo ./exename   -  person Grijesh Chauhan    schedule 26.09.2013


Ответы (2)


КАК ОТЛАДИТЬ ПОСЛЕДОВАТЕЛЬНУЮ СВЯЗЬ:

Возьмите 9-контактный последовательный кабель и соедините перемычкой контакты 2 и 3. Вы можете использовать скрепку или что-то, что у вас есть под рукой. Контакты 2 и 3 — это TX и RX. Если вы соедините их вместе, любая команда, которую вы отправляете с компьютера, будет получена компьютером. Вы создали последовательную петлю!

Откройте Putty, попробуйте подключиться к последовательному кабелю. Нажмите любую клавишу на клавиатуре. Скорость передачи и прочее не имеет значения, потому что это петля.

Если вы видите, что отправленный вами символ получен на терминале, ваш последовательный кабель работает! Если нет, у вас проблема с кабелем или с замазкой. В прошлом у меня были проблемы с замазкой с последовательной связью. Попробуйте загрузить Tera Term, если у вас возникли проблемы с подключением Putty.

Или найдите новые драйверы для вашего последовательного кабеля! Удачи.

person Russell    schedule 26.09.2013

В Linux я бы сделал следующее.

fp = fopen ("/dev/ttyS0", "r+"); //Open file for reading and writing

or

ищите ttyS1; если используется ttyS0.

fp = fopen ("/dev/ttyS1", "r+"); //Open file for reading and writing

Сделайте dmesg, чтобы узнать, какое именно устройство вы подключили.

$tail -f /var/log/messages

Для последовательного порта USB это может быть

/dev/ttyUSB0; точное количество можно узнать с помощью /var/log/messages

person dexterous    schedule 26.09.2013