dim99 0 3 ноября, 2009 Опубликовано 3 ноября, 2009 · Жалоба не уверен, но похоже памяти "маловато будет" (ц). ось наверно еще динамически навыделяет и стек переполнится. а ось вообще нужна? какая задача - пакет туда-сюда кинуть или tcp/ip нужен? если второй вариант, то добавьте внешнюю память, без нее никак. Поставили задачу: - установка соединения по интерфейсу Ethernet - прием/передача командных пакетов между PC и платой - прием/передача информационных пакетов Мне тоже кажется, что мало памяти, фиттер показал, что используется 80% памяти on-chip, думаю докинуть 10% к stack'y и посмотреть как себя вести будет. Ось выбрал потому что это единственный проект(вариант), который нашел и смог откомпилировать и запустить. Если есть возможность использовать без rtos, то расскажите как или где посмотреть? Если сейчас полезу добавлять ddr, думаю не разгребу до января ) Так есть способ оставить tse и убрать rtos? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 4 ноября, 2009 Опубликовано 4 ноября, 2009 · Жалоба т.е. протокол свой? тогда ось точно ни к чему. вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание. передача аналогично: записать пакет в массив, сделать дескриптор, который на него указывает и передать tx_dma. такой вариант килобайт в 10 упихать можно. но это не самый удобный способ, т.к. доступ будет на самом низком уровне, по MAC-адресам и потребует прав на создание raw_ethernet_socket`ов, что в нормальных осях может делать только админ. поэтому стоит реализовать огрызок tcp/ip: ARP - для преобразования IP-адресов в MAC, ICMP - ping для диагностики и разборку UDP - заголовков. все это еще килобайт 10 займет. в принципе вики достаточно почитать по этим стандартам. детали - в соответствующих RFC, в сети есть переводы на русский. пригодится и снифер, напимер, wireshark. память все-таки стоит поднять, много памяти - это хорошо :). проидитесь по форуму, это уже обсуждалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 6 ноября, 2009 Опубликовано 6 ноября, 2009 · Жалоба поэтому стоит реализовать огрызок 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 0 7 ноября, 2009 Опубликовано 7 ноября, 2009 · Жалоба можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 7 ноября, 2009 Опубликовано 7 ноября, 2009 · Жалоба можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час. Наверноe, придется поднять ddr, а то все больше времени уходит на проверку влезет\не влезет проект в on-chip. Спасибо за совет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба В общем добавил к проекту 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 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба хочу загружаться с него, чтобы не трогать flash и была возможность считать с него информацию из-под nios ide. загружаться с нее не получится, только код исполнять. лучше всего так: -reset нацелить на flash -exception на SRAM -в настройках System Library - все на SRAM тогда при подаче питания код будет считываться из flash в SRAM, а потом ему будет передаваться управление. flash будет доступна на запись/чтение. это по пункту 1. по второму - что значит неадекватно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба загружаться с нее не получится, только код исполнять. лучше всего так: -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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Когда загрузка идет с on-chip все в порядке выводится именно то, что необходимо. ... Раз нельзя so sram грузиться значит не судьба. ... видимо, тут путаница возникла. on-chip и off-chip ничем не отличаются при задании sram в свойствах system library - экран становится серым (хотя причины могут быть и другими). наверняка другие. вообще это моветон, подсовывать полуработающее железо в большую программу. отладьте железо на простых тестах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба видимо, тут путаница возникла. 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 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Что вы имели в виду, чем они не отличаются друг от друга? с точки зрения ниоса - один фиг. ну может у внешнего ОЗУ латентность повыше. Попробовал sram в свойствах system library, а под код оставил on-chip, это как? настройки system library в студию. на фига теперь он-чип, внешней ведь хватает? В hello world пишет и читает. При загрузке проекта с sram в system library светится SRAM LED ACTIVE - то есть max II его видит. Как его протестировать на правильность работы в sytem library? пишет и читает память? давайте еще раз: оставить только флеш и внешнее ОЗУ - так работает?(все секции программы запихать в ОЗУ, ресет на флеш) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 (изменено) · Жалоба это как? настройки 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. Изменено 14 ноября, 2009 пользователем dim99 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба 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 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 (изменено) · Жалоба hello world, если разместить в off-chip пашет? Вот этого еще не пробовал, в понедельник проведу все тесты. чтоб точно знать, где мой косяк. Изменено 15 ноября, 2009 пользователем dim99 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 16 ноября, 2009 Опубликовано 16 ноября, 2009 · Жалоба В общем на время решил отказаться от SSS. Уважаемый vadimuzzz можно чуть попродробнее про вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться