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

pepelats

Участник
  • Постов

    56
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о pepelats

  • Звание
    Участник
    Участник
  • День рождения 24.10.1977

Старые поля

  • skype
    Array

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 310 просмотров профиля
  • Staf

  1. Здравствуйте, Есть необходимость подключить плату SP605 к сети по оптике используя SFP модули и медаконвертер. У меня SFP модуль на плате подключается к другому SFP модулю, который вставлен в медиаконвертер, который по Ethernet подключен к сети. Как я пробовал запустить: Сначала собрал простой проект который подключается через стандартный Ethernet разъем на плате. Запустил приложение Echo server, все работает. Потом перевел корку AXI Ethernet в режим 1000Base-X и в UCF настроил выходы и клоки на SFP. Пересобрал и запустил тоже приложение. Ping не идет. Начитался инет, посмотрел сообщения с похожей тематикой. Щас в голове такая каша, уже не знаю куда че крутить. Да, модули насколько я знаю могут работать на гигабит. Я делал проверку с ними. Подключал компьютер через 2 медиаконвертера к сети. Все работало. А что за функции? Я использую XPS и насколько я знаю не получится залезть внутрь корки AXI Ethernet, а через ISE я не умею :( Насколько я знаю можно. Там подключается корка IIC_SFP Еще такой вопрос. В каком режиме все таки я должен использовать корку AXI Ethernet: SGMII или 1000Base-X ?
  2. Здравствуйте, Проблема в следующем: Есть плата SP605, на борту у нее есть SFP разъем. Необходимо плату используя SFP модули и медиаконвертер подключить к сети с целью обмена данными. Для начала собрал проект в XPS используя Microblaze + AXI Ethernet и стандартный Ethernet c PHY на плате. В качаестве программы в SDK выбрал lwIP echo server. Все работает. Теперь перевожу AXI Ethernet в SGMII режим (по умолчанию он работает в GMII) и в UCF переключаю корку на другие ножки для работы с SFP: NET "ETHERNET_TXP_pin" LOC = D13; NET "ETHERNET_TXN_pin" LOC = C13; NET "ETHERNET_RXP_pin" LOC = B14; NET "ETHERNET_RXN_pin" LOC = A14; NET "ETHERNET_MGT_CLK_P_pin" LOC = A12; NET "ETHERNET_MGT_CLK_N_pin" LOC = B12; пересобираю проект загружаю. Вначале выдало, что не может определить PHY speed. В настройках lwIP поставил что скорость фиксирована 1000. Визуально заработало: -----lwIP TCP echo server ------ TCP packets sent to port 6001 will be echoed back Board IP: 192.168.74.133 Netmask : 255.255.128.0 Gateway : 192.168.0.2 link speed: 1000 TCP echo server started @ port 7 Но ping не проходит и не подключается. В интернет всречал, что подобное делают и тоже были проблемы, но почему то решение проблем нигде не описано. Если соединить 2 медиаконвертера подключенными к сети используя эти SFP модули, то все работает, сеть есть. Подскажите куда копать? :cranky:
  3. Здравствуйте, Нашел немного времени поразбираться с проблемой прерываний. Все оказалось не так как казалось :cranky: Сами по себе прерывания работают, просто я привык запускать программу в режиме Debug, т.е. через меню Debug As..., при этом в самом обработчике прерываний делал вывод на экран. Раньше все работало. В версии 14.7 они что то сломали и на экран, в момент когда должно сработать прерывание, ничего не выводится. Может конечно при этом прерывание и не срабатывает (не стал заморачиваться с проверкой на какой нить GPIO). Но если приложение запустить в режиме Run As..., то все становится нормально и на экран выводится сообщение из обработчика. Пробовал и на Linux машине и на Windows. Результат одинаковый. Так что будьте внимательны. :smile3046:
  4. Я не плисовед к сожалению/счастью :laughing: . Да и как например мониторить AXI-lite если мне надо прочитать ее состояние в момент записи микроблейзом данных? Я собираю схему из готовых корок и программирую ее. Так же дебажу шины данных, чтобы видеть что где застревает.
  5. Версия 14.6. В Vivado отладка происходит проще.
  6. Здравствуйте, Проблема такая. Необходимо посмотреть чипскопом AXI шину в момент записи данных через Microblaze. Т.е. тут надо бы зайти в режим отладки Microblaze, поставить точку останова, потом взвести триггер на чипскопе и запустить выполнение программы дальше. Но такая фишка не поддерживается через JTAG. Работает что то одно, или Debug или ChipScope. Это дико неудобно. Приходится зашивать программу и срабатывание ее в нужном месте обеспечивать с помощью какой нить GPIO ожидая нажатие кнопки. Есть ли какие то решения помимо этого? А то очень много времени убивается на такую отладку.
  7. Да, что то подобное делается когда прошивается SREC bootloader. Спасибо, основное я вроде понял. :beer: Да, я делал такое и наступал на грабли со скоростью загрузки. Особенно когда скрость стоит 9600 :smile3046:
  8. Это точно? Насколько я себе представлял, что проц находится в bitstream, а в ELF файле находится полностью моя софт программа пускай даже с мусором. Но что значит там находится и проц? Помимо FPGAшной реализации есть еще и софтовая часть? OK, если это так, то очень хорошо. :) Кстати как раз вопрос. Подскажите, где можно почитать как надо зашить ELF файл во FLASH (желательно Platform Flash), чтобы он по старту питания загрузился в BRAM и начал исполнение? Я находил и делал только с BPI flash, которой нужен SREC загрузчик и много танцев с бубном.
  9. Но в любом случае все это пришлось бы размещать в BRAM если бы понадобилось отказаться от DDR ? У меня как раз загвоздка в этом. Вот тут кстати помогло. Поставил галочку omit all symbol information и размер файла уменьшился до ~9 кбайт. Надо будет проверить заведется с ним или нет. Спасибо! :a14:
  10. вот вывод в консоль списка файлов. Файл dummy_hi_unit.elf это сам бинарник как я понимаю. По крайней мере в Linux так. Размер как видно показывает 48869. /Release> ls -l итого 224 -rwxr-xr-x 1 enovikov users 48869 апр 2 08:55 dummy_hi_unit.elf -rw-r--r-- 1 enovikov users 247 апр 2 08:55 dummy_hi_unit.elf.elfcheck -rw-r--r-- 1 enovikov users 107 апр 2 08:55 dummy_hi_unit.elf.size Че то не нашел, это в какой вкладке?
  11. Сорри, что не предупредил. То что я выложил уже не Hello World, т.к. подумал, что даже если его и уменьшу, реально мало мне о чем скажет, поэтому взял свой реальный проект. В проекте используется AXI Memory Mapped FIFO на примем и передачу. Работаю с ней по прерыванию. Данные получаю с Aurora, отправляю тоже через нее. Суть программы в получении пакета, его разбора и отправке пакета ответа. Больше кода там пока как раз в работе с FIFO, т.к. обмен происходит через AXI Lite по описанному в примере от Xilinx алгоритму. Если имеется в виду версия Debug и Release, то сейчас у меня 48 кбайт в Release варианте. Если что то еще можно дебажное сократить, было бы здорово. Вообще как думаете, реально подобный софт вместить в 4 кбайта или самый край 8 кбайт? С учетом что сейчас у меня не все реализовано в программе. Необходимо будет добавить алгоритмы работы по SPI, для конфигурирования периферии данными полученными "сверху". Вот что при сборке выводится: Invoking: MicroBlaze Print Size mb-size dummy_hi_unit.elf |tee "dummy_hi_unit.elf.size" text data bss dec hex filename 8532 336 3404 12272 2ff0 dummy_hi_unit.elf Finished building: dummy_hi_unit.elf.size Тут как раз возникает еще вопрос. Получается, что в сумме секции дают 12272. Это вообще откуда? Почему реально там файл 48869 ? P.S. Да вызовы из библиотек делаются. Как раз по работе с FIFO больше всего. Еще вот смог получить инфу: readelf --sections ./dummy_hi_unit.elf Имеется 27 заголовков раздела, начиная со смещения 0xa9bc: Заголовки разделов: [Нм] Имя Тип Адрес Смещ Разм ES Флг Сс Инф Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .vectors.reset PROGBITS 00000000 000094 000008 00 AX 0 0 4 [ 2] .vectors.sw_excep PROGBITS 00000008 00009c 000008 00 AX 0 0 4 [ 3] .vectors.interrup PROGBITS 00000010 0000a4 000008 00 AX 0 0 4 [ 4] .vectors.hw_excep PROGBITS 00000020 0000b4 000008 00 AX 0 0 4 [ 5] .text PROGBITS a8000000 0000bc 001cac 00 WAX 0 0 4 [ 6] .init PROGBITS a8001cac 001d68 000034 00 AX 0 0 4 [ 7] .fini PROGBITS a8001ce0 001d9c 00001c 00 AX 0 0 4 [ 8] .ctors PROGBITS a8001cfc 001db8 000008 00 WA 0 0 4 [ 9] .dtors PROGBITS a8001d04 001dc0 000008 00 WA 0 0 4 [10] .rodata PROGBITS a8001d0c 001dc8 000438 00 A 0 0 4 [11] .sdata2 NOBITS a8002144 002200 000004 00 WA 0 0 1 [12] .data PROGBITS a8002148 002200 000140 00 WA 0 0 4 [13] .bss NOBITS a8002288 002340 000544 00 WA 0 0 4 [14] .heap NOBITS a80027cc 002340 000404 00 WA 0 0 1 [15] .stack NOBITS a8002bd0 002340 000400 00 WA 0 0 1 [16] .debug_line PROGBITS 00000000 002340 001e9f 00 0 0 1 [17] .debug_info PROGBITS 00000000 0041df 0028b0 00 0 0 1 [18] .debug_abbrev PROGBITS 00000000 006a8f 000fba 00 0 0 1 [19] .debug_aranges PROGBITS 00000000 007a50 0002f8 00 0 0 8 [20] .debug_frame PROGBITS 00000000 007d48 000520 00 0 0 4 [21] .debug_loc PROGBITS 00000000 008268 001728 00 0 0 1 [22] .debug_ranges PROGBITS 00000000 009990 000348 00 0 0 1 [23] .debug_str PROGBITS 00000000 009cd8 000bcb 01 MS 0 0 1 [24] .shstrtab STRTAB 00000000 00a8a3 000117 00 0 0 1 [25] .symtab SYMTAB 00000000 00adf4 000990 10 26 42 4 [26] .strtab STRTAB 00000000 00b784 000761 00 0 0 1 Обозначения флагов: W (запись), A (назнач), X (исполняемый), M (слияние), S (строки), I (инфо), L (порядок ссылок), G (группа), T (TLS), E (исключён), x (неизв.) O (треб. доп. обработка ОС) o (специфич. для ОС), p (специф. для процессора) интересно что за секции .debug_* и можно ли их как то порезать.
  12. Да, спасибо! Действительно помогло. Обнаружил где затесался malloc, который съел кучу памяти и еще по мелочам. Еще добавил ключи которые советовали, убрал все xil_printf. В итоге вместо 160 кбайт получилось 48 кбайт. Интересно, можно еще как то сократить? test.map.txt
  13. да, забыл указать что не использую при этом printf и даже xil_printf. Использую print который вообще вроде как занимает копейки по сравнению с printf. Function Size Limitations -------------- ------- ------------------ printf() 51788 None, full featured iprintf() 18294 No floating point, reentrant xil_printf() 2953 No floating point, not reentrant(single thread only), no longlong(64 bit) putnum() 284 Integer to HEX only, no other formats print() 185 No numbers output, just strings All of these functions can be prototyped by including <stdio.h>. Программа Hello World создается из визарда в SDK. И выглядит так: #include <stdio.h> #include "platform.h" void print(char *str); int main() { init_platform(); print("Hello World\n\r"); return 0; } и вот это у меня вытягивает на 14 кбайт
  14. Здравствуйте, Скажете, сколько может весить самая простая программа для Microblaze в релизе и с оптимизацией. Например программа уровня Hello World. Схема при этом самая минимальная. У меня получается ~14 кбайт. Это нормально? Можно как то уменьшить эти показатели?
  15. Ну что я могу сказать чтобы не сматериться. :maniac: Почти ничего. Решил на удачу поставить предыдущую версию ISE DS 14.6 и проделать все тоже самое. И вуа ля. Все заработало. Обработчик прерывания вызвался 3 раза как положено. Причем заметно, что в XPS проект выглядит несколько иначе по шинам и портам. Так что всем спасибо за помощь. :beer: В общем индусы "жгут напалмом" :01:
×
×
  • Создать...