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

 
 
> как проверить работоспособность ttyS* на lpc2478 под uClinux
andybeg
сообщение Jun 21 2010, 21:23
Сообщение #1


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



залил на сабж стандартный олимексовский vmlinux.bin, так как тот который сам компилил почему то весил 2.5 Гб, в этом ещё не разобрался, так вот, а romfs_5.img беру своего производства + в нём есть моя откомпилированная погама работы с компортом по модбасу с шелезякой(шелезяка исправная, проверялось с ББ), открываю порт стандартно
fd = open("/dev/ttyS2",O_RDWR);
записываю, читаю стандартно
write(fd,query,8);
read(fd,&rxchar,1);
только при счиывании получаю FF во всех байтах sad.gif
как бы проверить порт, на педмет его живости?

Сообщение отредактировал andybeg - Jun 21 2010, 21:29
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
Совсем старый Ба...
сообщение Jun 22 2010, 02:21
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075



На педмет его живости?
А Rx - Tx между собой замкнуть религия не позволяет?
Или что?
Go to the top of the page
 
+Quote Post
PrSt
сообщение Jun 22 2010, 04:43
Сообщение #3


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



как уже ранее советовали замкнуть rx+tx это пины 2-3 на разъеме ком-порта
потом открыть minicom и что угодно написать - должны это увидеть на экране и эхо при этом должно быть отключено


--------------------
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 22 2010, 05:18
Сообщение #4


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



что то мне подскзывает что замыкание организовать будет сложно потому как уарт с процессора идёт на контроллер 485го интерфейса, а далее уже к клиенту, можно конечно на плате поколдовать, но может есть какой то другой метод?
Go to the top of the page
 
+Quote Post
Совсем старый Ба...
сообщение Jun 22 2010, 06:56
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075



А 485 интерфейса далее нет физического разъема?
Кошмар как же другой девай подключать будете
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 22 2010, 11:06
Сообщение #6


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



после 485 идёт другая железка или конвертер USB на 485, чуть позже появится железка с которой будет более удобная связь и может с ней мжно будет поотлаживать протокол

так, просто для небольшой уверенности - если даю ls и она видит в системе порты это значит что в линухе они прописаны и он может с ними работать?
/> ls /dev/ttyS*
/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3

Сообщение отредактировал andybeg - Jun 22 2010, 11:08
Go to the top of the page
 
+Quote Post
Совсем старый Ба...
сообщение Jun 22 2010, 11:34
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075



А что или кто мешает убрать лишнее железа. На крайний случай аккуратно резануть дороги и кинуть перемычку. Зачем идти путем армянского комсомола?
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 22 2010, 11:50
Сообщение #8


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



пока что есть надежда на железку с которой будет удобно отлаживать, если не прокатит будем резать ...
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 23 2010, 04:19
Сообщение #9


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



нашёл небольшой HOW-TOв нём вокончании есть слова
Цитата
Compile and update the new kernel image.
To test it, fisrt let's check if the interface is there:
#ls /dev/ttyS*
/dev/ttyS2 /dev/ttyS1 /dev/ttyS0
Now, send some data to it:
#echo UUUUUUUU >/dev/ttyS2

это типа критерий работоспособности порта, у мя это присутствует

речь естественно идёт о том что я через миником сижу в терпинале и в консоли платы(ttyS0 как понимаю) ввожу эти команды

Сообщение отредактировал andybeg - Jun 23 2010, 04:21
Go to the top of the page
 
+Quote Post
Совсем старый Ба...
сообщение Jun 23 2010, 05:21
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075



Команды вводяться в консоле. Читайте литературу меньше вопросов будет
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 28 2010, 11:50
Сообщение #11


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



кидаю посылки на ttyS3, ставлю осцилограф на TXD и ничего ни на одном порту не вижу, причём напряжения на них стоят разные, у одного 2.5, у другого 5 в ... вероятно пины не сконфигурированы ...
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 28 2010, 13:47
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(andybeg @ Jun 28 2010, 15:50) *
кидаю посылки на ttyS3, ставлю осцилограф на TXD и ничего ни на одном порту не вижу, причём напряжения на них стоят разные, у одного 2.5, у другого 5 в ... вероятно пины не сконфигурированы ...


На TXD у трёхвольтового процессора не может быть 5v.
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 28 2010, 15:23
Сообщение #13


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



виноват, зарапортовался - действительно не 5, а 3, а 2.5 и есть 2.5

пересмотрел сейчас убут и кернел уцлинукса, в убуте вроди бы все порты проинициализированы как надо по ману, а вот с настройками в кернеле непонятно - прерывания установлены по моему не верно (если это имеет значение)
Цитата
#include <asm/hardware.h>

#define BASE_BAUD (LPC22xx_Fpclk / 16)
#define UART0_BASE 0xE000C000
#define UART1_BASE 0xE0010000
#define UART2_BASE 0xE0078000
#define UART3_BASE 0xE007C000
/* Standard COM flags */
#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
#define RS_TABLE_SIZE 4
/*
* Rather empty table...
* Hardwired serial ports should be defined here.
* PCMCIA will fill it dynamically.
*/
#define STD_SERIAL_PORT_DEFNS \
/* UART CLK PORT IRQ FLAGS */ \
{ 0, BASE_BAUD, UART0_BASE, 6, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART0_BASE, \
.io_type = UPIO_MEM}, \
{ 1, BASE_BAUD, UART1_BASE, 7, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART1_BASE, \
.io_type = UPIO_MEM},\
{ 2, BASE_BAUD, UART2_BASE, 5, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART2_BASE, \
.io_type = UPIO_MEM}.\
{ 3, BASE_BAUD, UART3_BASE, 5, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART3_BASE, \
.io_type = UPIO_MEM}
из мана пока что не очевидны значения прерываний

