Перейти к содержанию
    

не уверен, но похоже памяти "маловато будет" (ц). ось наверно еще динамически навыделяет и стек переполнится. а ось вообще нужна? какая задача - пакет туда-сюда кинуть или tcp/ip нужен? если второй вариант, то добавьте внешнюю память, без нее никак.

 

Поставили задачу:

- установка соединения по интерфейсу Ethernet

- прием/передача командных пакетов между PC и платой

- прием/передача информационных пакетов

 

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

Ось выбрал потому что это единственный проект(вариант), который нашел и смог откомпилировать и запустить.

 

Если есть возможность использовать без rtos, то расскажите как или где посмотреть?

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

 

Так есть способ оставить tse и убрать rtos?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. протокол свой? тогда ось точно ни к чему. вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание. передача аналогично: записать пакет в массив, сделать дескриптор, который на него указывает и передать tx_dma. такой вариант килобайт в 10 упихать можно. но это не самый удобный способ, т.к. доступ будет на самом низком уровне, по MAC-адресам и потребует прав на создание raw_ethernet_socket`ов, что в нормальных осях может делать только админ. поэтому стоит реализовать огрызок tcp/ip: ARP - для преобразования IP-адресов в MAC, ICMP - ping для диагностики и разборку UDP - заголовков. все это еще килобайт 10 займет. в принципе вики достаточно почитать по этим стандартам. детали - в соответствующих RFC, в сети есть переводы на русский. пригодится и снифер, напимер, wireshark. память все-таки стоит поднять, много памяти - это хорошо :). проидитесь по форуму, это уже обсуждалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поэтому стоит реализовать огрызок 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 и занимает он меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно еще с флагами оптимизации поиграться: выставить для System Library конфигурацию Release, для проекта оставить Debug. а лучше DDR поднять, там работы - на час.

 

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

Спасибо за совет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем добавил к проекту 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хочу загружаться с него, чтобы не трогать flash и была возможность считать с него информацию из-под nios ide.

загружаться с нее не получится, только код исполнять. лучше всего так:

-reset нацелить на flash

-exception на SRAM

-в настройках System Library - все на SRAM

тогда при подаче питания код будет считываться из flash в SRAM, а потом ему будет передаваться управление. flash будет доступна на запись/чтение. это по пункту 1. по второму - что значит неадекватно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

загружаться с нее не получится, только код исполнять. лучше всего так:

-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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда загрузка идет с on-chip все в порядке выводится именно то, что необходимо.

...

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

...

видимо, тут путаница возникла. on-chip и off-chip ничем не отличаются

при задании sram в свойствах system library - экран становится серым (хотя причины могут быть и другими).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

видимо, тут путаница возникла. 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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

с точки зрения ниоса - один фиг. ну может у внешнего ОЗУ латентность повыше.

Попробовал sram в свойствах system library, а под код оставил on-chip,

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

 

В hello world пишет и читает.

При загрузке проекта с sram в system library светится SRAM LED ACTIVE - то есть max II его видит.

Как его протестировать на правильность работы в sytem library?

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это как? настройки 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 пашет? значит надо этот сервер ковырять отладчиком

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

hello world, если разместить в off-chip пашет?

 

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

Изменено пользователем dim99

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем на время решил отказаться от SSS.

 

Уважаемый vadimuzzz можно чуть попродробнее про

вообще для приема/передачи пакета достаточно проинициализировать PHY. для приема пакета с помощью TSE нужно выделить под него буфер, сделать дескриптор для rxdma и настроить прерывание

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...