2013-03-03 2 views
4

У меня есть Beaglebone работает Ubuntu. Мы хотим постоянно выбирать из 3 встроенных ATD-преобразователей со скоростью 100KS/s, и в каждом окне образцов мы будем запускать алгоритм взаимной корреляции DSP. Когда мы найдем значение корреляции выше порогового значения, мы отправим это значение на ПК.DSP на Beaglebone

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

С этим, как говорится, существует способ инициировать прерывания на Beaglebone, чтобы, если образец ATD готов, образец будет сохранен в памяти нашей программы , даже если программа не имеет процессора на время?

Спасибо!

ответ

0

Возможно, вы можете запустить EDMA или использовать PRUSS. Наверное, лучше спросить на [email protected] На BeagleBone нет ни одного DSP.

0

Это не совсем ответ на ваш вопрос, но, надеюсь, он объясняет, как работает этот процесс. Поскольку вы не указали, какое оборудование вы используете для преобразования AD, возможно, это самое лучшее, что можно сделать:

С аудиооборудованием, которое сталкивается с той же проблемой, решение исходит от аппаратного обеспечения и драйверов, работающих вместе : всякий раз, когда аппаратное обеспечение заполняет достаточно буфера, оно сигнализирует драйверу (через прерывание или какой-то аналогичный механизм). В некоторых случаях также возможно, что драйвер опробовал аппаратное обеспечение или что-то в этом роде, но это менее эффективное решение, и я не уверен, что кто-то делает это таким образом (возможно, на более дешевом оборудовании?). Оттуда процесс драйвера может вызывать право в процессе конечного пользователя или он может просто отметить соответствующий процесс конечного пользователя как «runnable». В любом случае, управление должно быть передано процессу конечного пользователя.

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

Время, затрачиваемое на то, что процесс верхнего приоритета переходит от запуска к запуску, иногда называют «задержкой» ОС, хотя я уверен, что существует более конкретный технический термин. Задержка Linux составляет порядка 1 мс, но поскольку она не является «жесткой» оперативной ОС, это не гарантия. Если это слишком долго, чтобы обрабатывать ваши куски данных, вам может понадобиться загрузить некоторые из них в ваш драйвер.