Пообщавшись с нексколькими типами контроллеров, был сделан вывод, что так жить нельзя, и должен остаться только один. Те, с которыми общался на данную роль совсем не подходят, слишком уж обратная совместимость у них. Последняя задача, которую пришлось решать, вроде бы проста - собирать данные с 4х датчиков и отправлять по ethernet, но надежды на сишный компилятор тут не оправдались. Нужно обрабатывать до 168000 прерываний в секунду, а у сишного компилятора только на сохранение/востановление регистров 3 микросекунды уходит. На данный момент склоняюсь в сторону контроллеров с ядром ARM7TDMI или Cortex-M3 от NXP. Но не окажется ли так, что обрабатывать такое количество прерываний для них тоже будет тяжко? Кто может поделиться впечатлениями от армовских контроллеров? Вообще интересуют и другие архитектуры с вменяемой системой команд и желательно элементами DSP(но на это основной упор не требуется). Из устройств очень желательно чтобы был встроенный ethernet и CAN.
Pavia Программно опрашивать 5 последовательных портов и еще при этом формировать сообщения для ethernet?! Мне просто хочется чтобы выбрав какой-то тип контроллера потом не приходилось к нему довешивать дополнительных с совсем другой архитектутой, потому что этот вдруг не успевает прерывания обрабатывать.
В этой схеме прерывания не нужны. В цикле опрашиваешь порты. Между обращениями ставишь если нужно задержки. После того как заполнил буфер отправляешь команду для ethernet. Продолжаешь опрашивать порты но пишешь во второй буфер пока эзернет отправляет первый. А вообще по возможности задействовать DMA.
Pavia Нисколько не сомневаясь в ваших телепатических способностях, имею наглость думать, что при доступной мне инфомации был использован самый дзенский путь повышения производительности программы. Кроме вопроса о быстродействии возник еще вопрос о стоимости инструментов для разработки под ARM. Всякие демоплаты мне не требуются. Нужен компилятор, отладчик и переходник на Jtag. Вообще можно для начала скачатьKickStart edition of IAR Embedded Workbench. Единственное его ограничение это 32К кода. Надеюсь что это размер результирующего кода, а не исходников. А вопрос в общем такой, будет ли эта программа работать с китайскими аналогами J-Link'а и за сколько в москве можно купить полную версию этой среды разработки? А так же интересно что из этих китайских аналогов лучше всего использовать, потому что цены на них от 1 до 4к рублёв. Еще вопрос что поставляется с оригинальным J-Link?
Pavia Пожалуй столько прерываний действительно не нужно, минимальное время между приходом соседних байт от датчика 22.5 микросекунд, поэтому если опрашивать все 5 портов в обработчике прерывания от таймера, то из всех источников прерываний останется только одно с частотой 45кГц(или 50, чтобы время считать удобнее было). Возможно, что у си еще есть шанс на реабилитацию.
Если что, в Cortex-M3 аппаратное сохранение регистров при прерывании, и tail-chaining в придачу. Плюс у NXP есть всякие вкусности типа GPDMA. Код (Text): The NXP 8-channel DMA enables peripheral-to-memory, memory-to-peripheral, peripheral-to-peripheral, and memory-to-memory transactions with 16 DMA request lines. The source and destination areas can each be either a memory region or a peripheral. The DMA controller also allows data transfers between the USB and Ethernet controllers and the three separate on-chip SRAM areas. The DMA supports SSP0/1, all UARTs, the I2S-bus interface, the ADC, the DAC, General Purpose I/O and two match signals for each timer, which can be used to trigger DMA transfers Т.е. теоретически можно настроить DMA и автоматом копировать значения портов сразу в буфер пакета. Ну там еще много всякого. Для разработки есть всякие GNUтые тулчейны нахаляву плюс OpenOCD для отладки, но настроить все это хозяйство - занятие не для слабонервных. NXP грозится выпустить IDE за $30.