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

 
 
> Большое число программных прерываний в ОС Linux при приеме информации по интерфейсу CAN на AM3517, Нужно уменьшить число программных прерываний в ОС Linux
Таратухин Сергей
сообщение Sep 18 2013, 09:49
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 18-09-13
Пользователь №: 78 372



На AM3517 при получении информации через интерфейс CAN (скорость передачи данных 1 Мбит/с шина CAN загружена около 80%) в ОС Linux генерируется много программных прерываний (около 45% загрузки процессора). Можно ли уменьшить количество программных прерываний при приеме?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tarbal
сообщение Sep 18 2013, 17:00
Сообщение #2


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Таратухин Сергей @ Sep 18 2013, 13:49) *
На AM3517 при получении информации через интерфейс CAN (скорость передачи данных 1 Мбит/с шина CAN загружена около 80%) в ОС Linux генерируется много программных прерываний (около 45% загрузки процессора). Можно ли уменьшить количество программных прерываний при приеме?


Уточните насчет программных прерываний. Может все-таки это реальные прерывания вызванные железом?

Если так, то число прерываний должно совпадать с числом принятых сообщений, переданых сообщений и еще какой-нибудь байды, которая разрешена. В контроллере CAN должен быть регистр маски прерывания. Вам следует разрешить в нем только прерывания относящиеся к делу. С передачей сообщений бывает следующая проблема. Флаг прерывания установлен всегда, пока буфер передатчика пуст. Иногда бывает флаг, что гасится тем или иным способом и не восстанавливается до следующей передачи. В устройстве могут присутствовать оба механизма. В первом случае необходимо маскировать прерывание передатчика в обработчике и разрешать, когда есть что передать.
Go to the top of the page
 
+Quote Post
_3m
сообщение Sep 18 2013, 19:24
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(Tarbal @ Sep 18 2013, 21:00) *
Уточните насчет программных прерываний. Может все-таки это реальные прерывания вызванные железом?
Если так, то число прерываний должно совпадать с числом принятых сообщений, переданых сообщений и еще какой-нибудь байды, которая разрешена.

Я посмотрел драйвер TI тот что в mainline. Там обработка приема делается поллингом так что количество хардверных прерываний от кан интерфейса будет меньше либо равно количеству принятых пакетов.
С подтверждением прерываний может быть проблема это есть смысл проверить.
Также не исключено что высокая загрузка это норма для скорости 1М. Ядро обрабатывает принятые пакеты софтверно. Какой софт у вас получает пакеты ?
Go to the top of the page
 
+Quote Post
Таратухин Сергей
сообщение Sep 19 2013, 05:54
Сообщение #4





Группа: Участник
Сообщений: 14
Регистрация: 18-09-13
Пользователь №: 78 372



Цитата(_3m @ Sep 19 2013, 01:24) *
Я посмотрел драйвер TI тот что в mainline. Там обработка приема делается поллингом так что количество хардверных прерываний от кан интерфейса будет меньше либо равно количеству принятых пакетов.
С подтверждением прерываний может быть проблема это есть смысл проверить.
Также не исключено что высокая загрузка это норма для скорости 1М. Ядро обрабатывает принятые пакеты софтверно. Какой софт у вас получает пакеты ?


Чтобы проверить прием была написана технологическая программа. Она ни чего не выводит, просто читает из сокета пакеты CAN в фоновом режиме и увеличивает счетчик принятых пракетов (по шине CAN непрерывно передается информация). Загрузку смотрю утилитой top. Так же привожу кол-во прерываний, кол-во принятых пакетов и размер принятых данных (cat /proc/interrupts ; ifconfig).

