Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
|
||||
|
LTR - программирование BlackfinНесколько вопросов "для начинающих": 1) Насколько велика опасность остаться без возможности прошивки по USB (при ошибках в программировании)? Что такое "альтернативный вариант загрузки" — кроме того, что при удержании RESET более 10 с отключается watchdog в документации ничего не сказано. 2) Можно ли использовать альтеровские Byteblaster/USBblaster для программирования Blackfin через JTAG? 3) В исходниках настроена только конфигурация Debug. Есть какие-то проблемы с использованием оптимизаций? 4) Прошивка компилируется с Warning-ами. В основном ерунда, смущает
5) В файле "Встраивание ПО.pdf" ничего не сказано про #define LTR031_ENDPOINT - пришлось поволноваться, когда крейт стал определяться как LTR-EU-2. Может быть, есть еще переключатели, о которых стоит знать? 6) Какой ltr030.rbf правильный — в ltr_eu_8_16_fw.zip или в ltr_source_1_0_0_1.zip? 7) Получается ли компилировать прошивку GCC? Проблемы/особенности? 8) Есть ли у LCard файловая система для SD-карточки? Web-сервер? Если нет, что подскажете? |
|||
|
||||
|
Re: LTR - программирование Blackfin1) "Насколько велика опасность остаться без возможности прошивки по USB (при ошибках в программировании)?"
2) К великому сожалению, нет - Это политика Analog Devices. Про JTAG см. п. 15.3 в том же руководстве. 6) Прошивки ПЛИС о себе говорят во вкладке "отчёт" LTR-cервера во время инициализации крейта. Последняя версия прошивки FPGA для LTR-EU: 1.00.08. Рекомендуется именно она. 8) Файловая система для микро-SD в настоящее время не реализована. |
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! 1) В руководстве это не написано, но похоже, что "альтернативный сценарий загрузки" заключается в загрузке заведомо рабочей прошивки, испортить которую через ltr030burn.exe нельзя. Правильно? Правда, в моем случае эта "резервная" прошивка почему-то оказалась LTR031, так-что после "длинного" ресета крейт определяется как LTR-EU-2, а не LTR-EU-8/16. 6) Что-то я запутался в обозначениях прошивок/версий. На сайте написано, что LTR030.rbf из http://www.lcard.ru/download/ltr_eu_8_16_fw.zip имеет версию 1.00.07. Зачем-то при загрузке свежий ltrserver v1.5.3.0 заменяет ее на более старую версию 1.0.6.0 из файла ltr010v3_0_5.ttf. Или это прошивки разных ПЛИС? |
|||
|
||||
|
Re: LTR - программирование BlackfinИгорь. По обоим вопросам придётся подождать 11 января, коллеги ответят. Прошивку из файла ltr010v3_0_5.ttf физически невозможно залить в крейт LTR-EU. Эта прошивка от крейта LTR-U. C прошивкой версии 1.00.07 пока вполне можно работать, после праздников выложим обновление. Для дополнительной информации выложите, пожалуйста, текст из вкладки "отчёт" LTR-сервера на момент основной и альтернативной загрузок LTR-крейта. |
|||
|
||||
|
Re: LTR - программирование Blackfin«Длинный» RESET
Обычный RESET. Прошивка из http://www.lcard.ru/download/ltr_eu_8_16_fw.zip
|
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! Собственно проблем пока нет — прошивка из исходников собирается и загружается, DataHook работает как обещано. Ethernet пока не пробовал. При альтернативной загрузке LGraph не работает, но это не принципиально — основную прошивку обновить удается. Так что вопросы, которые я набросал, скорее для углубления понимания, чтобы уверенней себя чувствовать. |
|||
|
||||
|
Re: LTR - программирование BlackfinПытаюсь послать данные в крейт по "пользовательскому" каналу. Следующая программа отрабатывает без ошибок, однако сразу после LTR_Send() ltrserver.exe начинает грузить процессор на 99%, так что приходится убивать процесс ltrserver.exe через TaskManager. В чем дело? #include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
TLTR ltr;
err = LTR_Init(<r);
ltr.cc = CC_USERDATA; // 2; err=LTR_Open(<r);
err=LTR_Send(<r, data, N, 100);
if (err != N) {
err_exit:
Если ltr.cc ставить в номер реально установленного модуля, ltrserver не виснет. Если в номер свободного слота - выдает ошибку, как и должно быть. Стандартный пример "Generate" на ltr34api компилируется и работает правильно. |
|||
|
||||
|
Re: LTR - программирование BlackfinCC_USERDATA задуман как односторонний канал от крейта к компьютеру. Запись в него по идее приведет к передаче в крейт данных с некорректным значением поля CYFTMMMM (ltr.pdf 4.5.1), и что получится в результате, я сходу не скажу.
|
|||
|
||||
|
Re: LTR - программирование BlackfinКакой способ можете порекомендовать для передачи данных в крейт? Пробую сделать генератор на Blackfin + LTR34. Надо изредка посылать значения амплитуды и частоты. |
|||
|
||||
|
Re: LTR - программирование BlackfinИзредка - можно попробовать посмотреть в сторону функции putarray через канал управления (cc_control).
Наряду с прошивкой, стоит заглядывать в исходники ltrserver и ltrapi. Кстати, и их при желании можно модифицировать под свои нужды. Например, преобразовать запись USERDATA в какие-нибудь командные слова. |
|||
|
||||
|
Re: LTR - программирование BlackfinСделал в Blackfine генератор синуса и мультиметр (AC, DC, фаза) - вроде бы работает. ltrserver и api получилось использовать как есть. Для «общения» со своими кусками прошивки использую каналы DATA модулей АЦП и ЦАП в ОБЕ стороны – хотелось бы, чтобы эту возможность Вы не забили в следующей версии ltrserver. USER_DATA использую для отладки на ввод в ПК. Было бы удобно иметь этот канал тоже двунаправленным – в чем проблема? Использовать datahook в прошивке не получилось – пришлось переписывать. Причины: 1) потоковую генерацию в LTR34 естественно синхронизировать по STATUS_PERIOD, которые приходят как команды, а не данные; 2) сырые данные каналов АЦП, для которых все что нужно считает Blackfin, естественно удалять из потока для экономии полосы; 3) необходимо управление с хоста. В общем, напрашивается альтернативная модель хука в «разрыве потока»: все, что пришло от хоста и ПЛИС как есть отсылается в хук, который сам разбирается, что послать дальше, а что изменить или выкинуть. Подход весьма универсальный и было бы неплохо реализовать его как опцию в стандартной прошивке. Если решите заниматься, могу прислать свой вариант патча. |
|||
|
||||
|
Re: LTR - программирование Blackfin>Для «общения» со своими кусками прошивки использую каналы DATA модулей АЦП и ЦАП в ОБЕ стороны – хотелось бы, чтобы эту возможность Вы не забили в следующей версии ltrserver. Ну вообще у всех модулей двунаправленный канал (у модулей ввода из ПК идут, как минимум, команды типа «start adc», «stop adc» и т.д. - это команды для модуля, но ДАННЫЕ с точки зрения крейт-контроллера). Так что это никуда не денется. Мы говорим об одном и том же?
>Было бы удобно иметь этот канал тоже двунаправленным – в чем проблема? USER_DATA в почти готовой следующей версии сервера сделан однонаправленным, исправлено описанное Вами подвисание при записи. Причина: данные от клиента складывались в буфер для виртуального модуля 18, но «забирающий» поток этот модуль не видел, event наличия новых данных, на котором он ждет, не сбрасывался, и получался «короткий цикл» и 100% cpu. Двунаправленность userdata делать боязно, потому что одно дело обработать приход из крейта слов с недокументированным сочетанием битов CY = 01 (в штатной прошивке их просто нет), а другое - писать в крейт данные, не предусмотренные его архитектурой. >Использовать datahook в прошивке не получилось – пришлось переписывать. И правильно >В общем, напрашивается альтернативная модель хука в «разрыве потока» [...] Если решите заниматься, могу прислать свой вариант патча.
|
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! Спасибо, обнадежили С ltr34 у меня получается такая ситуация. Данных «туда» идет очень мало (только команды на изменение частоты/амплитуды), зато регулярно приходят уведомления о выдаче очередного килосэмпла. Как я понимаю, счетчики заполнения фифо у Вас пойдут в минус. Не случится ли от этого какая-нибудь неприятность через час-другой работы? Не могли бы заодно спросить у программиста Blackfin, работает ли у него прошивка, скомпилированная с включенной оптимизацией, в режиме Ethernet? |
|||
|
||||
|
Re: LTR - программирование Blackfin> Как я понимаю, счетчики заполнения фифо у Вас пойдут в минус. Не случится ли от этого какая-нибудь неприятность через час-другой работы? Эти счетчики нужны, чтобы приостанавливать запись, пока буфер не освободится. Они 64-битные знаковые, диапазон не проверяется, при максимальной частоте дискретизации должно хватить на молмиллиона лет... |
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! Мелкие аномалии в ltrserver: 1) После аппаратного сброса Ethernet-крейта при "живом" соединении сервер не переподключает его автоматически (в логе появляется "ping failed", но больше никаких действий не предпринимается). 2) Если крейт подсоединен одновременно по USB и Ethernet, то в списке подключенных крейтов он отображается дважды (пустой и с модулями). Работе не мешает. |
|||
|
||||
|
Re: LTR - программирование Blackfin1) Такая функциональность в текущей версии не закладывалась, флаг «подключать автоматически» определяет, надо ли соединяться с IP-адресом при инициализации сервера.
2) Да, это свойство текущей прошивки LTR-EU, она не выключает до конца USB-интерфейс (чтобы переконфигурировать можно было). |
|||
|
||||
|
Re: LTR - программирование BlackfinТут более серьезная проблема появилась. Режим Ethernet. Штатная прошивка. Запускаю LGraph на регистрацию с LTR11 2 канала по 200кГц. Минут через 10-20 поток данных прекращается. Светодиоды на панели тухнут. В логе ltrserver ничего нового. Крейт пингуется. После рестарта сервера крейт определяется как пустой (mconfig=0000). В моей модифицированной прошивке то же самое. Здесь могу добавить, что основной тред из main.c крутится — у меня там выдача диагностики в USER_DATA и мигание светодиодом E. Так вот, после облома диагностика продолжает идти, а обе лампочки выключаются. Похоже, что в Release-билде облом случается быстрее (там и замечено). Выглядит так, как будто бы умирает плиска. Помогайте. |
|||
|
||||
|
Re: LTR - программирование BlackfinИгорь. Попробуем после праздников в L-Card воспроизвести данный эффект в этой конфигурации. ПЛИС сама по себе вряд ли умирает. Судя по светодиодам, Blackfin её либо ресетит, либо на перезагрузку ПЛИС пускает из-за какой-то накладки. Ведь, при работе c USB и Ethernet работа с ПЛИСом (и сама логика ПЛИСа) совершенно идентична для обоих случаев. С USB ведь всё работает долговременно без проблем? Что-то мне подсказывает, что настройки SDRAM выставлены некорректно. Проверьте, что SDRAM Latency = 3, и другие тайминги SDRAM выставите по максимуму для проверки... |
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! С увеличенными таймингами SDRAM и отключенным управлением лампочками (main.c, тройной if в main_task) прошивка дважды отработала по часу без зависания (во второй раз я отключал еще и управление вентилятором — используется тот же SPI, правильно?). Это еще не статистика – без модификации иногда работала минут по 50. М.б. SDRAM не причем — завтра проверю. Что у Вас? Получилось воспроизвести? |
|||
|
||||
|
Re: LTR - программирование BlackfinНа одном и том же SPI, в том числе, организован и канал доступа к регистрам ПЛИС по сигналу PF5(SPISEL5). В частности, среди регистров ПЛИС есть регистр управления вентиляторами. Игорь, по-моему, гипотеза про настройку таймингов SDRAМ здесь является основной и её нужно проверить чисто. А именно, в штатной прошивке нужно увеличить только тайминги SDRAM (и больше ничего не изменять), долговременно испытать, и если проблем не возникнет, то снова откатить на штатную прошивку, чтобы подтвердить, что проблема была и мы её успешно умеем лечить. Мне не удалось пока обнаружить в L-Card такой экземпляр крейта LTR-EU, где обнаруживались бы подобные проблемы. |
|||
|
||||
|
Re: LTR - программирование BlackfinИгорь, а Вы трафик 1200 кбайт/c случайно не превышаете? Для данной реализации TCP/IP - это практический предел. В частности, если 300 кГц частоту АЦП в LTR11 поставить, то 1200 кбайт/c и получится... |
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! Чисто вчера проверял дважды — зависла с теми же симптомами через 25 и 14 минут. Между запусками обратил внимание, что вместе с исходниками мне «подсунули» rbf 1.0.0.6. Заменил на 1.0.0.7, но разницы нет. Косвенные указания, что проблемы могут быть и в SPI: 1) написано на ассемблере; 2) при компиляции HAL с включенной оптимизацией все виснет сразу и совсем. Еще есть воспроизводимая аномалия: после ресета крейта кнопкой ltrserver с первого раза не получает отклик от LTR11. Если затем перезапустить ltrserver Ctrl-R, модуль находится. Остальные три модуля обнаруживаются устойчиво. Иногда при подключении крейта к ltrserver в логе появляются странности вроде
Еще есть непонятки с watchdog. В исходниках initialize_wdt(10000) закомментирован. Если включить — сброс происходит, несмотря на clear_extwdt() в основном цикле. Правда, это проверял на модифицированной прошивке — м.б. накривил чего. Еще есть потенциально опасные неточности в межпотоковой синхронизации и очень странный portENABLE_INTERRUPTS. Пробовал исправлять — эффект не устраняется. Вчерашний вариант (медленный SDRAM, лампочки отключены) отработал сегодня уже полтора часа и пока не завис. Буду пробовать другие комбинации. Времени отнимает — жуть. |
|||
|
||||
|
Re: LTR - программирование Blackfin1. Не получение отклика от LTR11 с первого раза и "bad data" связаны с тем, что модуль не был остановлен и после сброса крейта продолжает слать данные.
|
|||
|
||||
|
Re: LTR - программирование BlackfinАлександр! Да, данные приходят не все. ltrserver показывает ок. 330 кслов/сек, хотя с LTR11 должно идти 400кслов/сек. Ну и что? Ethernet ведь не виснет. Кстати, в РЭ у Вас написано 2500, а не 1200. Собственно данные меня сейчас не интересуют — мне действительно нужна оцифровка порядка 400ксэмплов/сек, но после обсчета в blackfin для передачи наверх остается раз в двадцать меньше. LGraph и исходную прошивку использую сейчас в надежде, что Вы отловите этот глюк у себя и поможете устранить, - в модифицированной прошивке возникает неприятность с теми же симптомами. |
|||
|
||||
|
Re: LTR - программирование BlackfinИгорь, в данном случае я между Вами и Константином не буду "испорченным телефоном". По программированию Блэкфина и скоростям - это к Константину, по аппаратуре LTR и ПЛИС - это ко мне. |