У меня есть встроенная идея проекта, который я хочу начать. у меня много вопросов

Это мой первый пост на stackoverflow, я слышал об этом веб-сайте, и я думаю, что он потрясающий! Давайте посмотрим, смогу ли я получить некоторые рекомендации о том, как начать свой проект.

Идея: По сути, я хочу создать свой собственный контроллер OSC (OSC — это протокол, основанный на UDP, с намерением заменить MIDI). Что интересно в этом, так это то, что я хочу построить контроллер как гитару, чтобы я мог использовать его как синтезатор и включить некоторые типичные аппаратные средства MIDI-контроллера в корпус гитары. Это будет включать в себя пэды, чувствительные к силе нажатия, оптические энкодеры, ЖК-панель, струны, чувствительные к скорости нажатия, и лады, чувствительные к силе нажатия. Вот пример.

Мои вопросы. Я не понимаю, как начать проект такого масштаба и сложности. На базовом низком уровне кажется, что прошивка будет иметь дело только с основными целыми числами и преобразованием в соответствующие сигналы OSC. Я не знаю, как выбрать аппаратное обеспечение и язык программирования или даже как реализовать этот протокол. Возможно, я откусываю больше, чем могу прожевать, но я думаю, что это хороший проект для получения хорошего понимания того, как работает встроенное оборудование, и программирования параллельных систем с низкой задержкой.

  1. Что было бы хорошей аппаратной платформой для создания этого устройства? Я предполагаю, что PIC18 будут слишком медленными для работы с OSC, поскольку это современный протокол. Какой тип микроконтроллера может работать с реализацией OSC?
  2. На каком языке лучше всего реализовать этот протокол? Я понимаю, что C обычно используется для встроенного программного обеспечения, но Ada вызвала мой интерес. Цель здесь состоит в том, чтобы создать прошивку с низкой задержкой, которая может обрабатывать несколько входных данных от пользователя. Я так понимаю, Ада используется во многих подобных ситуациях и является "более стабильной"? Что вы думаете по этому поводу?
  3. Можно ли смоделировать аппаратное обеспечение и микроконтроллер, не имея физического оборудования? Я немного опасаюсь вкладывать несколько сотен долларов в аппаратное обеспечение, не зная, что оно подходит для моих нужд (у меня бюджет студента). Если бы я мог смоделировать все входные данные и написать прошивку, не имея оборудования, это сделало бы меня гораздо более уверенным в том, что я смогу завершить этот проект. Даже возможность смоделировать базовую версию моей идеи была бы более идеальной, чем ничего.

Я надеюсь, что смогу получить некоторую информацию по этому вопросу, и если мои вопросы об оборудовании не подходят для этого сайта, я пойму, если вы, ребята, не решаетесь дать мне совет по поводу оборудования.

Еще раз спасибо!


person Community    schedule 08.10.2009    source источник


Ответы (4)


  1. Что-то с поддержкой Ethernet и доступным сетевым стеком казалось бы разумным. Вы ищете готовую плату или разрабатываете свою собственную? Многие микроконтроллеры ARM включают встроенные контроллеры Ethernet. Вам необходимо рассмотреть вопрос о поддержке сетевого оборудования и о том, требует ли такая поддержка (или даже само приложение) ОС или RTOS.

  2. Компиляторы C используются почти для всех архитектур от 8 до 64 бит. Однако, если вы используете 32-битную часть с более чем несколькими десятками килобайт ОЗУ, C++ жизнеспособн и почти вездесущ. Ада - более редкий зверь с меньшей поддержкой, и за пределами военного / аэрокосмического сектора был бы необычным выбором, ИМО. Вам может понадобиться сторонняя поддержка, такая как сетевой стек и драйверы Ethernet — будут ли они доступны для Ada; по разумной цене?

  3. Возможно, вам не потребуется моделировать аппаратное обеспечение на уровне инструкций или циклов. Если вы используете C или C++, вы можете прототипировать большую часть кода на ПК. Преимущество в том, что у ПК уже есть поддержка сети. Многие цепочки инструментов для разработки встраиваемых систем включают в себя симуляторы инструкций, некоторые также имитируют встроенные периферийные устройства, но их использование ограничено — они не выполняются в режиме реального времени, а моделирование внешнего ввода-вывода может быть сложным и непрактичным.

