epcmsu 0 10 апреля, 2019 Опубликовано 10 апреля, 2019 (изменено) · Жалоба Задание NXP LPC4370: написать драйвера USB HS, высокоскоростного АЦП, а также демонстрационную прошивку Оборудование: 2 платы LPC-Link2 с контроллером NXP LPC4370:https://www.embeddedartists.com/products/lpc-link2/https://www.nxp.com/support/developer-resources/software-development-tools/lpc-developer-resources-/lpc-microcontroller-utilities/lpc-link2:OM13054 Одна плата используется в качестве целевого микроконтроллера. Другая плата используется в качестве программатора. Также программировать можно через Segger J-Link на усмотрение разработчика. Работы не подразумевают сложных работ типа написания USB стэка или программирования на специальных регистрах. Подразумевается обертывание готовых примеров от производителя в модули с требуемыми характеристиками. Требуется разработать: Драйвера USB HS (High Speed) Драйвера высокоскоростного АЦП Прошивку, использующую разработанные драйвера, для сбора данных с 4 каналов АЦП и передачи результатов измерений на ПК и отправки управляющих команд по параллельной шине. Общие требования: Язык программирования – C. Среда разработки: любая доступная по российским меркам среда разработки. Каждый драйвер должен быть оформлен в виде независимого программного модуля с интерфейсом, по приложенному заголовочному файлу. Заголовочные файлы можно менять по согласованию с заказчиком. Должна быть возможность использовать каждый из модулей в изолированном проекте независимо от других модулей. При совместном использовании всех разработанных модулей не должно возникать конфликтов. При совместном использовании все модули должны соответствовать тем же требованиям, то и при изолированном использовании. Требования к драйверу USB HS: Поддержка класса USB CDC Возможность подключения с ПК под управлением ОС Windows 7 и/или Linux Ubuntu 16.04+ (по договорённости) путём обращения к виртуальному COM-порту. Скорость передачи данных минимум 100 Мбит/с в обоих направлениях (не обязательно одновременно). Буфер на отправку и на приём данных размером не менее 64 кБайт. Наличие функции, позволяющей зарегистрировать обработчик на события получения данных с ПК. Новые данные, не умещающиеся в буфер приёма отбрасываются или перезаписывают наиболее старые данные по договорённости. Данные на отправку, превышающие возможности буфера отправки, не принимаются к отправке. Требования к драйверу АЦП: Одновременное измерение 4 каналов с частотой дискретизации не менее 10*10^6 измерений в секунду на каждый канал. Сохранение результатов измерений в циклический буфер, указанный пользователем. Возможность регистрации обработчика событий начала заполнения первой половины буфера или начала заполнения второй половины буфера. Требования к прошивке: Инициализация и взаимодействие с периферийными блоками должно использоваться только с использованием разработанных драйверов. Прямого взаимодействия прошивки с периферией без использования драйверов быть не должно. Прошивка должна приводить измеренные с частотой дискретизации АЦП значения к частоте 1 МГц с использованием аппаратного или программного сглаживания методом скользящего среднего и экспоненциального усреднения. Перечень материалов для сдачи: Исходный код проекта для выбранной среды разработки. Набор файлов исходного кода и заголовочных файлов без конфигурационных файлов проекта (для интеграции в другие среды). Набор библиотек, драйверов и других зависимостей, используемых в проекте. Руководство по установке среды разработки, подключению библиотек и настройке проекта (нужно описать процесс создания и настройки проекта «с нуля», будет проверяться на чистом наборе файлов). Документация на драйвера, если требуется указать какие-то требования и ограничения на последовательность инициализации. Работа будет проверяться путём проведения последовательных тестов: Собирается демонстрационная прошивка с модулями на чистой системе по предоставленному руководству. Прошивка должна скомпилироваться, слинковаться, залиться и запуститься, что проверяется в режиме отладки. Плата подключается к компьютеру по интерфейсу USB. Плата должна обнаружиться операционной системой и должен быть создан COM порт(TTY устройство для Linux). Плата подсоединяется к источникам сигнала (до 3 независимых сигналов в диапазоне напряжений 100-900 мВ), подключаемых одновременно к осциллографу. На компьютере запускается программа, сохраняющая все полученные данные в файл. Данные должны идти в бинарном формате: U1_t1, U2_t1, U3_t1, U4_t1, U1_t2, U2_t2, и так далее, где UX-tY это измерение длиной 16 бит с канала X в момент времени Y. Дискретизация по времени 1 МГц. 4 канал настраивается на невыведенный контакт в корпусе BGA100, но выведенный в корпусе BGA256 для LPC4370. В итоге проверяется, что объем данных соответствует 8 МБ в секунду. Проверяется, что эти таблицы, будучи сконвертированы в графики, соответствуют подаваемым сигналам, кроме сигнала с 4 канала, который не подключен. На графиках амплитуда сигналов пересчитанная в мВ соответствует поданным сигналам, наблюдаемым на осциллографе. На графиках нет разрывов, если нет разрывов на подаваемом сигнале. Проверяется, что замена считанного числа в одном из аналоговых каналов на программно генерируемое число не приводит к нарушению последовательности этих чисел на компьютере. Проверяется, что принимаемый поток данных можно запустить и остановить с компьютера посылкой команды "start" или "stop" в COM порт. Исполнение команды идёт по последнему вводимому символу. Проверяется, что другие вводимые символы не влияют на работу прошивки. Проверяется, что при посылке потока нулей ('\0') в COM порт, где на каждые 500000 - 2000000 нулей приходится одна единица, контроллер реагирует изменением состояния (например изменяет состояние светодиода). Нули посылаются со скоростью до 100 Мбит в секунду. Прошивка, а не драйвер, должна обеспечивать этот функционал. Далее за неделю заказчик проверяет, что работа функций драйверов соответствует их заголовочному файлу. Если найдены несоответствия, то заказчик составляет список таких несоответствий и исполнитель устраняет их, не внося новые. Ошибки, существовавшие в первой версии, но не указанные в списке, устранять не нужно. Новые внесенные ошибки устранять нужно. Оплата: 40 000 рублей Сроки: месяц Изменено 10 апреля, 2019 пользователем epcmsu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
epcmsu 0 10 апреля, 2019 Опубликовано 10 апреля, 2019 · Жалоба почта для связи и откликов: [email protected] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 10 апреля, 2019 Опубликовано 10 апреля, 2019 · Жалоба 2 hours ago, epcmsu said: Поддержка класса USB CDC Возможность подключения с ПК под управлением ОС Windows 7 и/или Linux Ubuntu 16.04+ (по договорённости) путём обращения к виртуальному COM-порту. Скорость передачи данных минимум 100 Мбит/с в обоих направлениях (не обязательно одновременно). Думаю что сначала вам нужно доказать в принципе возможность передавать данные по VCOM на скорости 100 Mbit из микроконтроллера Cortex-M4 200 МГц. По моим данным это невозможно - Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enclis_ 0 10 апреля, 2019 Опубликовано 10 апреля, 2019 · Жалоба Когда-то очень давно я пробовал работать с LPC4370, тоже взял тогда LPC-Link2. Хотел попробовать 80Msps 12-бит АЦП. Прокачать на нём 100Mb/s через виртуальный COM порт почти не реально. Можно через MII/RMII, у LPC4370 есть MAC контроллер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 10 апреля, 2019 Опубликовано 10 апреля, 2019 · Жалоба 4 hours ago, epcmsu said: Оплата: 40 000 рублей Сроки: месяц Ваши сроки и стоимость сильно не соответствуют тому, что нужно сделать. Денег нужно, как минимум, в три раза больше, а срок - увеличть раза в полтора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 апреля, 2019 Опубликовано 10 апреля, 2019 · Жалоба 10 часов назад, epcmsu сказал: Задание Работы не подразумевают сложных работ типа написания USB стэка или программирования на специальных регистрах. Подразумевается обертывание готовых примеров от производителя в модули с требуемыми характеристиками. Готовые примеры с указанием: что и куда надо вставить и где обернуть - предоставляете Вы? Когда вижу фразы подобные этой, сразу возникает закономерный вопрос: "А почему Вы сами не сделаете этого"? Цитата Должна быть возможность использовать каждый из модулей в изолированном проекте независимо от других модулей. Данный пункт вообще не понятен.... Изолированно от чего? От настройки периферии? Это не возможно по определению. Или Вы никогда не работали с микроконтроллерами. Понятия из больших ОС тут не применимы. Цитата Поддержка класса USB CDC Возможность подключения с ПК под управлением ОС Windows 7 и/или Linux Ubuntu 16.04+ (по договорённости) путём обращения к виртуальному COM-порту. Скорость передачи данных минимум 100 Мбит/с в обоих направлениях (не обязательно одновременно). Вы это серьёзно??? 100 Мбит/с через CDC? Как-то не верится...... Вы добивались этого реально? Цитата Наличие функции, позволяющей зарегистрировать обработчик на события получения данных с ПК. А если окажется что Вы (или ваши разработчики) не сможете реализовать этот самый обработчик настолько оптимально, чтобы не завалить работу всего остального стека на 100 Мб/с? Кто будет крайний? И кто будет это определять (крайнего)? Цитата Новые данные, не умещающиеся в буфер приёма отбрасываются или перезаписывают наиболее старые данные по договорённости. Данные на отправку, превышающие возможности буфера отправки, не принимаются к отправке. Тогда как вообще можно определить, что хоть что-то там реально принимается правильно? Ведь всегда можно будет сказать: "Так оно перезаписалось из-за того, что "возможности были превышены". Всё в соответствии с ТЗ". Цитата Требования к прошивке: Инициализация и взаимодействие с периферийными блоками должно использоваться только с использованием разработанных драйверов. Прямого взаимодействия прошивки с периферией без использования драйверов быть не должно. Извините - а кто общую периферию инитить должен? И как именно? всякие там: PLL, GPIO, мультиплексоры ног, тактовые генераторы, коих в LPC4370 немало, и которые тактируют сразу разные периферийные блоки? Как Вы это себе представляете? Скажем - если желаемый драйвер проинитит источники тактирования как ему нравится, а другие драйверы вашего ПО - переинитят их по своему желанию? Или в вашей прошивке больше никакая периферия не будет использоваться? Цитата Плата подсоединяется к источникам сигнала (до 3 независимых сигналов в диапазоне напряжений 100-900 мВ), подключаемых одновременно к осциллографу. На компьютере запускается программа, сохраняющая все полученные данные в файл. Какая программа? Кто её будет писать? А если возьмёте готовую, то где гарантия, что она не будет терять данные?? Да даже если сами вы её напишете, то где гарантия, и как будет выявляться кто именно виновен в потерях: ПО на стороне ПК или прошивка? Я так подозреваю что виновен будет тот, кого вы здесь ищете. По умолчанию.... Цитата Оплата: 40 000 рублей Сроки: месяц Вы это серьёзно??? PS: Я имею и эти платы (2 шт.) и ПО для них писал по работе с АЦП на 80MS/s и передачей по USB (только не HS и, естественно, не CDC). Но даже мне не интересно при таких-то условиях... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 апреля, 2019 Опубликовано 10 апреля, 2019 · Жалоба 9 часов назад, AlexandrY сказал: Думаю что сначала вам нужно доказать в принципе возможность передавать данные по VCOM на скорости 100 Mbit из микроконтроллера Cortex-M4 200 МГц. По моим данным это невозможно - Тоже думаю что это так. Я даже сомневаюсь что вообще этот МК сможет успевать передавать что-то по USB с той же скоростью, при одновременной работе ADC на 40MS/s. Даже при работе через чистые конечные точки, а о CDC вообще речи нет. Когда у меня читался поток данных с АЦП через DMA на 80MS/s при оптимальном режиме с упаковкой по два слова в одно 32-битное, то работа всего остального M4-ядра заметно подтормаживалась. Очень даже заметно. А если ещё такой-же поток запустить через USB - есть большие сомнения, что такое вообще будет работать. А если ещё учесть, что некий "обработчик" вызываемый из USB-стека будет писать кто-то, кто сам не способен реализовать оптимальную и быструю работу всего этого хозяйства самостоятельно, то эти сомнения превращаются в уверенность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 11 апреля, 2019 Опубликовано 11 апреля, 2019 · Жалоба 4 hours ago, jcxz said: Тоже думаю что это так. У меня выше 2.2 МБит/сек не вышло. МК LPC4337, USB CDC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a123-flex 0 11 апреля, 2019 Опубликовано 11 апреля, 2019 · Жалоба В 10.04.2019 в 23:48, jcxz сказал: Тоже думаю что это так Думаю, ТС уже узнал все что хотел. Бесплатно. Впрочем, именно в этом ведь и есть смысл форума - помогать людям ?))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bgc 0 14 апреля, 2019 Опубликовано 14 апреля, 2019 · Жалоба On 4/10/2019 at 12:41 PM, epcmsu said: Возможность подключения с ПК под управлением ОС Windows 7 и/или Linux Ubuntu 16.04+ (по договорённости) путём обращения к виртуальному COM-порту. Скорость передачи данных минимум 100 Мбит/с в обоих направлениях (не обязательно одновременно). IMHO- недостижимо. Именно по причине ограничений порта заточенного под 115К был опыт работы на 5Мбит/с - но в зависимости от железа на стороне PC (window) зачастую выше 2M просто не работало. предельные эксперименты через VCOM - если не ошибаюсь 11Мбит/с тут однозначно надо переходить на Ethernet. И что важно, существенно упростится работа программиста на PC Можно, конечно сделать и на USB 2,0 - работать будет, но не через виртуальный ком порт. ну и по опыту - стабильность работы на разных компьютерах будет отличаться. топик стартер молодец - очень все подробно расписал. Респект. А то, что задача не очень оптимально поставлена - так на то и форум. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 14 апреля, 2019 Опубликовано 14 апреля, 2019 · Жалоба 2 hours ago, bgc said: IMHO- недостижимо. Именно по причине ограничений порта заточенного под 115К был опыт работы на 5Мбит/с - но в зависимости от железа на стороне PC (window) зачастую выше 2M просто не работало. предельные эксперименты через VCOM - если не ошибаюсь 11Мбит/с Дело не в VCOM. Сам по себе VCOM даст 500 мбит/c не напрягаясь. Микроконторллер нужен пошустрей. Например RZ/T1 (Cortex-R4 600 МГц) от Renesas спокойно бы сделал 100 Mbit по VCOM. А вот на стандартном 100Base-T Ethernet-е ну никак не получить 100 Mbit, нужен гигабитный Ethernet, а это уже вам не Cortex-M4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bgc 0 14 апреля, 2019 Опубликовано 14 апреля, 2019 · Жалоба 2 hours ago, AlexandrY said: Дело не в VCOM. Сам по себе VCOM даст 500 мбит/c не напрягаясь. Микроконторллер нужен пошустрей. Например RZ/T1 (Cortex-R4 600 МГц) от Renesas спокойно бы сделал 100 Mbit по VCOM. А вот на стандартном 100Base-T Ethernet-е ну никак не получить 100 Mbit, нужен гигабитный Ethernet, а это уже вам не Cortex-M4 возможно. Я говорю про опыт хождения по граблям со стороны PC. Может программисты, которые мне помогали на винде не тянули... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aldec 0 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба Quote Язык программирования – C. Если нужно вытянуть из контроллера 200% то тогда АСМ, SSE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 37 минут назад, Aldec сказал: Если нужно вытянуть из контроллера 200% то тогда АСМ, SSE Думаю заблуждаетесь, тут вам не PIC контроллеры, где это может быть из-за кривоты тех "C" для оч огранниченных ресурсов. TC похоже не оч разбирается в ARM процах, задание как бы из далеких прошлых для логики, автоматики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться