Jump to content

    

Almaz1988

Участник
  • Content Count

    184
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Almaz1988

  • Rank
    Частый гость

Recent Profile Visitors

2504 profile views
  1. Новое видео. Громкость убавил, динамик не скачет. Он просто свистит. На видео на заднем плане экран логического анализатора, который висит на I2C-шине кодека (WM8960). Можно разглядеть три метки времени, на которых по шине проходят пакеты. Первая пачка пакетов проходит в момент включения воспроизведения аудио командой aplay: write to 0x1A ack data: 0x0E 0x4E write to 0x1A ack data: 0x6A 0x30 write to 0x1A ack data: 0x6C 0x00 write to 0x1A ack data: 0x6E 0x03 write to 0x1A ack data: 0x68 0x36 write to 0x1A ack data: 0x34 0x01 write to 0x1A ack data: 0x08 0x49 write to 0x1A ack data: 0x32 0xC0 write to 0x1A ack data: 0x35 0x81 write to 0x1A ack data: 0x5E 0x0C write to 0x1A ack data: 0x35 0xF9 write to 0x1A ack data: 0x62 0xF7 write to 0x1A ack data: 0x0A 0x00 Парсинг этих пакетов согласно даташиту: INFO:ICs.wm8960.parser: R7 0x4e INFO:ICs.wm8960.parser: R7: Left/right ADC channel swap - no swap INFO:ICs.wm8960.parser: R7: BCLK invert bit - not inverted INFO:ICs.wm8960.parser: R7: Master/slave mode control - enable slave mode INFO:ICs.wm8960.parser: R7: Left/right DAC channel swap - no swap INFO:ICs.wm8960.parser: R7: Left/right DAC channel swap - normal LRCLK polarity/MSB available on 2nd BCLK rising edge (DSP mode) INFO:ICs.wm8960.parser: R7: Audio data Word length - 32 bits INFO:ICs.wm8960.parser: R7: Audio Data Format Select - I2S format INFO:ICs.wm8960.parser: R53 0x30 INFO:ICs.wm8960.parser: R53: Fractional (K) part of PLL1 input/output freq ratio. - 48 INFO:ICs.wm8960.parser: R54 0x0 INFO:ICs.wm8960.parser: R54: Fractional (K) part of PLL1 input/output freq ratio. - 0 INFO:ICs.wm8960.parser: R55 0x3 INFO:ICs.wm8960.parser: R55: Fractional (K) part of PLL1 input/output freq ratio. - 3 INFO:ICs.wm8960.parser: R52 0x36 INFO:ICs.wm8960.parser: R52: SYSCLK Output to GPIO Clock Division Ratio - SYSCLK INFO:ICs.wm8960.parser: R52: Enable Integer Mode - Fractional Mode INFO:ICs.wm8960.parser: R52: Divide MCLK by 2 before input to PLL - Divide by 2 INFO:ICs.wm8960.parser: R52: Integer (N) part of PLL input/output freq ratio. User 5 < x < 13. - None INFO:ICs.wm8960.parser: R26 0x1 INFO:ICs.wm8960.parser: R26: DAC Left - Power down INFO:ICs.wm8960.parser: R26: DAC Right - Power down INFO:ICs.wm8960.parser: R26: LOUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: ROUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: SPK_LP/SPK_LN output buffers - Power down INFO:ICs.wm8960.parser: R26: SPK_RP/SPK_RN output buffers - Power down INFO:ICs.wm8960.parser: R26: OUT3 Output buffer - Power down INFO:ICs.wm8960.parser: R26: PLL Enable - Power up INFO:ICs.wm8960.parser: R4 0x49 INFO:ICs.wm8960.parser: R4: ADC sample rate divider - SYSCLK / (1.5 * 256) INFO:ICs.wm8960.parser: R4: DAC Sample rate divider - SYSCLK / (1.5 * 256) INFO:ICs.wm8960.parser: R4: SYSCLK Pre-divider. MCLK/PLL output will be predivided by this value to generate SYSCLK - divide SYSCLK by 1 INFO:ICs.wm8960.parser: R4: SYSCLK Selection - SYSCLK derived from PLL output INFO:ICs.wm8960.parser: R25 0xc0 INFO:ICs.wm8960.parser: R25: Vmid Divider Enable and Select - 2 x 50kOhm divider enabled (for playback / record) INFO:ICs.wm8960.parser: R25: VREF - Power up INFO:ICs.wm8960.parser: R25: Analogue in PGA Left - Power down INFO:ICs.wm8960.parser: R25: Analogue in PGA Right - Power down INFO:ICs.wm8960.parser: R25: ADC Left - Power down INFO:ICs.wm8960.parser: R25: ADC Right - Power down INFO:ICs.wm8960.parser: R25: MICBIAS - Power down INFO:ICs.wm8960.parser: R25: Master clock disable - Master clock enabled INFO:ICs.wm8960.parser: R26 0x181 INFO:ICs.wm8960.parser: R26: DAC Left - Power up INFO:ICs.wm8960.parser: R26: DAC Right - Power up INFO:ICs.wm8960.parser: R26: LOUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: ROUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: SPK_LP/SPK_LN output buffers - Power down INFO:ICs.wm8960.parser: R26: SPK_RP/SPK_RN output buffers - Power down INFO:ICs.wm8960.parser: R26: OUT3 Output buffer - Power down INFO:ICs.wm8960.parser: R26: PLL Enable - Power up INFO:ICs.wm8960.parser: R47 0xc INFO:ICs.wm8960.parser: R47: Left channel input PGA enable - PGA disabled INFO:ICs.wm8960.parser: R47: Right channel input PGA enable - PGA disabled INFO:ICs.wm8960.parser: R47: Left output mixer enable control - enabled INFO:ICs.wm8960.parser: R47: Right output mixer enable control - enabled INFO:ICs.wm8960.parser: R26 0x1f9 INFO:ICs.wm8960.parser: R26: DAC Left - Power up INFO:ICs.wm8960.parser: R26: DAC Right - Power up INFO:ICs.wm8960.parser: R26: LOUT1 output buffer - Power up INFO:ICs.wm8960.parser: R26: ROUT1 output buffer - Power up INFO:ICs.wm8960.parser: R26: SPK_LP/SPK_LN output buffers - Power up INFO:ICs.wm8960.parser: R26: SPK_RP/SPK_RN output buffers - Power up INFO:ICs.wm8960.parser: R26: OUT3 Output buffer - Power down INFO:ICs.wm8960.parser: R26: PLL Enable - Power up INFO:ICs.wm8960.parser: R49 0xf7 INFO:ICs.wm8960.parser: R49: Enable class D Speaker Outputs - Left and Right speaker only INFO:ICs.wm8960.parser: R5 0x0 INFO:ICs.wm8960.parser: R5: DAC 6db Attenuate Enable - DAC attenuate disabled INFO:ICs.wm8960.parser: R5: ADC polarity - polarity not inverted INFO:ICs.wm8960.parser: R5: DAC Digital Soft - No mute INFO:ICs.wm8960.parser: R5: De-emphasis Control - No de-emphasis INFO:ICs.wm8960.parser: R5: ADC High Pass Filter - Enable 2. Вторая пачка, состоящая из одного единственного пакета проходит в момент завершения работы программы aplay: write to 0x1A ack data: 0x0A 0x08 Парсинг этого пакета: INFO:ICs.wm8960.parser: R5 0x8 INFO:ICs.wm8960.parser: R5: DAC 6db Attenuate Enable - DAC attenuate disabled INFO:ICs.wm8960.parser: R5: ADC polarity - polarity not inverted INFO:ICs.wm8960.parser: R5: DAC Digital Soft - Mute INFO:ICs.wm8960.parser: R5: De-emphasis Control - No de-emphasis INFO:ICs.wm8960.parser: R5: ADC High Pass Filter - Enable 3. Третья пачка проходит спустя несколько секунд после завершения работы программы aplay. Свист прекращается только после этого события: write to 0x1A ack data: 0x08 0x48 write to 0x1A ack data: 0x35 0xF8 write to 0x1A ack data: 0x35 0x80 write to 0x1A ack data: 0x62 0x37 write to 0x1A ack data: 0x5E 0x00 write to 0x1A ack data: 0x34 0x00 write to 0x1A ack data: 0x33 0x40 Парсинг этих пакетов: INFO:ICs.wm8960.parser: R4 0x48 INFO:ICs.wm8960.parser: R4: ADC sample rate divider - SYSCLK / (1.5 * 256) INFO:ICs.wm8960.parser: R4: DAC Sample rate divider - SYSCLK / (1.5 * 256) INFO:ICs.wm8960.parser: R4: SYSCLK Pre-divider. MCLK/PLL output will be predivided by this value to generate SYSCLK - divide SYSCLK by 1 INFO:ICs.wm8960.parser: R4: SYSCLK Selection - SYSCLK derived from MCLK INFO:ICs.wm8960.parser: R26 0x1f8 INFO:ICs.wm8960.parser: R26: DAC Left - Power up INFO:ICs.wm8960.parser: R26: DAC Right - Power up INFO:ICs.wm8960.parser: R26: LOUT1 output buffer - Power up INFO:ICs.wm8960.parser: R26: ROUT1 output buffer - Power up INFO:ICs.wm8960.parser: R26: SPK_LP/SPK_LN output buffers - Power up INFO:ICs.wm8960.parser: R26: SPK_RP/SPK_RN output buffers - Power up INFO:ICs.wm8960.parser: R26: OUT3 Output buffer - Power down INFO:ICs.wm8960.parser: R26: PLL Enable - Power down INFO:ICs.wm8960.parser: R26 0x180 INFO:ICs.wm8960.parser: R26: DAC Left - Power up INFO:ICs.wm8960.parser: R26: DAC Right - Power up INFO:ICs.wm8960.parser: R26: LOUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: ROUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: SPK_LP/SPK_LN output buffers - Power down INFO:ICs.wm8960.parser: R26: SPK_RP/SPK_RN output buffers - Power down INFO:ICs.wm8960.parser: R26: OUT3 Output buffer - Power down INFO:ICs.wm8960.parser: R26: PLL Enable - Power down INFO:ICs.wm8960.parser: R49 0x37 INFO:ICs.wm8960.parser: R49: Enable class D Speaker Outputs - Off INFO:ICs.wm8960.parser: R47 0x0 INFO:ICs.wm8960.parser: R47: Left channel input PGA enable - PGA disabled INFO:ICs.wm8960.parser: R47: Right channel input PGA enable - PGA disabled INFO:ICs.wm8960.parser: R47: Left output mixer enable control - disabled INFO:ICs.wm8960.parser: R47: Right output mixer enable control - disabled INFO:ICs.wm8960.parser: R26 0x0 INFO:ICs.wm8960.parser: R26: DAC Left - Power down INFO:ICs.wm8960.parser: R26: DAC Right - Power down INFO:ICs.wm8960.parser: R26: LOUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: ROUT1 output buffer - Power down INFO:ICs.wm8960.parser: R26: SPK_LP/SPK_LN output buffers - Power down INFO:ICs.wm8960.parser: R26: SPK_RP/SPK_RN output buffers - Power down INFO:ICs.wm8960.parser: R26: OUT3 Output buffer - Power down INFO:ICs.wm8960.parser: R26: PLL Enable - Power down INFO:ICs.wm8960.parser: R25 0x140 INFO:ICs.wm8960.parser: R25: Vmid Divider Enable and Select - 2 x 250kOhm divider enabled (for low-power standby) INFO:ICs.wm8960.parser: R25: VREF - Power up INFO:ICs.wm8960.parser: R25: Analogue in PGA Left - Power down INFO:ICs.wm8960.parser: R25: Analogue in PGA Right - Power down INFO:ICs.wm8960.parser: R25: ADC Left - Power down INFO:ICs.wm8960.parser: R25: ADC Right - Power down INFO:ICs.wm8960.parser: R25: MICBIAS - Power down INFO:ICs.wm8960.parser: R25: Master clock disable - Master clock enabled И да, едва различимый свист слышен сразу после подачи питания на плату. Задача по-прежнему актуальна. По-прежнему непонятно, в чем проблема - в железе и/или софте и как это лечить.
  2. Добрый день. Разработали плату под управление linux. На борту платы аудио-кодек WM8960 и усилитель звука TPA3136D2PWPR. Со звуком наблюдаются проблемы (см видео): 1. Какие-то потрескивающие шумы во время проигрывания - видимо, аппаратная проблема. 2. После завершения проигрывания файла в течении некоторого времени (2-3 секунды) наблюдается какой-то свист. В это время на шине SAI наблюдается тактирование. Пропадает тактирование - пропадает и шум. Видимо, проблема в софте. Принципиальная схема - тривиальная, из даташита, на стр 17 Нет идей, сколько это может стоить. Присылайте отклики на almaz.khamidullin@m2m-tele.com
  3. Доброго времени суток. Имеется программа (deletecor) под Linux: https://github.com/wireless-road/imx6ull-openwrt/tree/master/package/detector представленная в виде субмодуля в отдельном репозитории. Неообходимо: 1. Пересобрать приложение, мигрировав с Make на CMake. 2. Переместить исзодники приложения следующим образом: - имеется еще один пакет (Tensorflow), также представленный в виде субмодуля в отдельном репозитории: https://github.com/wireless-road/imx6ull-openwrt/tree/master/package/tensorflow - вот репозиторий этого субмодуля: https://github.com/wireless-road/tensorflow/tree/cf6ac4b7d09084e1857d36fa3870ab62ce2d359f - нужно переместить программу detector, включив его в состав пакета Tensorflow в качестве примера, вот сюда: https://github.com/wireless-road/tensorflow/tree/cf6ac4b7d09084e1857d36fa3870ab62ce2d359f/tensorflow/lite/examples Замысел заключается в том, чтобы появилась возможность создать Merge Request в оригинальный репозиторий Tensorflow с запросом включить приложение detector в качестве примера использования библиотеки Tensorflow. Т.е., если сейчас detector компилируется: $ make package/detector/compile (с помощью Makefile), то в конечном виде он должен компилироваться в составе tensorflow: $ make package/tensorflow/compile (с помощью CMakeLists.txt). Стоимость - 15к Для связи - almaz.khamidullin@m2m-tele.com
  4. Если верить статистике, то эмбедеры и в Москве далеко не все столько получают. P.s. Вы и на hh.ru на все вакансии откликаетесь вопросом: "А че так мало?"?)
  5. Предположил, что вы из города, сильно выделяющегося среди остальных по зарплатам. Раз это не так, - было бы интересно узнать, сколько, по вашему, должен получать сеньор-эмбедер в регионах?
  6. Добрый день. Вакансия программиста embedded linux в Казани либо на удаленке: https://kazan.hh.ru/vacancy/47113912 almaz.khamidullin@m2m-tele.com
  7. Добрый день. Ищу программиста embedded linux (OpenWrt) для поддержания и развития платформы под управлением OpenWrt. Предпочтительно с опытом работы с tensorflow-lite и нейронными сетями. Предстоит решить несколько задач: 1. На данный момент на железке протестирована работа библиотеки tensorflow-lite: https://github.com/wireless-road/imx6ull-openwrt/tree/tensorflow_lite/package/tensorflow Необходимо отладить сборку данного примера с включенной библиотекой XNNPACK. На данный момент ее пришлось отключить. Описание возникающей ошибки можно найти тут: https://github.com/tensorflow/tensorflow/issues/50029 2. Разработать приложение, распознающее видеопоток с помощью библиотеки tensorflow-lite. В качестве отправной точки можно взять вот эту репу: https://gitlab.com/tylerjbrooks/detector#detector Результат распознавания стримить куда-либо не нужно. Достаточно в логи высыпать текстовые сообщения с результатами распознавания и, по запросу, либо раз в N секунд/минут, либо при обнаружении интересующих объектов, сохранять jpeg-картинку с результатами распознавания, на которой опознанные объекты обведены в рамку. Видеокамера исправна, драйвера отлаживать не нужно. Нужно лишь написать пользовательское приложение. 3. То же, что и пункт 2, но с аппаратным ускорителем нейронных сеток (https://coral.ai/products/accelerator), подключенным по USB. 4. Прикрутить поддержку библиотеки zigbee2mqtt (https://www.zigbee2mqtt.io) и USB стика на базе микроконтроллера CC2538, поддерживающего данную библиотеку: https://modkam.ru/?p=1112 5. Реализовать демон, который бы возвращал сетевой интерфейс WWAN в режим AP в случае, если подключение к внешней точке доступа Wi-Fi в режиме STA провалилось (неверный пароль либо точка доступа пропала). В этом случае, железка становится полностью недоступной по Wi-Fi ни как AP, ни как STA. Нужно реализовать возврат интерфейса в режим AP, если STA зафейлился. Оплата за все 5 задач - 125к. almaz.khamidullin@m2m-tele.com
  8. Добрый день. Необходимо разработать несколько user space программ под embedded linux (ОС OpenWrt). 1. UDP2Can маршрутизатор. На железке есть два CAN интерфейса (CAN0 и CAN1), два сетевых интерфейса (Eth0 и Eth1) и два беспроводных сетевых интерфейса WWAN (wifi или 3g). В любой момент времени один или несколько из этих сетевых интерфейсов подключен к глобальной сети интернет. Программа должна: пересылать все CAN пакеты, принятые из заданного CAN интерфейса в заданный UDP-порт. пересылать все UDP пакеты, принятые на заданном порту сетевого интерфейса в заданный CAN интерфейс с предварительной валидацией принятого пакета (3 байта адрес на шине CAN, 1 байт - количество байт в пакете, 1-8 байт - собтсвенно сам пакет). Пример входных аргументов программы: ./udp2can -i CAN0 -l 15730 -d 15731, где -l - listening UDP port, -d - destination UDP port. В качестве отправной точки можно взять вот эти исходники. Прием CAN-пакетов в нем точно работает. Помимо программы для железки нужно будет предоставить простенькое приложение для хостовой машине, которая будет общаться с железкой (принимать/передавать пакеты). Ничего мудреного от хостового приложения не требуется, - лишь продемонстрировать работу встраиваемого приложения. Результат работы - пакет OpenWrt, который необходимо расположить тут и мерж реквест в Мастер ветку данной репы. Стоимость 10к. 2. Alexa Voice Skill example На той же самой железке портирована и полноценно работает программа SampleApp из состава avs-device-sdk. Необходимо написать тестовую программу, демонстрирующую работу Скиллов Amazon Voice Service, когда по кодовому слову выполняется определенное действие. Например, по команде "Alexa turn on the light" переключается в "1" какой-либо GPIO железки. Набор кодовых слов и соответствующих им действий должен задаваться в текстовом конфигурационном файле /etc/alexa_skills.conf Пример содержимого файла: "Alexa turn on the light" "echo 1 > /sys/class/gpio/gpio106/value" "Alexa turn off the light" "echo 0 > /sys/class/gpio/gpio106/value" Т.е. на каждой строке располагается кодовое слово/фраза в кавычках, далее пробел и исполняемая команда также в кавычках. Результат работы также оформить в виде мерж реквеста в Мастер ветку репы. 3. Запустить Zigbee2Mqtt на железке. На той же самой железке по USB подключается Zigbee стик на базе CC2538: фото Нужно добавить в репу поддержку данной либы в связке с данной железкой. Результат также оформить в виде мерж реквеста. Прошивку под CC2538 писать не нужно. Стоимость 25к. Для связи: почта - almaz.khamidullin@m2m-tele.com телеграм/ватсап - 8-926-420-69-72
  9. Добрый день. Есть исходники отладочной платы в Orcad. Скачать их можно на этой странице в разделе Design Resources. Плата импортирована в Altium. Полученные исходники можно скачать тут. Импорт из Orcad в Altium проходит не так как хотелось бы, в итоге есть проект, в котором принципиальная схема и печатная плата между собой никак не согласованы. Нужно "починить" проект, согласовав печатную плату и принципиальную схему между собой. По сути задача сводится к: 1. созданию SchLib/PcbLib на каждый электронный компонент, задействованный в проекте, где SchLib создается "выпрямлением" кривого УГО из принципиальной схемы, а PcbLib создается из футпринтов в печатной плате как есть без каких либо модификаций вообще. 45 артикулов компонентов может быть найдено в BOM-файле в корне проекта. 2. Замене оригинальных "кривых" УГО в принципиальной схеме проекта на библиотечные, созданные на шаге 1. 3. Замене оригиальных футпринтов в печатной плате на библиотечные, созданные на шаге 1. При этом в печатной плате не должно ничего поменяться, - ни размер, ни расположение ни одного футпринта/дорожки/отверстия/полигона, особенно по части разводки DDR4. Каждый SchLib должен содержать следующие перечень параметров, заполенных данными с digikey: Component Name Designator HelpURL Manufacturer Part Number Pin Count Price PriceQty PriceSupplier Temperature Value Каждый SchLib должен быть расположен в сетке с параметрами Visible Grid - 100mil, Snap Grid - 50mil. Работа крайне муторная, требующая внимательности и усидчивости, но вполне выполнимая. Проделывал вышеописанные манипуляции для другой платы. По итогу должен получиться проект платы с полным перечнем библиотечных SchLib/PcbLib компонентов, в котором: 1. принципиальная схема полностью идентична оригинальной, 2. Печатная плата полностью идентична оригинальной. 3. и принципиальная схема и печатная плата содержат строго библиотечные компоненты, 4. принципиальная схема и печатная плата плата дружат друг с другом ("No difference" при Design --> Update PCB). Стоимость работ - 40к. Почта - almaz.khamidullin@m2m-tele.com ватсап/телеграм - 8-926-420-69-72.
  10. Добрый день. Разрабатываем кастомное железо на базе процессора IMX6ULL под управлением OpenWrt. Ищу эмбедера линуксоида, который займется развитием проекта - необходимо прикрутить кучу нового функционала. Исходники: https://github.com/wireless-road/imx6ull-openwrt/tree/dockerize Перечень предстоящих задач: 1. Реализовать сборку существующих конфигов под docker-ом. 2. Добавить поддержку второго ethernet-интерфейса 3. Добавить поддержку сетевого интерфейса с помощью 3G модуля SIM5320E, подключенного по USB 4. Добавить поддержку видеокамеры с апппаратным кодеком H.264 с видеостримингом по RTSP 5. Реализовать дополнительный конфиг "smart home" - два десятка GPIO на вход/выход с прерываниями при срабатывании для input gpio и веб-страницой управления output gpio и отображения статуса input gpio. и т.д. Оплата по закрытии каждой задачи. Топик с описанием первой задачи: https://forum.openwrt.org/t/openwrt-image-builds-failed-under-docker/84590 Проблемные docker-файлы можно найти в ветке dockerize исходников: https://github.com/wireless-road/imx6ull-openwrt/tree/dockerize Просьба откликаться на почту almaz.khamidullin@m2m-tele.com либо в телегу @almaz_1c.