CODE
Mem: 32336K used, 204116K free, 0K shrd, 1568K buff, 6260K cached
CPU: 0% usr 21% sys 0% nic 35% idle 0% io 0% irq 42% sirq
Load average: 0.03 0.04 0.05 1/58 1009
PID PPID USER STAT VSZ %MEM %CPU COMMAND
1008 951 root R 1472 1% 44% ./a.out
622 2 root SW 0 0% 6% [kworker/0:2]
644 2 root SW 0 0% 1% [ksdioirqd/mmc1]
1009 951 root R 2844 1% 1% top
45 2 root SW 0 0% 0% [irq/74-serial i]
951 949 root S 2844 1% 0% -sh
924 1 root S 2732 1% 0% /sbin/syslogd -n -C64 -m 20
926 1 root S 2668 1% 0% /sbin/klogd -n
917 1 root S 2668 1% 0% /usr/sbin/telnetd
912 1 messageb S 2436 1% 0% /usr/bin/dbus-daemon --system
949 1 root S 2400 1% 0% login -- root
692 1 root S < 2188 1% 0% /sbin/udevd -d
726 692 root S < 2184 1% 0% /sbin/udevd -d
727 692 root S < 2184 1% 0% /sbin/udevd -d
933 1 root S 2064 1% 0% /usr/sbin/thttpd -d /srv/www -p 8080 -
1 0 root S 1628 1% 0% init [5]
588 2 root SW 0 0% 0% [w1_bus_master1]
5 2 root SW 0 0% 0% [kworker/u:0]
633 2 root SW 0 0% 0% [mmcqd/0]
3 2 root SW 0 0% 0% [ksoftirqd/0]


CODE
root@am3517-evm:~# cat /proc/interrupts ; ifconfig
CPU0
11: 0 INTC prcm
12: 1873 INTC DMA
20: 0 INTC gpmc
24: 12114477 INTC can0
25: 2 INTC OMAP DSS
37: 454780 INTC gp timer
56: 1874385 INTC omap_i2c
57: 0 INTC omap_i2c
58: 84972 INTC omap_hdq
61: 0 INTC omap_i2c
71: 1 INTC musb-hdrc.0
72: 0 INTC serial idle
73: 0 INTC serial idle
74: 22509 INTC serial idle, OMAP UART2
77: 0 INTC ehci_hcd:usb2
83: 2765 INTC mmc0
86: 286560 INTC mmc1
160: 0 GPIO tps6507x
162: 1 GPIO mmc1
184: 0 GPIO ds1374
186: 0 GPIO tca8418-keypad
224: 0 GPIO mmc0
Err: 0

can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:12732263 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:88788609 (84.6 MiB) TX bytes:0 (0.0 B)
Interrupt:24


CODE
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/socket.h>
4 #include <sys/ioctl.h>
5 #include <net/if.h>
6
7 #include <linux/can.h>
8 #include <linux/can/raw.h>
9 #include <string.h>
10
11 /* At time of writing, these constants are not defined in the headers */
12 #ifndef PF_CAN
13 #define PF_CAN 29
14 #endif
15
16 #ifndef AF_CAN
17 #define AF_CAN PF_CAN
18 #endif
19
20 int main(int argc, char *argv[])
21 {
22 /* create a frame */
23 struct can_frame frame;
24 /* interface */
25 struct ifreq ifr;
26 /* number of te */
27 int bytes_read;
28 /* create the socket */
29 int skt = socket( PF_CAN, SOCK_RAW, CAN_RAW );
30 /* socket address */
31 struct sockaddr_can addr;
32 /* counter SFF */
33 unsigned long countSFF;
34 /* counter EFF*/
35 unsigned long countEFF;
36
37 countSFF = 0;
38 countEFF = 0;
39 /* locate the interface you wish to use */
40 strcpy( ifr.ifr_name, "can0" );
41 ioctl( skt, SIOCGIFINDEX, &ifr ); /* ifr.ifr_ifindex gets filled with that device's index */
42 /* select that CAN interface, and bind the socket to it. */
43 addr.can_family = AF_CAN;
44 addr.can_ifindex = ifr.ifr_ifindex;
45 bind( skt, ( struct sockaddr * ) &addr, sizeof( addr ) );
46 while(1)
47 {
48 bytes_read = read( skt, &frame, sizeof( frame ) );
49 if( bytes_read < 0 )
50 {
51 printf( "CAN\n" );
52 }
53 else if ( bytes_read > 0 )
54 {
55 if( !( frame.can_id & 0x80000000U ) )
56 {
57 countSFF++;
58 }
59 else
60 {
61 countEFF++;
62 }
63 }
64 }
65
66 return 0;
67 }


