Как стать автором
Обновить
21
0
Михаил Клименко @NelSon29

AI Algorithm Engineer @ Intel Corp.

Отправить сообщение
Конечно, вот отладчик, а вот хороший документ с описанием разъёмов и линий
Не совсем. Внутри ядер ARM есть два отладочных блока: ETM и ETB. Первый — высокоскоростной интерфейс, он может быть выведен на ножки микросхемы для последующего подключения через, например, Mictor-коннектор. В таком случае можно использовать всю доступную память в отладчике.

ETB это отладочный буфер, чаще всего размером 8 КБ. Он осуществляет работу именно JTAG-отладчиков (с подключением через 20-пиновый разъём). В этот буфер тоже можно писать трассы, но тогда надо чётко указывать места начала и конца, т.к. в 8 КБ влезает примерно 10к инструкций, не более. Этого количества часто не хватает.
Плата подключена к JTAG-отладчику (например, DStream), в котором стоит ОЗУ на несколько гигабайт. Туда с большой скоростью пишутся трассы, а потом уже оттуда вычитываются компьютером. У нас отладчик подключен вообще через Ethernet, так как стенд находится на другом конце комнаты, чтобы поместился векторный генератор, осциллограф, блок питания и прочие. :)
Если просто, то он во время работы записывает выполненные инструкции с частотой процессора (т. е. неинвазивно и не влияя на ход исполнения программы). Опционально позволяет записывать время выполнения и регистры, тем самым полностью воссоздавая ход программы.

Очень помогает при работе на голом железе, без ОС. Отслеживать прерывания, замерять производительность, искать баги и всё прочее. Сейчас работаем с нашим новым чипом, одно удовольствие, времени на исправление программных ошибок тратиться гораздо меньше.
Очень интересный девайс, сразу захотелось поработать.

Единственное, что смущает, так это что ни на одной отладочной плате я не вижу разъема для собирания трасс (ARM Trace). Безумно удобная вещь при отладке приложений, работающих в реальном времени.
Отвечу за Илью: потому что вы говорите об использовании внутренних 2-битных АЦП. Динамический диапазон определяется как примерно 6 дБ на 1 бит. В спойлере картинка с изображением, что будет со спектром чистой синусоиды (без шума вообще) при квантовании на 2 бита.

Спектр с рассчитанным SINAD
Согласен, любой усилитель можно перегрузить. Но даже если усилители внутри РПУ работают в линейном режиме, поставив на выходе 2-битовый АЦП, на выходе помимо основного тона увидим и гармоники.

Если я правильно помню, то при уровне входного сигнала порядка -70 dBm третья гармоника была сильнее. Увы, сейчас не могу проверить, дома нет оборудования.

2. «Дальше навигационный сигнал фильтруется». Какую фильтрацию вы имеете в виду? Хотелось бы узнать поподробнее.
В линейность упрётесь почти сразу же, т.к. квантование на два бита синусоиду превращает в четырёхступенчатый меандр с соответствующим спектром. Соответственно, одна узкополосная помеха сразу превращается в множество. Со спуфингом, возможно, это будет не так критично.

Подавали гармонику на вход с частотой ±1590 МГц и смотрели выход спектроанализатором. На сколько она была ослаблена относительно основной я не помню, но, если интересует, в понедельник спрошу у коллег.

Гораздо больше поразило при работе с этим РПУ следующее:
1. На выходе тактового сигнала стоит трансформатор, который режет клок с частотой меньше ~40-50 МГц. Такой трансформатор стоит на старой отладочной плате (которая без встроенного USB) и, если судить по документации, на новой.
2. Если на вход подавать одну гармонику, то при включённом АРУ практически нет разницы, какие настройки фильтра установлены. У нас получилась полоса фильтра порядка 70 МГц при установленных 11. Связались с белорусами и узнали, что дело в АРУ и полосы фильтров указаны при фиксированных значениях усиления.
Принцип изменится в том плане, что при двухбитном квантовании РПУ перестаёт быть линейным. То есть вместо одной помехи лезет сразу множество.

