Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ethernet + Cyclone + Nios
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
dim99
Цитата(vadimuzzz @ Oct 27 2009, 18:35) *
"ну вы блин даете" (ц) ethernet, конечно. MAC синтезируется внутри циклона, а PHY - внешний на плате (какая микруха, кстати?)
или это я переработал? wacko.gif


Вот я точно также и думал, вы не переработали, это я глупые вопросы иногда задаю )

использую marvell 88e1111.
Подсмотрел на альтерафорум :
PLL with two clocks at 125 MHz with 180º of delay: one is connect to 'tx_clk' input of TSE block and the other to pin T8

manual reference говорит следующее:
25 MHz (reference clock); enet_rx_clk Input U5 Cyclone III device pin B14

ENET_GTX_CLK T8 - Clock Outputs

по схематику:
Нажмите для просмотра прикрепленного файла
vadimuzzz
Цитата(dim99 @ Oct 27 2009, 21:48) *
использую marvell 88e1111.
Подсмотрел на альтерафорум :
PLL with two clocks at 125 MHz with 180º of delay: one is connect to 'tx_clk' input of TSE block and the other to pin T8

manual reference говорит следующее:
25 MHz (reference clock); enet_rx_clk Input U5 Cyclone III device pin B14

ENET_GTX_CLK T8 - Clock Outputs

я упустил из виду, что у вас Triple Speed. если я правильно понял, то 25МГц - опора для внутренней PLL в циклоне, умножаем на 5 и сдвигаем на 180º. один из выходов PLL на порт TSE, второй - на внешний пин (опора для PHY?), а rxclk - с PHY. в SOPCе, видимо соединить не получится, придется на схематике соединять. хотя PLL можно в SOPC запихать.
dim99
С возвращением интернета назрел вопрос:

Как определить является ли pin - in или out?
Мануал молчит - просто даны сигналы без указания их направления.

Как определить, какими являются эти пины:
ENET_RX_D[3..0]
ENET_TX_D[3..0]
ENET_TX_EN
ENET_RX_DV

Есть мнение, что output:
ENET_TX_D[3..0]
ENET_TX_EN

input:
ENET_RX_DV
ENET_RX_D[3..0]

enet_rx_clk Input U5 Cyclone III device pin B14 - видимо это все-таки input
vadimuzzz
все правильно
dim99
Начал "отладку" на плате (cyclone III dev kit).

Удалось запихнуть всю конфигурацию в on-chip(на время для обеспечения работоспособности,потом все пойдет во flash\..) в итоге получилась конфигурация такая:
Нажмите для просмотра прикрепленного файла

на топ-левеле в квартусе следующее:
Нажмите для просмотра прикрепленного файла

Во время компиляции вылез warning, что будет time-limited sof - нет лицензии на TSE(у кого есть поделитесь smile.gif ).
После прошивки появилось вот такое окошко:
Нажмите для просмотра прикрепленного файла

Зашел в nios ide - запустил на выполнение => run и он выдал ошибку:
panic: stack alloc
dtrap - needs breakpoint


Понятно что проблема со стэком, может ему его мало?
под stack,heap и read\write data memory выделено 52 Кбайта onchip_mem.

Собственно вопрос в чем: как исправить эту ошибку и где найти лицензию на tse(понятно что не за $)
vadimuzzz
Цитата(dim99 @ Nov 3 2009, 19:23) *
Зашел в nios ide - запустил на выполнение => run и он выдал ошибку:
panic: stack alloc
dtrap - needs breakpoint


Понятно что проблема со стэком, может ему его мало?
под stack,heap и read\write data memory выделено 52 Кбайта onchip_mem.

а проект-то собрался? логи билдера покажите.
да, еще настройки линкера.
dim99
Цитата(vadimuzzz @ Nov 3 2009, 16:34) *
а проект-то собрался? логи билдера покажите.
да, еще настройки линкера.