Цитата(kurtis @ Sep 18 2013, 18:45) *
У вас случайно прерывания не по gpio идут? Если по gpio, то по фронту или по уровню?


Прерывания CAN осуществляется не по GPIO (фрагмент из команды "cat /proc/interrupts" 24: 12114477 INTC can0).

Цитата(Tarbal @ Sep 19 2013, 07:13) *
Положим одна транзакция 100 бит. Значит при 80% загрузке в секунду приходит 8000 сообщений. А сколько у вас прерываний случается?


Из "cat /proc/interrupts" следует, что за несколько минут, при загрузки шины CAN примерно 80% количество прерываний 12114477.
Go to the top of the page
 
+Quote Post
_3m
сообщение Sep 19 2013, 07:16
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(Таратухин Сергей @ Sep 19 2013, 09:54) *
Чтобы проверить прием была написана технологическая программа. Она ни чего не выводит, просто читает из сокета пакеты CAN в фоновом режиме и увеличивает счетчик принятых пракетов
...

Пока не вижу криминала. По вашим данным
12114477 INTC can0
12732263 RX packets
У вас 0,95 прерывания на пакет. Абсолютное большинство пакетов система успевает забрать и обработать до прихода следующего.
Возможно это нормальная работа socketcan. Там довольно накручено поэтому еще живы альтернативные решения, например lincan.
Вот бенчмарки
CAN driver benchmark
В бенчмарке есть хорошая идея - тестировать socketcan при одновременной нагрузке ethernet.

Цитата(Tarbal @ Sep 19 2013, 05:13) *
Положим одна транзакция 100 бит. Значит при 80% загрузке в секунду приходит 8000 сообщений. А сколько у вас прерываний случается?

По моим расчетам (я мог ошибиться) для скорости 1М максимальный темп передачи пакетов CAN при 100% загрузке шины и длине данных 8 бит составляет 63 и 81мкс для стандартных и расширенных пакетов соответственно что дает 15873 и 12345 пакетов в секунду.
У ТС загрузка шины 80% значит пакеты поступают каждые 79мкс.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 19 2013, 13:19
Сообщение #6


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(_3m @ Sep 19 2013, 11:16) *
Пока не вижу криминала. По вашим данным
12114477 INTC can0
12732263 RX packets
У вас 0,95 прерывания на пакет. Абсолютное большинство пакетов система успевает забрать и обработать до прихода следующего.
Возможно это нормальная работа socketcan. Там довольно накручено поэтому еще живы альтернативные решения, например lincan.
Вот бенчмарки
CAN driver benchmark
В бенчмарке есть хорошая идея - тестировать socketcan при одновременной нагрузке ethernet.


По моим расчетам (я мог ошибиться) для скорости 1М максимальный темп передачи пакетов CAN при 100% загрузке шины и длине данных 8 бит составляет 63 и 81мкс для стандартных и расширенных пакетов соответственно что дает 15873 и 12345 пакетов в секунду.
У ТС загрузка шины 80% значит пакеты поступают каждые 79мкс.

Ваши рассчеты точнее моих. Я просто оценил порядок величины. Похоже система работает правильно. На каждый принятый пакет прерывание. Просто пакетов много.
Go to the top of the page
 
+Quote Post
Таратухин Сергей
сообщение Sep 20 2013, 09:13
Сообщение #7





Группа: Участник
Сообщений: 14
Регистрация: 18-09-13
Пользователь №: 78 372



Цитата(Tarbal @ Sep 19 2013, 19:19) *
Ваши рассчеты точнее моих. Я просто оценил порядок величины. Похоже система работает правильно. На каждый принятый пакет прерывание. Просто пакетов много.



Проанализировал ситуацию (после прочтения предложений участников) и посмотрел в интернете насчет LinCAN наткнулся на одну интересную статью
CAN driver benchmark
В итоге пришел к выводу, что эта проблема драйвера и механизма доступа к нему, который реализовали сотрудники TI. Так что AM3517 с драйвером CAN от TI не обеспечивает низкую загрузку центрального процессора при приеме CAN пакетов сильно загруженной шины CAN. Буду уменьшать загрузку шины CAN, чтобы уменьшить нагрузку на центральный процессор при приеме. Всем спасибо за помощь.

