|
|
  |
Ethernet + Cyclone + Nios |
|
|
|
Nov 3 2009, 17:50
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Nov 3 2009, 19:00)  не уверен, но похоже памяти "маловато будет" (ц). ось наверно еще динамически навыделяет и стек переполнится. а ось вообще нужна? какая задача - пакет туда-сюда кинуть или tcp/ip нужен? если второй вариант, то добавьте внешнюю память, без нее никак. Поставили задачу: - установка соединения по интерфейсу Ethernet - прием/передача командных пакетов между PC и платой - прием/передача информационных пакетов Мне тоже кажется, что мало памяти, фиттер показал, что используется 80% памяти on-chip, думаю докинуть 10% к stack'y и посмотреть как себя вести будет. Ось выбрал потому что это единственный проект(вариант), который нашел и смог откомпилировать и запустить. Если есть возможность использовать без rtos, то расскажите как или где посмотреть? Если сейчас полезу добавлять ddr, думаю не разгребу до января ) Так есть способ оставить tse и убрать rtos?
|
|
|
|
|
Nov 4 2009, 03:17
|

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

|
т.е. протокол свой? тогда ось точно ни к чему. вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание. передача аналогично: записать пакет в массив, сделать дескриптор, который на него указывает и передать tx_dma. такой вариант килобайт в 10 упихать можно. но это не самый удобный способ, т.к. доступ будет на самом низком уровне, по MAC-адресам и потребует прав на создание raw_ethernet_socket`ов, что в нормальных осях может делать только админ. поэтому стоит реализовать огрызок tcp/ip: ARP - для преобразования IP-адресов в MAC, ICMP - ping для диагностики и разборку UDP - заголовков. все это еще килобайт 10 займет. в принципе вики достаточно почитать по этим стандартам. детали - в соответствующих RFC, в сети есть переводы на русский. пригодится и снифер, напимер, wireshark. память все-таки стоит поднять, много памяти - это хорошо  . проидитесь по форуму, это уже обсуждалось.
|
|
|
|
|
Nov 6 2009, 17:13
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(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 и занимает он меньше.
|
|
|
|
|
Nov 7 2009, 10:58
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Nov 7 2009, 11:59)  можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час. Наверноe, придется поднять ddr, а то все больше времени уходит на проверку влезет\не влезет проект в on-chip. Спасибо за совет.
|
|
|
|
|
Nov 12 2009, 13:15
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
В общем добавил к проекту 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
|
|
|
|
|
Nov 12 2009, 13:53
|

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

|
Цитата хочу загружаться с него, чтобы не трогать flash и была возможность считать с него информацию из-под nios ide. загружаться с нее не получится, только код исполнять. лучше всего так: -reset нацелить на flash -exception на SRAM -в настройках System Library - все на SRAM тогда при подаче питания код будет считываться из flash в SRAM, а потом ему будет передаваться управление. flash будет доступна на запись/чтение. это по пункту 1. по второму - что значит неадекватно?
|
|
|
|
|
Nov 12 2009, 15:14
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Nov 12 2009, 16:53)  загружаться с нее не получится, только код исполнять. лучше всего так: -reset нацелить на flash -exception на SRAM -в настройках System Library - все на SRAM тогда при подаче питания код будет считываться из flash в SRAM, а потом ему будет передаваться управление. flash будет доступна на запись/чтение. это по пункту 1. по второму - что значит неадекватно? для проверки работоспособности sram использую рабочий проект(почему-то не доверяю простой записи\чтению в nios ide  ), который выводит изображение на экран tft-монитора. Когда загрузка идет с on-chip все в порядке выводится именно то, что необходимо. при задании sram в свойствах system library - экран становится серым (хотя причины могут быть и другими). Раз нельзя so sram грузиться значит не судьба. В общем сделаю, как вы посоветовали с system library и буду ковырять network_utilities.c, чтоб подсунуть ip и mac.
|
|
|
|
|
Nov 12 2009, 15:26
|

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

|
Цитата(dim99 @ Nov 12 2009, 21:14)  Когда загрузка идет с on-chip все в порядке выводится именно то, что необходимо. ... Раз нельзя so sram грузиться значит не судьба. ... видимо, тут путаница возникла. on-chip и off-chip ничем не отличаются Цитата при задании sram в свойствах system library - экран становится серым (хотя причины могут быть и другими). наверняка другие. вообще это моветон, подсовывать полуработающее железо в большую программу. отладьте железо на простых тестах.
|
|
|
|
|
Nov 13 2009, 17:09
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(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?
|
|
|
|
|
Nov 14 2009, 14:01
|

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

|
Цитата(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? пишет и читает память? давайте еще раз: оставить только флеш и внешнее ОЗУ - так работает?(все секции программы запихать в ОЗУ, ресет на флеш)
|
|
|
|
|
Nov 14 2009, 17:01
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(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.
Сообщение отредактировал dim99 - Nov 14 2009, 17:02
|
|
|
|
|
Nov 15 2009, 05:15
|

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

|
Цитата(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 пашет? значит надо этот сервер ковырять отладчиком
|
|
|
|
|
Nov 15 2009, 08:35
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Nov 15 2009, 08:15)  hello world, если разместить в off-chip пашет? Вот этого еще не пробовал, в понедельник проведу все тесты. чтоб точно знать, где мой косяк.
Сообщение отредактировал dim99 - Nov 15 2009, 08:36
|
|
|
|
|
Nov 16 2009, 14:55
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
В общем на время решил отказаться от SSS. Уважаемый vadimuzzz можно чуть попродробнее про Цитата вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|