**[edit]**Относительно C++ (в ответ на комментарий Джейсона С.). Дело не в том, что C++ обязательно требует больше памяти; вы платите за функции, которые вы используете. Однако необходимо соблюдать осторожность, поскольку вещи, которые C++ делает простыми и привлекательными, могут иметь скрытые затраты ресурсов. Я использую C++ во встраиваемых системах, но редко, например, использую стандартную библиотеку C++ — она великолепна и экономит много времени, но требует больших затрат ресурсов и детерминизма, которые некоторые системы могут себе позволить. Я успешно использовал C++ в 8- и 16-битных системах, но преимущества не так критичны, когда используемое подмножество сильно ограничено, а тело кода маленькое. Например, я бы не советовал вам изучать C++ только для того, чтобы использовать его в 8-битной системе; но если вы уже знаете C++, продолжайте (с осторожностью). В настоящее время я работаю над устройством dsPICF33, и отсутствие поддержки C++ очень расстраивает.

person Clifford    schedule 08.10.2009
comment
Жизнеспособность C++ не имеет ничего общего с 32-битными частями или десятками килобайт оперативной памяти. Это миф. Если вы программируете с динамически распределяемой памятью и сложными конструкторами и виртуальными функциями + тому подобное, вам потребуется больше оперативной памяти. Но с основами все в порядке, и хороший компилятор оптимизирует. C++ помогает с инкапсуляцией + модульностью, и я бы хотел, чтобы больше производителей встраиваемых процессоров предлагали компилятор C++. - person Jason S; 09.10.2009
comment
Согласованный; с C++ вы платите за то, что используете - я, конечно, не собирался распространять «миф». Однако, если ограничения жесткие, то, что вы можете использовать, может сделать его менее привлекательным, если вам нужно одновременно освоить C++. Как сказал Страуструп: В C++ труднее выстрелить себе в ногу, но когда вы это сделаете, вам оторвет всю ногу. Более того, на 32-битных платформах доступны зрелые и надежные компиляторы C++ (например, GCC широко распространен); на более мелких объектах качество и соответствие могут быть более изменчивыми. - person Clifford; 09.10.2009

  1. Для начала взгляните на Arduino и Make Controller. Оба являются модулями микроконтроллеров с открытым исходным кодом (hw&sw), которые могут обрабатывать OSC и имеют сильные сообщества пользователей. Вы можете найти примеры видео для обоих на YouTube.

  2. И C, и Ada по-прежнему компилируются в машинный код, поэтому, если вы хотите получить максимальный контроль над своим оборудованием, вы можете взглянуть на язык ассемблера, но только тогда, когда это станет абсолютно необходимым. До тех пор я бы придерживался C. Это заведет вас довольно далеко.

  3. Да, можно смоделировать вашу схему в программном обеспечении. Тем не менее, некоторые вещи просто проще с реальным оборудованием. Но некоторые хорошие примеры программного обеспечения можно найти в учебных пособиях по Max/MSP на веб-сайте Cycling '74. Max/MSP — это своего рода графический язык программирования, который часто используется для взаимодействия компьютера с оборудованием. Эта статья даст вам некоторые идеи о том, что он может сделать .

  4. Подобно Max/MSP, это продукт с открытым исходным кодом под названием Pd. Он менее отполирован, чем Max/MSP, но поскольку он доступен бесплатно, вы можете начать возиться с ним в любое время.

  5. Пара хороших книг для начинающих — «Физические вычисления» Тома Айго и «Практическая электроника для изобретателей» Пола Шерца. У Тома Айго также есть очень информативный веб-сайт.

  6. Несколько хороших журналов, которые могут оказаться полезными, это Make, Circuit Cellar и Nuts & Volts. Все они в некоторой степени связаны с типом электроники, которую вы будете использовать для такого проекта.

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

person Joe Internet    schedule 09.10.2009

Возможно, вы захотите взглянуть на что-то вроде gumstix. . маленький, маломощный, работает под управлением Linux, беспроводный и дешевый!

Похоже, что есть доступные библиотеки Linux OSC. вы определенно можете создать прототип своего приложения на ПК с Linux, а затем выполнить кросс-компиляцию на встроенной платформе Linux.

person simon    schedule 08.10.2009

Существует также PIC32, основанный на процессоре MIPS. Я бы посоветовал использовать Ada из-за его функций в реальном времени, но вам также придется портировать среду выполнения, чтобы она работала, если только вы не используете язык со средой выполнения профиля с нулевым следом, что также выполнимо.

person Luke A. Guest    schedule 08.03.2011