Сообщение отредактировал Таратухин Сергей - Sep 20 2013, 09:15
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 20 2013, 10:42
Сообщение #8


Знающий
****

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



Цитата(Таратухин Сергей @ Sep 20 2013, 13:13) *
наткнулся на одну интересную статью
CAN driver benchmark


В статье описан типичный поллинг - ISR отрабатывает первый пакет а остальные (если они есть) отрабатываются в контексте soft irq (bottom half) или обычного процесса проверкой бита готовности данных. Для ethernet в ядре есть готовый механизм - NAPI. В общем техника широко применяемая.
Go to the top of the page
 
+Quote Post
Таратухин Сергей
сообщение Sep 20 2013, 12:23
Сообщение #9





Группа: Участник
Сообщений: 14
Регистрация: 18-09-13
Пользователь №: 78 372



Цитата(sasamy @ Sep 20 2013, 16:42) *
В статье описан типичный поллинг - ISR отрабатывает первый пакет а остальные (если они есть) отрабатываются в контексте soft irq (bottom half) или обычного процесса проверкой бита готовности данных. Для ethernet в ядре есть готовый механизм - NAPI. В общем техника широко применяемая.


Про методику читал (NAPI), но как им пользоваться не знаю (найти примеры не получилось). Если есть возможность рассказать про этот механизм подробнее буду очень благодарен.

Цитата(A. Fig Lee @ Sep 20 2013, 18:11) *
Не знаю везде ли, но у СТМ и майкрочипа фильтр стоит на ИД, принимает только те, которые нужно


Фильтровать на аппаратном уровне могу (необходимо принимать примерно 15% от максимальной загрузки шины, при этом нагрузка центрального процессора действительно маленькая порядка 4-7%), но есть ситуации когда необходимо будет принять большой объем пакетов (примерно 80% загрузки шины).

Сообщение отредактировал Таратухин Сергей - Sep 20 2013, 12:24
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 20 2013, 12:55
Сообщение #10


Знающий
****

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



Цитата(Таратухин Сергей @ Sep 20 2013, 16:23) *
Про методику читал (NAPI), но как им пользоваться не знаю (найти примеры не получилось). Если есть возможность рассказать про этот механизм подробнее буду очень благодарен.


Посмотрите как сделано у Freescale для flexcan
http://lxr.free-electrons.com/source/drive.../flexcan.c#L564

Сообщение отредактировал sasamy - Sep 20 2013, 12:56
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 20 2013, 14:30
Сообщение #11


Знающий
****

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



Цитата(sasamy @ Sep 20 2013, 16:55) *
Посмотрите как сделано у Freescale для flexcan


Кстати - в ванильном ядре и HECC NAPI поддерживает
http://lxr.free-electrons.com/source/drive.../ti_hecc.c#L604

насколько я понял
http://processors.wiki.ti.com/index.php/Si...29_Linux_Driver

у вас на процессоре такой контроллер используется.

PS я пропустил сообщение _3m
http://electronix.ru/forum/index.php?showt...t&p=1194005
он вам об этом уже говорил

Сообщение отредактировал sasamy - Sep 20 2013, 14:36
Go to the top of the page
 
+Quote Post
Таратухин Сергей
сообщение Sep 23 2013, 06:26
Сообщение #12





Группа: Участник
Сообщений: 14
Регистрация: 18-09-13
Пользователь №: 78 372



Цитата(sasamy @ Sep 20 2013, 20:30) *
Кстати - в ванильном ядре и HECC NAPI поддерживает
http://lxr.free-electrons.com/source/drive.../ti_hecc.c#L604

насколько я понял
http://processors.wiki.ti.com/index.php/Si...29_Linux_Driver

у вас на процессоре такой контроллер используется.

PS я пропустил сообщение _3m
http://electronix.ru/forum/index.php?showt...t&p=1194005
он вам об этом уже говорил


