Размышлизма про линейку телематических контроллеров с большим диапазоном масштабирования. По идеям -> http://caxapa.ru/418133.html
Пусть мы строим линейку устройств с набором фич:
• LCD графического в составе устройства не будет. Только как отдельный модуль со своим процессором. Максимум, что будет встроенного – 128х64 I2C монохром.
• USB - CDC, WinUSB
• ADC, DAC, SPI, I2C, UART, PWM, счетчик импульсов – стандартный функционал без «изюма»
• Высокоприоритетное короткое прерывание, вызываемое с темпом 100 Кгц или около того.
• «SPI сопроцессоры» обязательно
• GSM
-- SMS «полный фарш»
-- MMS
• IP «простое». Производительность IP низкая, не более 20-30кбайт/сек при любом варианте.
-- SSL
-- SSH
• DSP
-- Эхокомпенсатор
-- VAD
-- JPEG D1 2…4 fps
--- Обязательно с возможностью подключения кучи аналоговых камер
-- Работа с 3-х осевым акселерометром
• Конфигурирование
-- Конфигурирование через запись параметров
-- Конфигурирование через загрузку управляющего скрипта Lua, JIM
-- Загрузка пользовательских аплетов (разумной функциональности)
• In Memory DB специфической конфигурации, с жестким набором полей, порядка 8-12Мбайт блок памяти. Производительность 10 транзакций/сек
• Файловая система. Производительность FLASH варианта 200-300 кбайт в сек за глаза
-- Память
-- NAND параллельный
-- SPI NOR
-- SD карточка
-- FLASH stick – непонятно, надо ли.
• FPGA для кастомной периферии - некоторые варианты
• Возможность жить месяцами от литиевого аккумулятора, просыпаясь изредка для поиска нужного события
Таблица фичи-модель сильно прореженная, «все в одном» едва ли будет.
Срок разработки от первых «дышащих» вариантов – 2года. Срок службы платформы – хорошо бы 10 лет.
Тиражность: минимум 1к в год конкретной модели, 10-20к предел в варианте гибкого дизайна, при больших тиражах редизайн с минимальными правками кода для минимизации BOM для узкой задачи.
Разработка силами распределенной команды в рамках единого репозитория кода.
BGA допустимы для тиражных вариантов, но лучше бы избежать нафиг.
Понятно, что требования взаимосключающие. В максимальной конфигурации без внешней памяти не обойтись, лучше, конечно, SDRAM.
Вот так навскидку это 150 Мгц + Cortex-M4. Плавучка очень желательна для того, чтобы можно было вставлять готовый код с плавучкой, и использовать его в простых конфигурациях, занимаясь оптимизацией только по необходимости.
Варианты решения задачи:
• Безфлешовый контроллер + SDRAM + кеш
• FLASH + SDRAM + кеш
• FLASH 2М+ SDRAM + 256k SRAM с оверлеями
Бесфлешовые контроллеры с внешним SDRAM были многократно обсосаны. Имеют ограничения по маложрущим режимам и по скорости пробуждения из сна. Копипротекшн тоже страдает. Их возможности обработки 100 КГц прерывания определяются исключительно набортным ОЗУ - кеши тут не помогут.
FLASH + SDRAM + кеш – это сказочно, но пока есть несколько моделей у Кинетиса. Нифига не дешевых. В общем, стремно.
2М FLASH + SDRAM + 256k SRAM с оверлеями возможны в двух вариантах:
* SDRAM контроллер внутри чипа
* SDRAM во внешней плиске
Первое лучше для In Memory DB.
Мой выбор – оверлеи. Причины такие
* В 2 М кода все нужное мне влезет почти наверняка.
* 128к на RTOS + глобальные данные, 128к – вытесняемый контекст задачи.
* Очень хорошо ложится на малоржручие задачи. Пока спим – SDRAM и ее задачи погашены. Если что нашли – быстро стартуем. Либо просто с нуля инициализируемся, либо можно из FLASH прочитать своп :)
* Хорошо масштабируемся. Многие варианты влезут без всякого оверлея – памяти хватит. Потом, постепенно, по мере отработки кода, можно будет прикрутить оверлеи. Более того, многие варианты вообще в 64к ОЗУ влезут, а тут
http://caxapa.ru/418105.html цены вообще приятные обещаются.
* Дизайны !BGA, как ни крути, удобны для поделочно-малосериных целей. В рамках этого проекта выпустить серию 100 шт изделия под конкретного юзера, с возможностью быстро спаять руками макетный вариант, выглядит очень заманчиво.
* 100 Кгц прерывание будет отработано вполне нормально.
Очень хорошо подходят Fujitsu FM4
http://caxapa.ru/418105.html Цены на них пока неизвестны, но глядя на этот камень
http://caxapa.ru/418219.html, я бы рискнул предположить, что в варианте 2М|256 к будет не дороже 12…15$.
Renesas RX600 в варианте 2M FLASH 256 SRAM пока в разработке, но немного стремает нестандартность архитектуры. С Cortex можно перейти на продукты многих производителей, с RX600 такой фокус не удастся.
NXP LPC43xx – мало памяти, дорого
Vybrid вызывает у меня много вопросов применительно к этой задаче.
• Ни разу не маложруший. Там моща от 400 мВт начинается
• С батарейными режимами у него плохо. за 45 нм надо платить.
• Масштабирование «вниз» будет сопряжено с переделкой всего. В варианте Cortex-M4 можно много чего поставить
• Наличие секурности на кристалле потенциально обеспечивает геморрой с поставками
• Linux, LCD и даже 2 Ethernet в рамках линейки не нужны.
Но для других задач Vybrid хорош!
Критика подхода?