А ещё при работе с NT1065 мы заметили на спектроанализаторе достаточно сильную третью гармонику, что немного огорчило
Вы уж простите, но терминология хромает и отличается от общепринятой. Например, не схема излучения, а диаграмма направленности. Офсетная, параболическая и пр. это подвиды зеркальных антенн, где имеется излучатель и отражатель. Ну и самое коробящее: фазовращатель, а не фазосдвигатель.

Я понимаю, что это перевод, но можно было хотя бы погуглить, как правильно термины переводятся.
Знаю о таком, спасибо. При использовании показался очень тяжеловесным и неповоротливым.
Было бы хорошо добавить возможность собирать приложения армовым тулчейном под windows, а отлаживаться средствами VS. Чувствую, что в больших проектах на пересборку будет тратиться куча времени
DS-5 стоит прилично для одинокого радиолюбителя, для компании же эти затраты окупаются вмиг.
До того, как познакомился с DS-5, кросс-компиляция под ARM была головной болью. Сейчас же это всё происходит без каких-либо проблем.

Поддерживается как сборка под linux, так и под голый ARM. Можно отлаживаться через gdb или JTAG, в т. ч. и производить трассировку инструкций при условии поддержки этого как аппаратной платформой, так и отладчиком.

P. S. Никак не связан с производителем, просто дейстивительно приятно использовать этот инструмент в работе. Если есть какие-то вопросы, отвечу на них
На своей работе используем gitlab, в частности gitlab-CI.

> Допустим, у меня несколько контуров тестирования, девеоперский и продакшн, и все нужно собирать похожим образом с похожим наборов параметров. Удастся ли тут легко организовать такую схему?
Да, это делается достаточно легко. Помимо этого, возможно создать зависимости, например, если промежуточные тесты не проходят, CI-сервер даже не будет приступать к продакшн тестам.

> Python скрипты можно пускать в шагах сборки?
Конечно. На компьютере, который играет роль сервера, можно развернуть runner, который будет выполнять написанные сценарии либо в некой виртуальной машине, контейнере Docker, либо же в обычной командной строке (как cmd, так и bash).

> CI в таком варианте, по сути, настраивается для одного репозитория?
Верно, в каждом репозитории лежит свой файл сценария сборки и тестирования.

> Зависимости от нескольких репозиториев можно сделать?
Смотря что вы имеете в виду под зависимостями. Зависимость от успешной сборки другого, нигде не указанного репозитория? Зависимость от подмодуля?

P.S. Писал в личный блог пост по применению этой системы для сборки C++ проектов для Visual Studio и ARM DS-5. Если сообществу будет интересно, приведу в более приемлемый для хабра вид и опубликую.

Как найти
Пока можно прогуглить по фразе «Автоматизированная сборка C++ проектов в Gitlab CI»
А чем простой USB-TTL адаптер не подошёл? Тот же PL2303, который можно из Китая заказать за сущие копейки (по сравнению со временем и усилиями, потраченными на разработку и изготовление этого устройства).

UPD: его же в официальной вики и рекомендуют (тыц)

И да, справедливости ради, TTL это не 5 вольт, а 3.3. Пятью можно либо плату сжечб, либо контроллер UART
Судя по ответу на stackoverflow и документации, в RasPI всё же есть аппаратная возможность SPI-slave, просто не написан драйвер.

И да, по вашей ссылке речь идёт о MinnowBoardMax, а это совсем другая плата. Скорее всего, и для RasPI не стали возиться с драйвером, но вдруг.
UPD: извиняюсь, промахнулся с веткой
Александр, у вас нет возможности посмотреть, поддерживает ли Lightning работу SPI в качестве slave?
Нужен адаптер для чтения информации по SPI с внешней платы-мастера в пк. На примете RasPI, но сам по себе он поддерживает slave только с какими-то дикими костылями, в которые себе дороже лезть. Заранее спасибо
Про децимацию вы не совсем верно написали.
Суть не в том, что пропускаются какие-то из значений, а в том, что при простом прореживании произойдёт наложение спектров. А при использовании нескольких последних значений как бы применяется фильтр нижних частот с АЧХ вида sinc(f).

Информация

В рейтинге
Не участвует
Откуда
München, Bayern, Германия
Зарегистрирован
Активность