Все верно, но как задействовать NAPI?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 23 2013, 12:20
Сообщение #13


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Таратухин Сергей @ Sep 23 2013, 10:26) *
Все верно, но как задействовать NAPI?


Для ARM архитектуры, я делаю так

В корне кернела исполнить команду:
make ARCH=arm menuconfig

Нажмите прмяой слеш : '/'
в строке поиска введите NAPI

Получите список всех возможных функций имэущих NAPI в названии ключа компиляции.
Там будет отражено состояние ключа, разрешающего функцию, путь к нему и зависимость его от других ключей.
Go to the top of the page
 
+Quote Post
Таратухин Сергей
сообщение Sep 23 2013, 12:45
Сообщение #14





Группа: Участник
Сообщений: 14
Регистрация: 18-09-13
Пользователь №: 78 372



Цитата(Tarbal @ Sep 23 2013, 18:20) *
Для ARM архитектуры, я делаю так

В корне кернела исполнить команду:
make ARCH=arm menuconfig

Нажмите прмяой слеш : '/'
в строке поиска введите NAPI

Получите список всех возможных функций имэущих NAPI в названии ключа компиляции.
Там будет отражено состояние ключа, разрешающего функцию, путь к нему и зависимость его от других ключей.


Это я делал, находил две опции:

CODE
Symbol: TULIP_NAPI [=n]
Type : boolean
Prompt: Use RX polling (NAPI)
Defined at drivers/net/tulip/Kconfig:79
Depends on: NETDEVICES [=y] && NET_ETHERNET [=y] && NET_TULIP [=n] && TULIP [=n]
Location:
-> Device Drivers
-> Network device support (NETDEVICES [=y])
-> Ethernet (10 or 100Mbit) (NET_ETHERNET [=y])
-> "Tulip" family network device support (NET_TULIP [=n])
-> DECchip Tulip (dc2114x) PCI support (TULIP [=n])


Symbol: TULIP_NAPI_HW_MITIGATION [=n]
Type : boolean
Prompt: Use Interrupt Mitigation
Defined at drivers/net/tulip/Kconfig:93
Depends on: NETDEVICES [=y] && NET_ETHERNET [=y] && NET_TULIP [=n] && TULIP_NAPI [=n]
Location:
-> Device Drivers
-> Network device support (NETDEVICES [=y])
-> Ethernet (10 or 100Mbit) (NET_ETHERNET [=y])
-> "Tulip" family network device support (NET_TULIP [=n])
-> DECchip Tulip (dc2114x) PCI support (TULIP [=n])
-> Use RX polling (NAPI) (TULIP_NAPI [=n])


но как эти опции влияют на CAN не понимаю, я их не включал. Если их включить как они повлияют на обработку приема по интерфейсу CAN и как необходимо переписать программу приема, чтоб использовать NAPI?
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 23 2013, 13:38
Сообщение #15


Знающий
****

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



Цитата(Таратухин Сергей @ Sep 23 2013, 16:45) *
Это я делал, находил две опции:
..
но как эти опции влияют на CAN не понимаю, я их не включал.


Эти - никак не влияют.

Цитата
как необходимо переписать программу приема, чтоб использовать NAPI?


Ничего переписывать не надо - NAPI должен поддерживать драйвер, некоторые делают опциаональные настройки - выбор между обычным и New API, у вашего контроллера NAPI используется всегда

http://lxr.free-electrons.com/source/drive.../ti_hecc.c#L860

