Контроллер без "тёмного прошлого"

Тема в разделе "WASM.ELECTRONICS", создана пользователем Black_mirror, 28 ноя 2009.

  1. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Пообщавшись с нексколькими типами контроллеров, был сделан вывод, что так жить нельзя, и должен остаться только один. Те, с которыми общался на данную роль совсем не подходят, слишком уж обратная совместимость у них. Последняя задача, которую пришлось решать, вроде бы проста - собирать данные с 4х датчиков и отправлять по ethernet, но надежды на сишный компилятор тут не оправдались. Нужно обрабатывать до 168000 прерываний в секунду, а у сишного компилятора только на сохранение/востановление регистров 3 микросекунды уходит.
    На данный момент склоняюсь в сторону контроллеров с ядром ARM7TDMI или Cortex-M3 от NXP. Но не окажется ли так, что обрабатывать такое количество прерываний для них тоже будет тяжко? Кто может поделиться впечатлениями от армовских контроллеров?
    Вообще интересуют и другие архитектуры с вменяемой системой команд и желательно элементами DSP(но на это основной упор не требуется). Из устройств очень желательно чтобы был встроенный ethernet и CAN.
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Black_mirror
    А зачем так много прерываний???
    Может можно сделать без них.
     
  3. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Pavia
    Программно опрашивать 5 последовательных портов и еще при этом формировать сообщения для ethernet?!

    Мне просто хочется чтобы выбрав какой-то тип контроллера потом не приходилось к нему довешивать дополнительных с совсем другой архитектутой, потому что этот вдруг не успевает прерывания обрабатывать.
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    В этой схеме прерывания не нужны. В цикле опрашиваешь порты. Между обращениями ставишь если нужно задержки.

    После того как заполнил буфер отправляешь команду для ethernet. Продолжаешь опрашивать порты но пишешь во второй буфер пока эзернет отправляет первый.

    А вообще по возможности задействовать DMA.
     
  5. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Pavia
    Нисколько не сомневаясь в ваших телепатических способностях, имею наглость думать, что при доступной мне инфомации был использован самый дзенский путь повышения производительности программы.

    Кроме вопроса о быстродействии возник еще вопрос о стоимости инструментов для разработки под ARM. Всякие демоплаты мне не требуются. Нужен компилятор, отладчик и переходник на Jtag. Вообще можно для начала скачатьKickStart edition of IAR Embedded Workbench. Единственное его ограничение это 32К кода. Надеюсь что это размер результирующего кода, а не исходников. А вопрос в общем такой, будет ли эта программа работать с китайскими аналогами J-Link'а и за сколько в москве можно купить полную версию этой среды разработки? А так же интересно что из этих китайских аналогов лучше всего использовать, потому что цены на них от 1 до 4к рублёв. Еще вопрос что поставляется с оригинальным J-Link?
     
  6. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Pavia
    Пожалуй столько прерываний действительно не нужно, минимальное время между приходом соседних байт от датчика 22.5 микросекунд, поэтому если опрашивать все 5 портов в обработчике прерывания от таймера, то из всех источников прерываний останется только одно с частотой 45кГц(или 50, чтобы время считать удобнее было). Возможно, что у си еще есть шанс на реабилитацию.
     
  7. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Если что, в Cortex-M3 аппаратное сохранение регистров при прерывании, и tail-chaining в придачу.
    Плюс у NXP есть всякие вкусности типа GPDMA.
    Код (Text):
    1. 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.