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 порт. Исполнение команды идёт по последнему вводимому символу. Проверяется, что другие вводимые символы не влияют на работу прошивки.
Проверяется, что при посылке потока нулей (′′) в COM порт, где на каждые 500000 - 2000000 нулей приходится одна единица, контроллер реагирует изменением состояния (например изменяет состояние светодиода). Нули посылаются со скоростью до 100 Мбит в секунду. Прошивка, а не драйвер, должна обеспечивать этот функционал.
Далее за неделю заказчик проверяет, что работа функций драйверов соответствует их заголовочному файлу. Если найдены несоответствия, то заказчик составляет список таких несоответствий и исполнитель устраняет их, не внося новые. Ошибки, существовавшие в первой версии, но не указанные в списке, устранять не нужно. Новые внесенные ошибки устранять нужно.

Скачать файл


Бюджет: 40000 руб.
Предоплата: имеется
Вид предложения: Удаленная работа (разовый заказ)
Категория: Программирование

Добавлено: 10.04.2019 в 12:26




Сделайте предложение по проекту:


Для того чтобы ответить на предложение, вам необходимо авторизоваться или зарегистрироваться на сайте


Комментарии:
Николай Шахов    13.04.2019   10:27:09     

Здравствуйте, ознакомился с описанием проекта.
Готов помочь в реализации

Пишите
https://vk.com/nic_vladimir
Telegram: app_prog
whatsapp +79162135192