почему поллинг не снижает количество прерываний - это надо разбираться с этим драйвером и контроллером.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Таратухин Сергей   Большое число программных прерываний в ОС Linux при приеме информации по интерфейсу CAN на AM3517   Sep 18 2013, 09:49
- - kurtis   У вас случайно прерывания не по gpio идут? Если по...   Sep 18 2013, 12:45
||- - AndrewN   QUOTE (sasamy @ Sep 20 2013, 18:30) Кстат...   Sep 21 2013, 18:38
||- - Tarbal   Цитата(Таратухин Сергей @ Sep 23 2013, 16...   Sep 23 2013, 13:33
|||- - Таратухин Сергей   Цитата(Tarbal @ Sep 23 2013, 19:33) Я не ...   Oct 8 2013, 05:27
|||- - Tarbal   Цитата(Таратухин Сергей @ Oct 8 2013, 09...   Oct 8 2013, 12:21
|||- - Таратухин Сергей   Цитата(Tarbal @ Oct 8 2013, 18:21) Вы пол...   Oct 15 2013, 09:11
|||- - Tarbal   Цитата(Таратухин Сергей @ Oct 15 2013, 13...   Oct 15 2013, 12:12
|||- - Таратухин Сергей   Цитата(Tarbal @ Oct 15 2013, 18:12) laten...   Oct 16 2013, 11:30
||- - AndrewN   QUOTE (sasamy @ Sep 23 2013, 16:38) почем...   Sep 23 2013, 21:51
||- - A. Fig Lee   Цитата(AndrewN @ Sep 23 2013, 17:51) Колл...   Sep 24 2013, 00:34
||- - Tarbal   Цитата(AndrewN @ Sep 24 2013, 01:51) Колл...   Sep 24 2013, 00:54
||- - AndrewN   QUOTE (Tarbal @ Sep 24 2013, 04:54) Цыпля...   Sep 24 2013, 02:56
||- - Tarbal   Цитата(AndrewN @ Sep 24 2013, 06:56) Упс....   Sep 24 2013, 03:12
||- - _3m   Цитата(AndrewN @ Sep 24 2013, 06:56) Инте...   Sep 24 2013, 06:17
||- - AndrewN   QUOTE (_3m @ Sep 24 2013, 10:17) Такты сч...   Sep 24 2013, 21:50
||- - Tarbal   Цитата(AndrewN @ Sep 25 2013, 01:50) Пото...   Sep 25 2013, 01:45
|- - Tarbal   Цитата(Таратухин Сергей @ Sep 20 2013, 13...   Sep 20 2013, 12:30
|- - Таратухин Сергей   Цитата(Tarbal @ Sep 20 2013, 18:30) У люб...   Sep 21 2013, 15:53
|- - Tarbal   Цитата(Таратухин Сергей @ Sep 21 2013, 19...   Sep 21 2013, 16:39
|- - Таратухин Сергей   Цитата(Tarbal @ Sep 21 2013, 22:39) Ну то...   Sep 23 2013, 11:54
|- - Tarbal   Цитата(Таратухин Сергей @ Sep 23 2013, 15...   Sep 23 2013, 12:05
|- - Таратухин Сергей   Цитата(Tarbal @ Sep 23 2013, 18:05) Я поп...   Sep 23 2013, 12:14
- - Tarbal   Положим одна транзакция 100 бит. Значит при 80% за...   Sep 19 2013, 01:13
- - A. Fig Lee   Цитата(Таратухин Сергей @ Sep 18 2013, 05...   Sep 20 2013, 12:11
- - Tarbal   Вы уверены, что вы починили функциональность, а не...   Oct 16 2013, 11:42
|- - Таратухин Сергей   Цитата(Tarbal @ Oct 16 2013, 17:42) Вы ув...   Oct 16 2013, 11:53
|- - Tarbal   Цитата(Таратухин Сергей @ Oct 16 2013, 15...   Oct 16 2013, 12:47
|- - Таратухин Сергей   Цитата(Tarbal @ Oct 16 2013, 18:47) И не ...   Oct 17 2013, 05:25
- - Tarbal   Отгадать не получится. Надо дебагировать.   Oct 18 2013, 01:47
- - Grommerin   Здравствуйте. Уже месяц бьюсь над такой-же проблем...   Nov 3 2014, 12:02
|- - ZASADA   Цитата(Grommerin @ Nov 3 2014, 15:02) Здр...   Nov 4 2014, 10:39
- - Grommerin   Цитата(ZASADA @ Nov 4 2014, 13:39) вы неп...   Nov 11 2014, 08:50
- - _3m   Чтобы не начинать похожую тему напишу сюда. Разыс...   Apr 6 2016, 14:17


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

 


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


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