|
как проверить работоспособность ttyS* на lpc2478 под uClinux |
|
|
|
Jun 21 2010, 21:23
|
Частый гость
 
Группа: Участник
Сообщений: 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 во всех байтах  как бы проверить порт, на педмет его живости?
Сообщение отредактировал andybeg - Jun 21 2010, 21:29
|
|
|
|
|
Jun 22 2010, 02:21
|
Участник

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

|
На педмет его живости? А Rx - Tx между собой замкнуть религия не позволяет? Или что?
|
|
|
|
|
Jun 22 2010, 06:56
|
Участник

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

|
А 485 интерфейса далее нет физического разъема? Кошмар как же другой девай подключать будете
|
|
|
|
|
Jun 22 2010, 11:34
|
Участник

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

|
А что или кто мешает убрать лишнее железа. На крайний случай аккуратно резануть дороги и кинуть перемычку. Зачем идти путем армянского комсомола?
|
|
|
|
|
Jun 23 2010, 04:19
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 23 2010, 05:21
|
Участник

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

|
Команды вводяться в консоле. Читайте литературу меньше вопросов будет
|
|
|
|
|
Jun 28 2010, 15:23
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 29 2010, 08:30
|
Частый гость
 
Группа: Участник
Сообщений: 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); пишу в порт и осцилограф показывает тишину  , причём после вчерашнего копания на всех портах на выходе стоит 3 вольта
Сообщение отредактировал andybeg - Jun 29 2010, 08:45
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|