Проект собрался.
Логи sopc builder:
CODE
Info: onchip_mem: Manually-created SOF and simulation initialization files are required for memory onchip_mem.
Info: ext_flash: Flash memory capacity: 64,0 MBytes (67108864 bytes).
Info: prog_mem: Manually-created SOF and simulation initialization files are required for memory prog_mem.
Info: Wrote C:/study/q9/cycloneIII_3c120_fl_eth/niosciii.sopcinfo
Info: tse_mac: HDL generated
Info: tse_mac: Variation name : tse_mac
Info: tse_mac: Variation language : Verilog HDL
Info: tse_mac: Output directory : C:\study\q9\cycloneIII_3c120_fl_eth
Info: tse_mac: Generating HDL...
Info: tse_mac: Generating MegaCore function top-level...
Info: tse_mac: Adding design files to Quartus II project ...
Info: tse_mac: Updating user's project directory...
Info: tse_mac: Generation successful.
Info: tse_mac: HDL generated
Info: niosciii: Generating QIP file.
Info: Info: *******************************************************************
Info: Info: Running Quartus II Shell
Info: Info: Version 8.1 Build 163 10/28/2008 SJ Full Version
Info: Info: Copyright © 1991-2008 Altera Corporation. All rights reserved.
Info: Info: Your use of Altera Corporation's design tools, logic functions
Info: Info: and other software and tools, and its AMPP partner logic
Info: Info: functions, and any output files from any of the foregoing
Info: Info: (including device programming or simulation files), and any
Info: Info: associated documentation or information are expressly subject
Info: Info: to the terms and conditions of the Altera Program License
Info: Info: Subscription Agreement, Altera MegaCore Function License
Info: Info: Agreement, or other applicable license agreement, including,
Info: Info: without limitation, that your use is for the sole purpose of
Info: Info: programming logic devices manufactured by Altera and sold by
Info: Info: Altera or its authorized distributors. Please refer to the
Info: Info: applicable agreement for further details.
Info: Info: Processing started: Tue Nov 03 18:14:42 2009
Info: Info: Command: quartus_sh -t sopc_add_qip_file.tcl
Info: Info: Evaluation of Tcl script sopc_add_qip_file.tcl was successful
Info: Info: Quartus II Shell was successful. 0 errors, 0 warnings
Info: Info: Peak virtual memory: 47 megabytes
Info: Info: Processing ended: Tue Nov 03 18:14:42 2009
Info: Info: Elapsed time: 00:00:00
Info: Info: Total CPU time (on all processors): 00:00:00
Info: Starting PTF file elaboration.
... здесь слишком много написано что включено в проект
Info: Finished elaborating PTF file.
Executing: C:/altera/81/quartus//sopc_builder/bin/sopc_builder --classic --generate C:/study/q9/cycloneIII_3c120_fl_eth/niosciii.ptf
Info: Starting generation...
...
Altera SOPC Builder Version 8.10 Build 163
Copyright © 1999-2008 Altera Corporation. All rights reserved.
# 2009.11.03 18:16:14 (*) mk_custom_sdk starting
# 2009.11.03 18:16:14 (*) Reading project C:/study/q9/cycloneIII_3c120_fl_eth/niosciii.ptf.
# 2009.11.03 18:16:14 (*) Finding all CPUs
# 2009.11.03 18:16:14 (*) Finding all available components
# 2009.11.03 18:16:14 (*) Reading C:/study/q9/cycloneIII_3c120_fl_eth/.sopc_builder/install.ptf
# 2009.11.03 18:16:14 (*) Found 67 components
# 2009.11.03 18:16:15 (*) Finding all peripherals
# 2009.11.03 18:16:16 (*) Finding software components
# 2009.11.03 18:16:16 (*) (Legacy SDK Generation Skipped)
# 2009.11.03 18:16:16 (*) (All TCL Script Generation Skipped)
# 2009.11.03 18:16:16 (*) (No Libraries Built)
# 2009.11.03 18:16:16 (*) (Contents Generation Skipped)
# 2009.11.03 18:16:16 (*) mk_custom_sdk finishing
# 2009.11.03 18:16:16 (*) Starting generation for system: niosciii.
....................
# 2009.11.03 18:16:18 (*) Running Generator Program for cpu
# 2009.11.03 18:16:23 (*) Checking for plaintext license.
# 2009.11.03 18:16:34 (*) Plaintext license not found.
# 2009.11.03 18:16:34 (*) Checking for encrypted license (non-evaluation).
# 2009.11.03 18:16:37 (*) Encrypted license found. SOF will not be time-limited.
# 2009.11.03 18:16:48 (*) Creating encrypted HDL
# 2009.11.03 18:16:51 (*) Running Generator Program for onchip_mem
# 2009.11.03 18:16:55 (*) Running Generator Program for pioInCntrl1
# 2009.11.03 18:16:57 (*) Running Generator Program for pioInCntrl2
# 2009.11.03 18:17:00 (*) Running Generator Program for pioInData
# 2009.11.03 18:17:02 (*) Running Generator Program for pioOutStatus
# 2009.11.03 18:17:04 (*) Running Generator Program for pioOutData
# 2009.11.03 18:17:06 (*) Running Generator Program for sysid
# 2009.11.03 18:17:07 (*) Running Generator Program for ext_flash
# 2009.11.03 18:17:09 (*) Running Generator Program for descriptor_memory
# 2009.11.03 18:17:11 (*) Running Generator Program for sgdma_tx
# 2009.11.03 18:17:14 (*) Running Generator Program for sgdma_rx
# 2009.11.03 18:17:17 (*) Running Generator Program for sys_clk_timer
# 2009.11.03 18:17:18 (*) Running Generator Program for high_res_timer
# 2009.11.03 18:17:20 (*) Running Generator Program for performance_counter
# 2009.11.03 18:17:22 (*) Running Generator Program for button_pio
# 2009.11.03 18:17:24 (*) Running Generator Program for led_pio
# 2009.11.03 18:17:26 (*) Running Generator Program for jtag_uart
# 2009.11.03 18:17:28 (*) Running Generator Program for tse_mem
# 2009.11.03 18:17:30 (*) Running Generator Program for prog_mem
# 2009.11.03 18:17:34 (*) Making arbitration and system (top) modules.
# 2009.11.03 18:17:50 (*) Generating Quartus symbol for top level: niosciii
# 2009.11.03 18:17:50 (*) Symbol C:/study/q9/cycloneIII_3c120_fl_eth/niosciii.bsf already exists, no need to regenerate
# 2009.11.03 18:17:50 (*) Creating command-line system-generation script: C:/study/q9/cycloneIII_3c120_fl_eth/niosciii_generation_script
# 2009.11.03 18:17:50 (*) Running setup for HDL simulator: modelsim
# 2009.11.03 18:17:50 (*) Setting up Quartus with niosciii_setup_quartus.tcl
c:/altera/81/quartus/bin/quartus_sh -t niosciii_setup_quartus.tcl
Info: *******************************************************************
Info: Running Quartus II Shell
Info: Version 8.1 Build 163 10/28/2008 SJ Full Version
Info: Copyright © 1991-2008 Altera Corporation. All rights reserved.
Info: Your use of Altera Corporation's design tools, logic functions
Info: and other software and tools, and its AMPP partner logic
Info: functions, and any output files from any of the foregoing
Info: (including device programming or simulation files), and any
Info: associated documentation or information are expressly subject
Info: to the terms and conditions of the Altera Program License
Info: Subscription Agreement, Altera MegaCore Function License
Info: Agreement, or other applicable license agreement, including,
Info: without limitation, that your use is for the sole purpose of
Info: programming logic devices manufactured by Altera and sold by
Info: Altera or its authorized distributors. Please refer to the
Info: applicable agreement for further details.
Info: Processing started: Tue Nov 03 18:17:54 2009
Info: Command: quartus_sh -t niosciii_setup_quartus.tcl
Info: Evaluation of Tcl script niosciii_setup_quartus.tcl was successful
Info: Quartus II Shell was successful. 0 errors, 0 warnings
Info: Peak virtual memory: 47 megabytes
Info: Processing ended: Tue Nov 03 18:17:59 2009
Info: Elapsed time: 00:00:05
Info: Total CPU time (on all processors): 00:00:00
# 2009.11.03 18:18:00 (*) Completed generation for system: niosciii.
# 2009.11.03 18:18:00 (*) THE FOLLOWING SYSTEM ITEMS HAVE BEEN GENERATED:
SOPC Builder database : C:/study/q9/cycloneIII_3c120_fl_eth/niosciii.ptf
System HDL Model : C:/study/q9/cycloneIII_3c120_fl_eth/niosciii.v
System Generation Script : C:/study/q9/cycloneIII_3c120_fl_eth/niosciii_generation_script
# 2009.11.03 18:18:00 (*) SUCCESS: SYSTEM GENERATION COMPLETED.


