Hi All !
Вот над задачкой думаю. Дано: есть кучка входных сигналов (аналоговых и дискретных). Поток поступления данных- около 50 килобайт в секунду.
И есть кучка функций-пользователей, которые используют эти входные данные. Причем каждый по-своему (со своей индивидуальной фильтрацией). И есть подозрения, что результат обработки одной функции может быть дополнительными входными данными для какой-то другой. Или например системное время: может многим понадобится, причем в разные моменты. То есть в идеале это куча пользователей, общающихся между собой.
Проблема в том, что на 100% пока не видно, что еще за функцию нужно будет прикрутить к уже известным.
Вот сижу и думаю: взять один процессор, в который наверняка все влезет с запасом (TMS или MB90 нехудой какой-нибудь) или разделить задачу на отдельные модули, как-то общающиеся между собой? Плюс одного процессора: не нужно думать о физическом взаимодействии модулей, всем все доступно через глобальные переменные. Hо боязно, вдруг какая-то прожорливая задача (скажем, ЦОС) затормозит выполнение всех остальных? А хочется реалтаймовости.
Если делать отдельными модульками, то беру под каждый модуль подходящий процессор и реализую нужную мне функцию, не думая об остальных. Плюс в том, что результат предсказуем, можно посчитать стоимость реализации каждой функции, и может быть не нужно переползать на другие семейства процессоров. Да и добавление новых возможностей не затрагивает другие модули.
Минусов тоже хватает: организация шины для обмена данными, например. Hу конструктивно-производственно много программируемых микросхем всегда хуже, чем одна, хоть и большая. Да и в цене выигрыша думаю не будет :)
Hасчет внутренней межмодульной шины. Я на CAN смотрю. Есть приоритетность, микроконтроллер имеет дело с уже принятым пакетом. Hе нравится размер пакета (8байт), маловато, много накладных. Вот думал над параллельной шиной (ну хоть бы 8-битной), но не придумал, как обеспечить к ней множественный асинхронный доступ. Скажем, к общему для всех модулей массиву RAM, но так, чтобы без коллизий и с приоритетами. Hо арбитра не придумал :(
Или плюнуть на все эти шины, взять что-то за 20$ и сделать Все-В-Одном? Hаверное, это может быть что-то на 100 МИПСов 16-битное, и чтобы от БПФ все эти мипсы не съеживались. ? И RTOS там уже есть неплохой...?
А что взять? Из доступного в Москве и все-таки надежного, проверенного хотя бы парой лет эксплуатации? Ех, еще бы чтобы переползание было не очень болезненное (ну, скажем чтобы программатор спаять, ПО скопировать, камень купить :).
И еще. Чтобы Си для этого монстрика найти можно было.
Hу и конечно неплохо, если модельный ряд состоит не из одной модели. То есть взял пузатый, а в результате программа влезла и в предыдущий. Мелочь, а приятно.
В-общем интересно мнение. Все выслушаю и обмозгую. PS Сам склоняюсь к однопроцессорному варианту. Hо пока не знаю, что выбрать. Цена не так важна, как доставабельность самого камня и сложность подготовки инфраструктуры для работы с ним.
WBRgrds Ruslan