Сообщение отредактировал andybeg - Jun 28 2010, 15:30
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 29 2010, 07:33
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Прилагаю инструкцию
и рекомендую зарегистрироваться в конференции
http://tech.groups.yahoo.com/group/lpc2400_uClinux/messages

Прикрепленные файлы
Прикрепленный файл  How_to_configure_new_UARTs_on_uCLinux.pdf ( 88.06 килобайт ) Кол-во скачиваний: 231
 
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jun 29 2010, 08:30
Сообщение #15


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

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



Цитата(etoja @ Jun 29 2010, 11:33) *
Прилагаю инструкцию
и рекомендую зарегистрироваться в конференции
http://tech.groups.yahoo.com/group/lpc2400_uClinux/messages

ага, в одном посте выше делал ссылку на эту инструкцию, вот что у меня сейчас
lowlevel_init.c
Цитата
void

UART0init(void)//uart debug

{
PINSEL0 = 0x00000050;
PINSEL1 = 0x00000000;
U0LCR = 0;
U0IER = 0;
U0LCR = 0x80; /* DLAB=1 */
U0DLL = (Fpclk/16)/CONFIG_BAUDRATE;
U0DLM = 0;
U0LCR = 0x03; /* 8N1, DLAB=0 */
U0FCR = 0x07; /* Enable RX and TX FIFOs */
}

//ARM p0.10 p0.11
void
UART1init(void)
{
PINSEL0 |= 0x00500000;//0x30003fff
PCONP |= (1<<24);
U1LCR = 0;
U1IER = 0;
U1LCR = 0x80;
U1DLL = ((Fpclk/16)/9600) & 0xff;
U1DLM = ((Fpclk/16)/9600) >> 8;
U1LCR = 0x03;
U1FCR = 0x07;
U1THR = '\n';
}
//p0.25 p.026
void
UART2init(void)
{
PINSEL1 |= 0x003C0000;
PCONP |= (1<<25);
U2LCR = 0;
U2IER = 0;
U2LCR = 0x80;
U2DLL = ((Fpclk/16)/9600) & 0xff
U2DLM = ((Fpclk/16)/9600) >> 8;
U2LCR = 0x03;
U2FCR = 0x07;
U2THR = '\n';
}
void//p2.0 p2.1
UART3init(void)
{
PINSEL4 |= 0x0000000A;
PCONP |= (1<<4);
U3LCR = 0;
U3IER = 0;
U3LCR = 0x80;
U3DLL = ((Fpclk/16)/9600) & 0xff;
U3DLM = ((Fpclk/16)/9600) >> 8;
U3LCR = 0x03;
U3FCR = 0x07;
U3THR = '\n';
}


Цитата
lowlevel_init(void)

{
...
UART0init();
UART1init();
UART2init();
UART3init();


uClinux
serial.h
Цитата
#define BASE_BAUD (LPC22xx_Fpclk / 16)
#define UART0_BASE 0xE000C000
#define UART1_BASE 0xE0010000
#define UART2_BASE 0xE0078000
#define UART3_BASE 0xE007C000

/* Standard COM flags */
#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)

#define RS_TABLE_SIZE 4
#define STD_SERIAL_PORT_DEFNS \
/* UART CLK PORT IRQ FLAGS */ \
{ 0, BASE_BAUD, UART0_BASE, 6, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART0_BASE, \
.io_type = UPIO_MEM}, \
{ 1, BASE_BAUD, UART1_BASE, 7, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART1_BASE, \
.io_type = UPIO_MEM},\
{ 2, BASE_BAUD, UART2_BASE, 8, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART2_BASE, \
.io_type = UPIO_MEM},\
{ 3, BASE_BAUD, UART3_BASE, 9, STD_COM_FLAGS, \
.iomem_reg_shift = 2, \
.iomem_base = UART3_BASE, \
.io_type = UPIO_MEM}

Makefile
Цитата
ttyS0,c,4,64 ttyS1,c,4,65 ttyS2,c,4,66 ttyS3,c,4,67 \

собственная прога

Цитата
int set_port( )

{
ttyfd = open("/dev/ttyS1",O_RDWR | O_NOCTTY | O_NONBLOCK | O_NDELAY);
ioctl(ttyfd,TCGETA,&tsaved);
tnew.c_line = 0;
tnew.c_oflag &=~ OPOST;
tnew.c_lflag &=~ ICANON;
tnew.c_cflag &=~ CBAUD;
tnew.c_cflag |= B9600; /* baud rate 9600 setserial -g -abGv */
tnew.c_cflag &=~ CSIZE;
tnew.c_cflag |= CS8; /* 8 bits RTU */
tnew.c_cflag |= (PARENB | PARODD); /* odd parity */
tnew.c_cflag |= CREAD; /* enable read */
tnew.c_cflag |= CLOCAL; /* ignore modem lines */
tnew.c_cc[VMIN] = 0;
tnew.c_cc[VTIME] = 0;
ioctl(ttyfd,TCSETA,&tnew);
}
......
unsigned char msg[8];
write(ttyfd,msg,8);
......
read(ttyfd,&rxchar,1);

пишу в порт и осцилограф показывает тишину sad.gif, причём после вчерашнего копания на всех портах на выходе стоит 3 вольта

Сообщение отредактировал andybeg - Jun 29 2010, 08:45
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:59
Рейтинг@Mail.ru


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