Настройки линкера в nios ide?
Посмотрел в preferences nios ide, но что-то не увидел там похожего на свойтсва линковщика ( пока не знаю, где их искать.
vadimuzzz
Цитата(dim99 @ Nov 3 2009, 21:23) *
Проект собрался.
Настройки линкера в nios ide?
Посмотрел в preferences nios ide, но что-то не увидел там похожего на свойтсва линковщика ( пока не знаю, где их искать.

нет,имелись в виду логи NIOS-IDE при сборке проекта. свойства линкера в Project/Properties (или ПКМ на проекте). какие настройки у System Library
dim99
Так, выкладываю, что есть - свойства system library:
Нажмите для просмотра прикрепленного файла

логи nios ide:
**** Build of configuration Debug for project simple_socket_server_0 ****

make -s all includes
Compiling alt_error_handler.c...
Compiling iniche_init.c...
Compiling led.c...
../led.c: In function `LED7SegLightshowTask':
../led.c:97: warning: unused variable `led_7_seg_val'
Compiling network_utilities.c...
Compiling simple_socket_server.c...
Linking simple_socket_server_0.elf...
Info: (simple_socket_server_0.elf) 326 KBytes program size (code + initialized data).
Info: 1040 Bytes free for stack + heap.
Post-processing to create onchip_mem.hex
Post-processing to create tse_mem.hex
Post-processing to create prog_mem.hex
Hardware simulation is not enabled for the target SOPC Builder system. Skipping creation of hardware simulation model contents and simulation symbol files. (Note: This does not affect the instruction set simulator.)
Post-processing to create ext_flash.flash
============== Software License Reminder ===============

uC/OS-II is provided in source form for FREE evaluation,
for educational use, or for peaceful research. If you
plan on using uC/OS-II in a commercial product you need
to contact Micrium to properly license its use in your
product. Micrium provides ALL the source code on the
Altera distribution for your convenience and to help you
experience uC/OS-II. The fact that the source is provided
does NOT mean that you can use it without paying a
licensing fee. Please help us continue to provide the
Embedded community with the finest software available.
Your honesty is greatly appreciated.

Please contact:

M I C R I U M
949 Crestview Circle
Weston, FL 33327-1848
U.S.A.

Phone : +1 954 217 2036
FAX : +1 954 217 2037
WEB : www.micrium.com
E-mail: Sales@Micrium.com

========================================================
Build completed in 21.719 seconds
vadimuzzz
Цитата(dim99 @ Nov 3 2009, 21:50) *
Так, выкладываю, что есть - свойства system library:
Нажмите для просмотра прикрепленного файла

логи nios ide:

Info: (simple_socket_server_0.elf) 326 KBytes program size (code + initialized data).
Info: 1040 Bytes free for stack + heap.

не уверен, но похоже памяти "маловато будет" (ц). ось наверно еще динамически навыделяет и стек переполнится. а ось вообще нужна? какая задача - пакет туда-сюда кинуть или tcp/ip нужен? если второй вариант, то добавьте внешнюю память, без нее никак.
dim99
Цитата(vadimuzzz @ Nov 3 2009, 19:00) *
не уверен, но похоже памяти "маловато будет" (ц). ось наверно еще динамически навыделяет и стек переполнится. а ось вообще нужна? какая задача - пакет туда-сюда кинуть или tcp/ip нужен? если второй вариант, то добавьте внешнюю память, без нее никак.


Поставили задачу:
- установка соединения по интерфейсу Ethernet
- прием/передача командных пакетов между PC и платой
- прием/передача информационных пакетов

Мне тоже кажется, что мало памяти, фиттер показал, что используется 80% памяти on-chip, думаю докинуть 10% к stack'y и посмотреть как себя вести будет.
Ось выбрал потому что это единственный проект(вариант), который нашел и смог откомпилировать и запустить.

Если есть возможность использовать без rtos, то расскажите как или где посмотреть?
Если сейчас полезу добавлять ddr, думаю не разгребу до января )

Так есть способ оставить tse и убрать rtos?
vadimuzzz
т.е. протокол свой? тогда ось точно ни к чему. вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание. передача аналогично: записать пакет в массив, сделать дескриптор, который на него указывает и передать tx_dma. такой вариант килобайт в 10 упихать можно. но это не самый удобный способ, т.к. доступ будет на самом низком уровне, по MAC-адресам и потребует прав на создание raw_ethernet_socket`ов, что в нормальных осях может делать только админ. поэтому стоит реализовать огрызок tcp/ip: ARP - для преобразования IP-адресов в MAC, ICMP - ping для диагностики и разборку UDP - заголовков. все это еще килобайт 10 займет. в принципе вики достаточно почитать по этим стандартам. детали - в соответствующих RFC, в сети есть переводы на русский. пригодится и снифер, напимер, wireshark. память все-таки стоит поднять, много памяти - это хорошо smile.gif. проидитесь по форуму, это уже обсуждалось.
dim99
Цитата(vadimuzzz @ Nov 4 2009, 06:17) *
поэтому стоит реализовать огрызок tcp/ip


Пока нет возможности написать свой tcp\ip (есть еще учеба), поэтому пытаюсь добить пример SSS.

Нашел новую "фичу" с flash - если установить загрузку nios cpu с ext_flash и взять простой пример hello world, то при debug'e в nios ide ответа от flash не будет.
По крайней мере пробовал несколько раз один и тот же проект.
Если загрузку с on-chip, то есть доступ к flash.

У меня ощущение, что доступ какой-то односторонний к flash - либо из nios ide с загрузкой из on-chip, либо идет загрузка software и обрубается доступ из nios ide к flash.

Теперь при debug'e(загрузка программы из flash) на плате выскакивает такая ошибка:
prep_tse_mac 0
Could not locate flash sector with MAC address.
prepped 1 interface, initializing...
Netinit: calloc failed getting buffer 21
inet startup error: unable to initialize net
panic: IP
dtrap - needs breakpoint
ip_exit: calling func 0x6115784

из network_utilities.c:
Код
error_t get_board_mac_addr(unsigned char mac_addr[6])
{
  error_t error = 0;
  alt_u32 signature;

  /* Get the flash sector with the MAC address. */
  error = FindLastFlashSectorOffset(&last_flash_sector_offset);


Так как программа считывается с ext_flash и (по моей теории) доступа из nios ide к flash нет, то естественно, что считать данные из последнего сектора нельзя.
Вот думаю в рабочей программе, где есть доступ к flash прочитать содержимое flash и затем исправить немного код в network_utilities.c, чтобы подсунуть нужный mac без обращения к flash.
Только вот сомнения есть, что дальше не будет обращений к flash за какими-нибудь параметрами ethernet.
Либо каким-то образом уменьшить код SSS, чтобы влез в on-chip и не ругался на нехватку памяти в стеке там вроде бы обращение к flash проходят нормально.

Еще хочу посмотреть в сторону superloop вроде там обрезали rtos и занимает он меньше.
vadimuzzz
можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час.
dim99
Цитата(vadimuzzz @ Nov 7 2009, 11:59) *
можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час.


Наверноe, придется поднять ddr, а то все больше времени уходит на проверку влезет\не влезет проект в on-chip.
Спасибо за совет.
dim99
В общем добавил к проекту Sram - все пишет\читает.

хочу загружаться с него, чтобы не трогать flash и была возможность считать с него информацию из-под nios ide.
Единственное, когда установил reset vector и exception vector на Sram проект не запустился, а при попытке отладить получил ошибку верификации проекта - оно и понятно, что в sram проекта никакого не было, а только мусор.
Попробовал запустить проект с on-chip а heap, stack, rd\wr поместить в sram - но опять ничего не завелось, хотя led active sram горит.

Полистал an458 Alternative Nios II Boot Methods, но пока еще не понял как проинициализировать sram.

собственно вопрос:
1. как проинициализировать sram
2. почему может неадекватно работать stack в system library размещенный в sram
vadimuzzz
Цитата
хочу загружаться с него, чтобы не трогать flash и была возможность считать с него информацию из-под nios ide.

загружаться с нее не получится, только код исполнять. лучше всего так:
-reset нацелить на flash
-exception на SRAM
-в настройках System Library - все на SRAM
тогда при подаче питания код будет считываться из flash в SRAM, а потом ему будет передаваться управление. flash будет доступна на запись/чтение. это по пункту 1. по второму - что значит неадекватно?
dim99
Цитата(vadimuzzz @ Nov 12 2009, 16:53) *
загружаться с нее не получится, только код исполнять. лучше всего так:
-reset нацелить на flash
-exception на SRAM
-в настройках System Library - все на SRAM
тогда при подаче питания код будет считываться из flash в SRAM, а потом ему будет передаваться управление. flash будет доступна на запись/чтение. это по пункту 1. по второму - что значит неадекватно?


для проверки работоспособности sram использую рабочий проект(почему-то не доверяю простой записи\чтению в nios ide smile.gif ), который выводит изображение на экран tft-монитора.
Когда загрузка идет с on-chip все в порядке выводится именно то, что необходимо.
при задании sram в свойствах system library - экран становится серым (хотя причины могут быть и другими).

Раз нельзя so sram грузиться значит не судьба.

В общем сделаю, как вы посоветовали с system library и буду ковырять network_utilities.c, чтоб подсунуть ip и mac.
vadimuzzz
Цитата(dim99 @ Nov 12 2009, 21:14) *
Когда загрузка идет с on-chip все в порядке выводится именно то, что необходимо.
...
Раз нельзя so sram грузиться значит не судьба.
...

видимо, тут путаница возникла. on-chip и off-chip ничем не отличаются
Цитата
при задании sram в свойствах system library - экран становится серым (хотя причины могут быть и другими).

наверняка другие. вообще это моветон, подсовывать полуработающее железо в большую программу. отладьте железо на простых тестах.
dim99
Цитата(vadimuzzz @ Nov 12 2009, 18:26) *
видимо, тут путаница возникла. on-chip и off-chip ничем не отличаются


Что вы имели в виду, чем они не отличаются друг от друга?

Попробовал sram в свойствах system library, а под код оставил on-chip, к сожалению, запустить пример simple socket server не удалось - в консоль вывел 5 символов в какой-то кодировке квадратиками.
Может неправильно подключил sram?
Или 100Mhz для него много, хотя в manual'e 104 предел.

вот такая память: 32 MB (2 M × 16) итого 4Mбайта.
в sopc builder взял компонент IDT71V16 - memory size - 4096 Kb.
использую вместе с flash, поэтому в tristate bridge объединил адреса.

В hello world пишет и читает.
При загрузке проекта с sram в system library светится SRAM LED ACTIVE - то есть max II его видит.
Как его протестировать на правильность работы в sytem library?
vadimuzzz
Цитата(dim99 @ Nov 13 2009, 23:09) *
Что вы имели в виду, чем они не отличаются друг от друга?

с точки зрения ниоса - один фиг. ну может у внешнего ОЗУ латентность повыше.
Цитата
Попробовал sram в свойствах system library, а под код оставил on-chip,

это как? настройки system library в студию. на фига теперь он-чип, внешней ведь хватает?

Цитата
В hello world пишет и читает.
При загрузке проекта с sram в system library светится SRAM LED ACTIVE - то есть max II его видит.
Как его протестировать на правильность работы в sytem library?

пишет и читает память?

давайте еще раз: оставить только флеш и внешнее ОЗУ - так работает?(все секции программы запихать в ОЗУ, ресет на флеш)
dim99
Цитата(vadimuzzz @ Nov 14 2009, 17:01) *
это как? настройки system library в студию. на фига теперь он-чип, внешней ведь хватает?


пишет и читает память?

давайте еще раз: оставить только флеш и внешнее ОЗУ - так работает?(все секции программы запихать в ОЗУ, ресет на флеш)


Внешняя память - подключенная sram 4мбайта.

1.Оставил flash и sram.
Reset на flash, exception на sram.
Свойства system library все на sram указывают.
Прошиваю flash кодом сформированным - cfi_flash.flash.
Запускаю run hardware - загорается led active sram, в консоль выводится непонятной кодировки 5 символов - квадратиков и все на том завершается.

2.Потом решил проверить sram.
reset и exception на on-chip.
В свойствах system library только stack указывает на sram, все остальное на on-chip - в итоге при запуске run - те же символы в консоле.

вот поэтому думаю, что что-то с sram не то.


в hello world читает и пишет исправно в sram.
vadimuzzz
Цитата(dim99 @ Nov 14 2009, 23:01) *
Reset на flash, exception на sram.
Свойства system library все на sram указывают.
Прошиваю flash кодом сформированным - cfi_flash.flash.
Запускаю run hardware - загорается led active sram, в консоль выводится непонятной кодировки 5 символов - квадратиков и все на том завершается.

придется отладчик запускать пошаговый
Цитата
2.Потом решил проверить sram.
reset и exception на on-chip.
В свойствах system library только stack указывает на sram, все остальное на on-chip - в итоге при запуске run - те же символы в консоле.
вот поэтому думаю, что что-то с sram не то.

вряд ли
Цитата
в hello world читает и пишет исправно в sram.

подтверждает сказанное выше. т.е. порядок байт не меняет, пишет/читает везде? hello world, если разместить в off-chip пашет? значит надо этот сервер ковырять отладчиком
dim99
Цитата(vadimuzzz @ Nov 15 2009, 08:15) *
hello world, если разместить в off-chip пашет?


Вот этого еще не пробовал, в понедельник проведу все тесты. чтоб точно знать, где мой косяк.
dim99
В общем на время решил отказаться от SSS.

Уважаемый vadimuzzz можно чуть попродробнее про
Цитата
вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание
vadimuzzz
код можно посмотреть в драйвере, что идет в комплекте с ниос-иде. там есть функции передачи пакета, что-то вроде raw_eth_send и обработчик прерываний на прием. прерывания на передачу не особо нужны. я брал код оттуда и выбрасывал все лишнее. все, что нужно есть в описании на контроллер sgdma в 5 томе квартус-хендбука. ну и на PHY почитать описание, какие там регистры, дефолтные установки. для начала - проинициализировать PHY. функция инициализации, что идет с драйвером поддерживает несколько микросхем, если там нет вашей, то сделать по аналогии. по памяти не скажу какие точно файлы надо ковырять, надо поискать папки типа triple_speed_ethernet, завтра на работе уточню.
upd:
нашел сорцы, правда не свежие, нет реализации tse_mac_raw_send. исходники родного драйвера лежат в ip/triple_speed_ethernet/lib
dim99
Цитата(vadimuzzz @ Nov 16 2009, 19:17) *
проинициализировать PHY. функция инициализации, что идет с драйвером поддерживает несколько микросхем, если там нет вашей, то сделать по аналогии.


Хотел уточнить насчет PHY. использую marvell 88E1111, она идет по дефолту в tse. документации по ней нет у меня.
вот с ее инициализацией парюсь.
если сделать вот так, то по идее она должна проинициализироваться (все выдрал из triple_speed_ethernet.c)?:
Цитата
int PhyDevInit(){
alt_tse_phy_profile MV88E1111 = {"Marvell 88E1111", /* Marvell 88E1111 */
MV88E1111_OUI, /* OUI */
MV88E1111_MODEL, /* Vender Model Number */
MV88E1111_REV, /* Model Revision Number */
0x11, /* Location of Status Register */
14, /* Location of Speed Status */
13, /* Location of Duplex Status */
10, /* Location of Link Status */
&marvell_phy_cfg, /* Function pointer to configure Marvell PHY */
};
alt_tse_phy_add_profile(&MV88E1111);
return 0;//success
}

int marvell_phy_cfg(np_tse_mac *pmac) {

alt_u16 dat;

/* If there is no link yet, we enable auto crossover and reset the PHY */
if((IORD(&pmac->mdio1.STATUS, 0) & PCS_ST_an_done) == 0) {
//tse_dprintf(5, "MARVELL : Enabling auto crossover\n");
IOWR(&pmac->mdio1.CONTROL, 16, 0x0078);
//tse_dprintf(5, "MARVELL : PHY reset\n");
dat = IORD(&pmac->mdio1.CONTROL, 0);
IOWR(&pmac->mdio1.CONTROL, 0, dat | (1<<15));
}

return 0;
}

int alt_tse_phy_add_profile(alt_tse_phy_profile *phy){
alt_32 i;

/* search PHY profile for same ID */
for(i = 0; i < phy_profile_count; i++)
{
if(pphy_profiles[i]->oui == phy->oui && pphy_profiles[i]->model_number == phy->model_number)
{
//tse_dprintf(4, "WARNING : PHY OUI 0x%06x, PHY Model Number 0x%02x already exist in PHY profile\n", (int) phy->oui, phy->model_number);
//tse_dprintf(4, "In case of same PHY OUI and PHY Model Number in profile, first added PHY setting will be used\n");
}
}

/* Allocate memory space to store the profile */
pphy_profiles[phy_profile_count] = (alt_tse_phy_profile *) malloc(sizeof(alt_tse_phy_profile));
if(!pphy_profiles[phy_profile_count]) {
//tse_dprintf(1, "ERROR : Unable to allocate memory for pphy_profile[%d]\n", phy_profile_count);
return -1;
}

/* Store PHY information */
*pphy_profiles[phy_profile_count] = *phy;
strcpy(pphy_profiles[phy_profile_count]->name, phy->name);

phy_profile_count++;

return phy_profile_count - 1;
}
vadimuzzz
а, марвел. гадкая конторка, даташиты под NDA... скорее всего должны пройти дефолтные настройки, фактически там надо только пару контрольных регистров зашить. включить там автоопределение всего (линк, скорость, полярность) и сбросить трансивер. вроде это и делается. потом нужно воткнуть кабель и почитать статусные регистры. ну еще имеет смысл начать с регистра, где лежит кодовый номер микросхемы (ее тип, ревизия). основные регистры (их всего штук 6) у всех PHY одинаковые, это стандарт. посмотрите в даташите на какой-нибудь аналог, м.б. микреловский, они даташиты дают. вот с vendor specific регистрами - беда, но основные фичи должны быть доступны и без них. вот уж не знаю на кой икс альтера ставит такие микросхемы. да, всякие там структуры, тоже не нужны, я константы тупо забил.
dim99
Цитата(vadimuzzz @ Nov 18 2009, 15:46) *
а, марвел. гадкая конторка, даташиты под NDA... скорее всего должны пройти дефолтные настройки, фактически там надо только пару контрольных регистров зашить. включить там автоопределение всего (линк, скорость, полярность) и сбросить трансивер. вроде это и делается. потом нужно воткнуть кабель и почитать статусные регистры. ну еще имеет смысл начать с регистра, где лежит кодовый номер микросхемы (ее тип, ревизия). основные регистры (их всего штук 6) у всех PHY одинаковые, это стандарт. посмотрите в даташите на какой-нибудь аналог, м.б. микреловский, они даташиты дают. вот с vendor specific регистрами - беда, но основные фичи должны быть доступны и без них. вот уж не знаю на кой икс альтера ставит такие микросхемы. да, всякие там структуры, тоже не нужны, я константы тупо забил.


То есть для инициализации нужно воспользоваться MDIO?
Если так, то manual по cIII дает распиновку только на
ENET_MDC
ENET_MDIO
и ENET_MDIO как вход для nios'a. как тогда что-либо записать в PHY или он типа bidir?

Из sources получается доступ можно организовать таким образом:

IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,PHY,0x01)
где PHY - это адрес MDIO или как пишет manual cIII (The MDIO address of the PHY device is configured to the value 18 (0x12))?

а регистры расписаны вроде в ug_ethernet:
Control
Status
PHY_ID1
PHY ID2
Adv
RemAdv

А вообще внешне как-нибудь проявляется инициализация PHY, может led загорится или необязательно?
vadimuzzz
ENET_MDIO - двунаправленная, там только к ниосу буфер прикрутить надо внешний(у самого ниоса будут mdio_input,mdio_output и mdio_oen), в мануале есть картинка. PHY в IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,PHY,0x01) это адрес трансивера, их м.б. несколько на шине. можно тупо в цикле прогнать от 0 до 31 и читать регистр PHY_ID1. если не 0 - значит адрес тот. те регистры, что вы написали - это и есть стандартные, про которые я выше говорил, они есть у любого PHY. кроме них еще есть фирменные "фичи", но в случае марвела это, видимо, страшная тайна smile.gif
dim99
Цитата(vadimuzzz @ Nov 18 2009, 18:36) *
ENET_MDIO - двунаправленная, там только к ниосу буфер прикрутить надо внешний(у самого ниоса будут mdio_input,mdio_output и mdio_oen), в мануале есть картинка. PHY в IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,PHY,0x01) это адрес трансивера, их м.б. несколько на шине. можно тупо в цикле прогнать от 0 до 31 и читать регистр PHY_ID1. если не 0 - значит адрес тот. те регистры, что вы написали - это и есть стандартные, про которые я выше говорил, они есть у любого PHY. кроме них еще есть фирменные "фичи", но в случае марвела это, видимо, страшная тайна smile.gif


Извините меня за наскальные рисунки, но так я быстрей разберусь.
Что за элементы в виде треугольников - это alt_buf(его можно использовать?) и правильная ли задумка внешнего буффера или это отдельный элемент, не совсем пойму?
Нажмите для просмотра прикрепленного файла

и еще вопрос. что такое timing constraints и нужны ли они в проекте, а то начитаюсь про них на alteraforum.com вот и думаю...
vadimuzzz
Цитата(dim99 @ Nov 18 2009, 22:52) *
Извините меня за наскальные рисунки, но так я быстрей разберусь.
Что за элементы в виде треугольников - это alt_buf(его можно использовать?) и правильная ли задумка внешнего буффера или это отдельный элемент, не совсем пойму?

tri-state буфер. megafunctions/gates/bus_tri
Цитата
и еще вопрос. что такое timing constraints и нужны ли они в проекте, а то начитаюсь про них на alteraforum.com вот и думаю...

временные ограничения, в которые фиттер должен вписать проект. как минимум надо задать ограничения по частоте для всех клоков.
частоты для 3-го циклона здесь невелики, но если кристалл почти заполнен, возникнут проблемы.
Reanimator++
Доброго дня!

Есть измерительные платы с ПЛИС, работающие в термостате в диапазоне от +50 до +100 градусов цельсия.
Пока все сделано на "рассыпухе" - измеритель на ПЛИС, МК extended диапазона, CAN интерфейс наружу, внешняя коробочка с Ethernet к компу.

Есть желание все эти функции запихнуть внутрь ПЛИС, запустив там NIOS и добавив Ethernet PHY.

Поискав немного компоненты extended диапазона понял что это непросто...
Имеющие опыт реализации подобного, поскажите пожалуйста SRAM (или другой RAM для NIOS) и Ethernet PHY extended диапазона температур.. (трансформаторы эзернета вроде при 100 живут нормально)..

требования к скорости обмена отсутствуют.
Ethernet хочется из-за развязки, длины и удобства адресации (IP).
vadimuzzz
Цитата(Reanimator++ @ Nov 22 2009, 01:34) *
Поискав немного компоненты extended диапазона понял что это непросто...

непросто, но не невозможно smile.gif

ethernet PHY: http://www.national.com/pf/DP/DP83848VYB.html#Overview

SRAM: http://www.issi.com/products-extended-temperature-sdram.htm

FPGA: http://www.altera.com/products/devices/cyc...-mkts-auto.html
dim99
Появились первые интересные результаты работы с ethernet.

В общем после hard reset PHY начинает в режиме auto-negotiation обмениваться пакетами с PC.
точнее сказать, PHY принимает пакеты от PC.

Для обеспечения работы с PHY в свойствах PC lan adapter выставил full duplex и 100 mbit.
После автоопределения PHY начинает моргать показывая. что работает именно в этом режиме - 100 duplex, как раз то, что поддерживает на данный проект мой fpga проект.

инициализацию PHY проводить не могу, потому xj не знаю по каким регистрам чего находится, вот хочу сегодня посмотреть lgngibn на какую-нибудь Gigabbit микросхему.
смотрел lan91c1111 - но она 100 mbit и номера битов в контрольном регистре для выставления скорости явно отличаются от marvell PHY.

В общем подправил код для отправки с tse_mac driver и пытаюсь отправить пакет через tse_mac_raw_send.
смотрю в wireshark - приходят пакеты с правильным количеством байтов, но заполненные нулями и определенными как FC (failed)

естественно, что надо бы еще
1. определить регистры PHY (пока не знаю какие) - доступ через MDIO настроен.
2. Проверить TSE_MAC надо, вдруг где недосмотрел
3. mem_to_stream от sgdma_tx вроде правильно формирует дескриптор, адрес для данных правильно выставлен.

Какие могут варианты неправильно формирования или подключения чего, что так пакеты передаются?
Reanimator++
Цитата(vadimuzzz @ Nov 22 2009, 10:59) *
непросто, но не невозможно smile.gif


Спасибо, эти компоненты я тоже находил, есть проблемы в цене и доставабельности у National.
я создал отдельную тему по своему вопросу - http://electronix.ru/forum/index.php?showtopic=69863
vadimuzzz
Цитата(dim99 @ Nov 22 2009, 22:35) *
В общем подправил код для отправки с tse_mac driver и пытаюсь отправить пакет через tse_mac_raw_send.
смотрю в wireshark - приходят пакеты с правильным количеством байтов, но заполненные нулями и определенными как FC (failed)

естественно, что надо бы еще
1. определить регистры PHY (пока не знаю какие) - доступ через MDIO настроен.
2. Проверить TSE_MAC надо, вдруг где недосмотрел
3. mem_to_stream от sgdma_tx вроде правильно формирует дескриптор, адрес для данных правильно выставлен.

Какие могут варианты неправильно формирования или подключения чего, что так пакеты передаются?

начать лучше с према пакета, увидите какую структуру имеет правильный пакет. а так навсуидку 2 варианта. PHY может считать/не считать CRC; может добивать/не добивать пакет нулями до нужной длины. выкладывайте дамп, посмотрим. да, wireshark тип ошибки указывает.

Цитата(Reanimator++ @ Nov 23 2009, 01:48) *
Спасибо, эти компоненты я тоже находил, есть проблемы в цене и доставабельности у National.
я создал отдельную тему по своему вопросу - http://electronix.ru/forum/index.php?showtopic=69863

еще
http://www.micrel.com/applications/auto/Et..._Automotive.pdf

http://www.smsc-ais.com/AIS/content/view/843/810

hint: ищите по automotive ethernet
dim99
Где бы найти описание регистров Marvell 88e1111, посмотрел другие гигабитные микросхемы - совсем другие адреса регистров по сравнению с тем lan91c111 и intel 82575.

или какую другую микросхему посмотреть, у которой будет схожее расположение адресов регистров для контрольного и статусного особенно.
vadimuzzz
гляньте в аттаче. судя по коду, регистры такие же как у 88e1000
dim99
Все равно пока не пойму толком.
Доступ у меня только из-под MDIO осуществляется и через них надо настроить PHY.
Нашел PHYWORX 10/100/1000 Ethernet PHY Daughter Board Reference Guide и если ему верить, то
Цитата
MDIO Registers
The PHY provides 32 internal management registers that can be accessed using the Management
Interface (MDIO). The Management Device Address of the PHY is configured to the value 18
(0x12).

Table 5: MDIO Registers Description
Register Name Description (Bits) Type
Reset
Value
0 Control
15: 1=PHY Reset, 0=normal operation. (SC)
14: Loopback. 1=enable loopback, 0=normal operation
13: Speed Selection (together with Bit 6):
6:13 = "11": reserved
= "10": 1000
= "01": 100
= "00": 10
12: Enable Auto-Negotiation (only enables the control state
machine, does not trigger the auto negotiation). If
disabled (0), bits 6,8,13 define the operation.
11: Power down (1) or normal operation (0)
10: Isolate PHY from GMII/MII (if 1)
9: Restart Autonegotiation. If set (1) will restart the
autonegotiation process.
8: set full duplex mode (1) or half-duplex (0)
7: Enable collision test signal (1)
6: Speed Selection (see Bit 13 above).
5:0 reserved. Write 0, ignore on read


т.е. обратившись к 0 регистру через IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0/*mdio_addr0*/,0x0); я могу достучаться до контрольного регистра и настроить вышеприведенные параметры.
Это успешно работает, потому что считал PHY_id =0x0141 как и про reference guide выше совпадает.

Смотрю в E1000_defines.h:
Цитата
/* PHY 1000 MII Register/Bit Definitions */
/* PHY Registers defined by IEEE */
#define PHY_CONTROL 0x00 /* Control Register */
#define PHY_STATUS 0x01 /* Status Register */
#define PHY_ID1 0x02 /* Phy Id Reg (word 1) */
#define PHY_ID2 0x03 /* Phy Id Reg (word 2) */
#define PHY_AUTONEG_ADV 0x04 /* Autoneg Advertisement */
#define PHY_LP_ABILITY 0x05 /* Link Partner Ability (Base Page) */
#define PHY_1000T_CTRL 0x09 /* 1000Base-T Control Reg */
#define PHY_1000T_STATUS 0x0A /* 1000Base-T Status Reg */


Все то же самое.
Цитата
включить там автоопределение всего (линк, скорость, полярность) и сбросить трансивер

а где взять полярность или ее настройка не критична?
vadimuzzz
Цитата(dim99 @ Nov 23 2009, 21:24) *
а где взять полярность или ее настройка не критична?

в том файле, что выше, есть и про полярность, как раз marvel-specific. но если Auto Negotiate проходит, то все автоматом выставляется (как линк/дуплекс). полярность нужна, если какой-нибудь олух кабель неправильно обожмет.
dim99
Сегодня попробовал забить ему жестко без всякого auto-neg параметры для 100 mbit.
Сначала делаю hard reset для PHY - 10 ms(с альтерафорум там висит скрин из даташита на микросхему).
загораются led и он начинает принимать пакеты от сети в режиме auto-neg, потом забиваю параметры для 100 mbit выключаю auto-neg и он тухнет.
не знаю. может ему soft reset после этой операции нужен.

в общем остался на auto-neg на 100 mbit full duplex.

wireshark принимает вот такой пакет:
Цитата
8 Frame 69 (126 bytes on wire, 126 bytes captured) Arrival Time: Nov 24, 2009 13:50:20.538005000
[Time delta from previous captured frame: 0.000003000 seconds]
[Time delta from previous displayed frame: 0.000003000 seconds]
[Time since reference or first frame: 1638.742094000 seconds]
Frame Number: 69 Frame Length: 126 bytes capture Length: 126 bytes
[Frame is marked: False]
[Protocols in frame: eth:mdshdr:fc] 0
Ethernet II, src: 00:07:ab:f0:Od:ba (00:07:ab:f0:Od:ba),
Dst: 00:00:00_00:00:00 (00:00:00:00:00:00) S
Destination: 00:00:00_00:00:00 (00:00:00:00:00:00)
Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
0 = IG bit: individual address (unicast)
0 = LG bit: Globally unique address (factory default)
Ј[source: 00:07:ab:f0:Od:ba (00:07:ab:f0:Od:ba)
Address: 00:07:ab:f0:Od:ba (00:07:ab:f0:Od:ba)
0 = IG bit: individual address (unicast)
0 = LG bit: Globally unique address (factory default)
Type: unknown (0x0000)
Trai1er: 000000000000000000000000000000000000000000000000...
Frame check sequence: 0x00000000 [incorrect, should be 0xd762142d] В
mds Header(unknown(0)/unknown(0)) В
mds Header
...0 0000 0000 0000 = Packet Len: 0
0000 0000 00.. = Dst index: 0x0000
00 0000 0000 = src index: 0x0000
0000 0000 0000 = VSAN: 0
В mds Trailer
eof: unknown (0) CRC: 0x00000000

количество байтов принимается правильное и даже сегодня получил mac адрес, но сам пакет отнюдь не нулевой должен быть.
подозрение, что неправильно формируется дескриптор для sgdma из-за чего и не может нормально пакет передать.

где бы посмотреть как правильно настроить sgdma и создать дескриптор для передачи данных?
vadimuzzz
смотреть в драйвере, м.б. тут фокусы с кэшем. смущает еще нулевая CRC, по идее PHY должен ее сам считать при правильных настройках. ну и ман по sgdma почитать. 5-й том квартус-хендбука. а инициализация точно нормально прошла? обнародуйте статусные регистры. а то я помню 2 недели вдоль и поперек TSE изучал, даже на опенкорес ушел, а дело было в хреновом кабеле.
maior
Я убил много времени пытаясь запустить этот марвел-аляску (88E1111), встроенный в упомянутый ЕДК 120К - и бросил это бесполезное занятие. Поставил DP83848 Ethernet адаптер (от MoreThanIP) через HSMC-СантаКруз переходник - и сразу все заработало как надо, включая Simple Socket Server (Iniche+MicroC/OS, etc). Интересно, есть такие гении, которым удалось таки разморозить эту аляску?
dim99
Цитата(vadimuzzz @ Nov 24 2009, 19:23) *
смотреть в драйвере, м.б. тут фокусы с кэшем. смущает еще нулевая CRC, по идее PHY должен ее сам считать при правильных настройках. ну и ман по sgdma почитать. 5-й том квартус-хендбука. а инициализация точно нормально прошла? обнародуйте статусные регистры. а то я помню 2 недели вдоль и поперек TSE изучал, даже на опенкорес ушел, а дело было в хреновом кабеле.


Есть ли смысл подключить signaltap и посмотреть передаются ли данные к PHY?
инициализацию и прочее постараюсь завтра выложить.

Цитата(maior @ Nov 24 2009, 22:28) *
Я убил много времени пытаясь запустить этот марвел-аляску (88E1111), встроенный в упомянутый ЕДК 120К - и бросил это бесполезное занятие. Поставил DP83848 Ethernet адаптер (от MoreThanIP) через HSMC-СантаКруз переходник - и сразу все заработало как надо, включая Simple Socket Server (Iniche+MicroC/OS, etc). Интересно, есть такие гении, которым удалось таки разморозить эту аляску?


Без паники ) я уже плююсь пакетами, осталось разобраться почему нулевыми.
maior
Цитата(dim99 @ Nov 24 2009, 22:40) *
Без паники ) я уже плююсь пакетами, осталось разобраться почему нулевыми.


Да у меня он тоже дышал - но на ладан. Simple Socket Server так и не заработал.
vadimuzzz
Цитата(dim99 @ Nov 25 2009, 01:40) *
Есть ли смысл подключить signaltap и посмотреть передаются ли данные к PHY?

конечно, правда имена у сигналов там того, ну хотя бы на участке sgdma - mac поглядеть.
dim99
Что-то с разбега не получилось за signal tap засесть, завтра попробую это сделать.

Предложение по поводу принять пакет - хорошее. только вот как и чем из-под винды его отправить?
vadimuzzz
Цитата(dim99 @ Nov 25 2009, 19:37) *
Что-то с разбега не получилось за signal tap засесть, завтра попробую это сделать.

Предложение по поводу принять пакет - хорошее. только вот как и чем из-под винды его отправить?

попинговать какой-нибудь левый адрес, которого в сети нет. пойдут ARP-пакеты с MAC-ом сетевухи в Src и broadcast(FF:FF:FF:FF:FF:FF) в Dst полях. см. http://ru.wikipedia.org/wiki/ARP
dim99
ну не может же быть, что ему не нравится память, отведенная для хранения принятых данных on-chip вместо ddr как в примере.
вот думаю выложить sopc, вдруг что-то напутал:
Нажмите для просмотра прикрепленного файла

Кстати, после отправки пакета проверяю некоторые регистры о том, как отправился пакет:
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x068);//frame trans 2
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x0F0);//octets trans 0
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x08C);//ifOutErrors 0
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x088);//ifInErrors 0

количество переданных пакетов - 2 все правильно - при формировании descriptor выставляю свойство start пакета.
расстраивает, что количество переданных октетов - 0

вот и получается, что передано 2 пакета удачно, но без полезной нагрузки и без ошибок. как так может быть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.