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

 
 
26 страниц V  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
> Ethernet + Cyclone + Nios
dim99
сообщение Nov 30 2009, 08:56
Сообщение #121


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



alt_u32 sgdma_res = 0;
sgdma_res = IORD_ALTERA_AVALON_SGDMA_STATUS(SGDMA_TX_BASE);

Пишет 0 после прохода.

После формирования та же ошибка в dec = -119
Прикрепленный файл  hello_world.rar ( 5.45 килобайт ) Кол-во скачиваний: 152
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 30 2009, 10:03
Сообщение #122


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



по поводу "ошибки 119" это не баг, это фича:
alt_avalon_sgdma_construct_mem_to_stream_desc() взводит бит OWNED_BY_HW у текущего дескриптора, а alt_avalon_sgdma_check_descriptor_status() в этом случае возвращает не 0 :
Цитата
Returns 0 if the descriptor is error-free, not owned by hardware, or a previously requested transfer
completed normally. Other return codes are defined in errno.h.

копаем дальше - tse_mac_sTxWriteM(desc);
предлагаю вариант с дескрипорами как в альтеровском драйвере
Код
alt_sgdma_descriptor *desc = (alt_sgdma_descriptor *) DESCRIPTOR_MEMORY_BASE;
alt_sgdma_descriptor *currdescriptor_ptr;
alt_sgdma_descriptor *nextdescriptor_ptr;
...
currdescriptor_ptr =  &desc[ALTERA_TSE_FIRST_RX_SGDMA_DESC_OFST];
nextdescriptor_ptr = (alt_sgdma_descriptor *) IORD_ALTERA_TSE_SGDMA_DESC_NEXT(currdescriptor_ptr);
currdescriptor_ptr->status&=~ALTERA_AVALON_SGDMA_DESCRIPTOR_STATUS_TERMINATED_BY_EOP_MSK;
...
alt_avalon_sgdma_construct_mem_to_stream_desc( //&transmit_descriptors[buffer_counter]
           /*(alt_sgdma_descriptor *)*/ &desc[0], // descriptor I want to work with
           /*(alt_sgdma_descriptor *)*/ &desc[1],// pointer to "next"
           (alt_u32 *) ActualData,                     // starting read address
           (length),                                  // # bytes
           0,                                        // don't read from constant address
           1,                                        // generate sop
           1,                                        // generate endofpacket signal
           0);
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 1 2009, 09:31
Сообщение #123


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



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

хехе, получилось smile.gif заменил вызов alt_avalon_sgdma_do_sync_transfer() следующим кодом:
Код
  IOWR_ALTERA_AVALON_SGDMA_CONTROL (TX_SGDMA_BASE/*mi->tx_sgdma->base*/, 0);
  IOWR_ALTERA_AVALON_SGDMA_STATUS (TX_SGDMA_BASE/*mi->tx_sgdma->base*/, 0xFF);
  // Start SGDMA (blocking call)
  IOWR_ALTERA_AVALON_SGDMA_NEXT_DESC_POINTER(TX_SGDMA_BASE,(alt_u32) txDesc);
  IOWR_ALTERA_AVALON_SGDMA_CONTROL (TX_SGDMA_BASE,
        ALTERA_AVALON_SGDMA_CONTROL_RUN_MSK|
        ALTERA_AVALON_SGDMA_CONTROL_STOP_DMA_ER_MSK|
        IORD_ALTERA_AVALON_SGDMA_CONTROL(TX_SGDMA_BASE));
  while ( (IORD_ALTERA_AVALON_SGDMA_STATUS(TX_SGDMA_BASE/*mi->tx_sgdma->base*/) & ALTERA_AVALON_SGDMA_STATUS_BUSY_MSK) ) {
  }
  IOWR_ALTERA_AVALON_SGDMA_CONTROL(TX_SGDMA_BASE,
        IORD_ALTERA_AVALON_SGDMA_CONTROL(TX_SGDMA_BASE)&~ALTERA_AVALON_SGDMA_CONTROL_RUN_MSK);

и вуаля
upd: нашел ошибку у себя - sgdma_tx_dev = alt_avalon_sgdma_open("/dev/tx_sgdma"); возвращала 0 из-за опечатки, исправил, теперь alt_avalon_sgdma_do_sync_transfer() пашет, пакеты идут. на всякий случай код в аттаче.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  eth_driver.c.zip ( 5.51 килобайт ) Кол-во скачиваний: 188
 
Go to the top of the page
 
+Quote Post
dim99
сообщение Dec 1 2009, 15:25
Сообщение #124


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Попытался предыдущим способом сделать - та же песня.

Завидую вам, что получилось )
Спасибо за аттач, в ближайшие дни попробую, пока готовлюсь к конференции, времени практически нет =/
Go to the top of the page
 
+Quote Post
dim99
сообщение Dec 7 2009, 11:47
Сообщение #125


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Появился срочный вопрос, есть ли возможность прошить flash без max II?

появится собственная плата, на которой нет max II но soft проект хотелось бы хранить на flash.
Посмотрел есть вохможность вроде бы через parallel flash loader заливать проекты, но пока что вижу только pof и sof, а нужен именно flash.

Может быть есть конвертер по типу sof2flash только наоборот flash2sof?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 7 2009, 15:36
Сообщение #126


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



maxii - это распаянный на плате USB-blaster, он не подключен к FLASH. подключен он к циклону через JTAG. FLASH шьется при помощи PFL (см. AN478). соответственно, плате д.б. JTAG, этого достаточно для всего. см. также cyclone3-handbook, стр. 9-33.
Go to the top of the page
 
+Quote Post
dim99
сообщение Dec 7 2009, 17:37
Сообщение #127


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Пролистал 478, но до конца не разобрался.

На макетной плате прошиваю *.flash через nios ide.
теперь на новой не dev kit плате хочу прошить тот же *.flash, чтобы с флэшки грузился soft проекта.
Jtag на ней есть.

PFL шьет pof, как я понял.
Что для прошивки *.flash надо?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 8 2009, 01:43
Сообщение #128


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Dec 7 2009, 23:37) *
Пролистал 478, но до конца не разобрался.

На макетной плате прошиваю *.flash через nios ide.
теперь на новой не dev kit плате хочу прошить тот же *.flash, чтобы с флэшки грузился soft проекта.
Jtag на ней есть.

PFL шьет pof, как я понял.
Что для прошивки *.flash надо?

дык и на новой будете шить через nios-ide. вся разница в том, что usb-blaster(или другой программатор) будет внешний. flash-programmer в nios-ide генерит все pof`ы и что-там-еще-надо, а потом заливает это по цепочке PC->JTAG->Cyclone3(с ядром ниос)->Flash. при самом первом включении зальете sof с ядром ниоса в циклон, после этого спокойно пользуетесь flash-programmer`ом
Go to the top of the page
 
+Quote Post
dim99
сообщение Dec 8 2009, 06:16
Сообщение #129


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Огромное спасибо за пояснение.
Go to the top of the page
 
+Quote Post
dim99
сообщение Jan 27 2010, 14:10
Сообщение #130


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Продолжил работу с CIII и ethernet.

Разобрался с отправкой пакета. Оказалось необходимо инициализировать массив данных.

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

Возникла другая проблема: при пошаговой отладке пакет успешно отправляется вместе с данными.
Когда пытаюсь пройти до контрольной точки весь процесс - инициализацию PHY, настройку MAC и отправку пакета, то пакет передается без данных.
видимо что-то не успевает подготовиться, пока так и не выяснил, что именно.
Хотя ставил и задержку после инициализации всего, что можно.

Смотрю в wireshark:
пакет без данных - если не инициализировать массив передаваемых данных и когда в run или до контрольной точки через f8 прогоняю
12:22:23,424,452 ETHER
|0 |00|00|00|00|00|00|00|07|ab|f0|0d|ba|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|0
0|
00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|
где 00 07 ab f0 0d ba mac адрес TSE

пакет с данными - если через debug и f6
+---------+---------------+----------+
12:25:12,769,879 ETHER
|0 |02|03|04|05|06|07|00|07|ab|f0|0d|ba|0e|0f|10|11|12|13|14|15|16|17|18|19|1a|1b|1c|1d|1e|1f|20|21|22|23|24|25|26|27|2
8|29|
2a|2b|2c|2d|2e|2f|00|00|00|00|00|00|00|00|00|00|00|00|00|00|

Вероятно не поспевает кто-то, может dma...
Сейчас хотелось бы разобраться, почему в run и пошаговой отладке до контрольной точки(f8) не отправляется пакет?

архив с последним софтом прилагается
Прикрепленный файл  soft_eth.rar ( 4.63 килобайт ) Кол-во скачиваний: 196
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 27 2010, 17:17
Сообщение #131


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



навскидку: похоже на фокусы с кэшами, еще volatile надо бы поставить в объявлении pkt.
надо бы еще по регистрам пробежаться при инициализации, я уже все забыл.
Go to the top of the page
 
+Quote Post
dim99
сообщение Jan 27 2010, 18:02
Сообщение #132


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



С volatile та же песня.
Причем проверял даже так:
Ставлю контрольную точку после передачи первого пакета и прохожу всю инициализацию - в итоге пакет без данных.
Затем продолжаю в пошаговом режиме и передаю нормальный пакет.
Go to the top of the page
 
+Quote Post
vetal
сообщение Jan 27 2010, 18:18
Сообщение #133


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



После формирования пакета вызовите функцию alt_dcache_flush - должно помочь.
Для уменьшения накладных расходов выровняйте атрибутами массив(ы) по модулю размера линии кэша данных.
Go to the top of the page
 
+Quote Post
dim99
сообщение Jan 27 2010, 18:39
Сообщение #134


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Цитата(vetal @ Jan 27 2010, 21:18) *
После формирования пакета вызовите функцию alt_dcache_flush - должно помочь.
Для уменьшения накладных расходов выровняйте атрибутами массив(ы) по модулю размера линии кэша данных.


За alt_dcache_flush спасибо, завтра с утра попробую.
А можно чуточку поподробнее про атрибуты или какая это глава в nios software handbook?
Go to the top of the page
 
+Quote Post
vetal
сообщение Jan 27 2010, 20:06
Сообщение #135


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
А можно чуточку поподробнее про атрибуты или какая это глава в nios software handbook?

Это в документации на GCC : files\gnu-tools\gcc\Variable-Attributes.html
Go to the top of the page
 
+Quote Post

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

 


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


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