Перейти к содержанию
    

Сугубо практический вопрос на обсуждаемую тему. Только выбор стоит не "без ОС или с ОС", а "с минимальной ОС а-ля FreeRTOS или с ОС побольше а-ля uClinux".

LPC2478 (ARM7-TDMI, 96 кБ ОЗУ, 512 кБ флеш) + дофига (десятки мегабайт) внешней памяти с возможностью выполнения оттуда кода, как ОЗУ так и флеша.

Прибор - контроллер АСУТП. Из стандартных вещей, для реализации которых хотелось бы использовать какие-то готовые программные модули - работа с графическим индикатором (текст, простейшая графика - диаграммы), USB Host и Slave, работа с файловой системой на флешке. Остальное - сбор дискретных, аналогвых и цифровых данных, расчеты и логика управления - пожалуй никак не связано с выбором ОС.

Требуемое время реакции на некоторые события жесткое и весьма малое, порядка сотен наносекунд. Обеспечит ли какой-нибудь из линуксов такое время?

Я сам раньше ни с какими ОС не работал. Главным образом поэтому и склоняюсь к чему-то совсем простому типа FreeRTOS, в чем легко будет разобраться. Кроме того предполагаю, что возможности линукса избыточны для моей задачи, а вот ресурсов он явно будет потреблять много.

Прав ли я? Или может быть линукс содержит какие-то вкусности, которые в рамках обрисованной задачи компенсируют время, потраченное на его освоение?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

uClinux + LPC2478 + Требуемое время реакции на некоторые события жесткое и весьма малое, порядка сотен наносекунд.
Не реально. У нас на AM3517 600MHz + Linux + PreemptRT время переключения контекста 160мкс.

А у вас частота фактически в 10 раз ниже. Можете поэкстраполировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не реально. У нас на AM3517 600MHz + Linux + PreemptRT время переключения контекста 160мкс.

А у вас частота фактически в 10 раз ниже. Можете поэкстраполировать.

ну а если задачу с быстрой реакцией перенести на уровень ядра? Грубо говоря в обработчик прерывания засунуть быструю реакцию на событие. Тоже линукс не успеет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну а если задачу с быстрой реакцией перенести на уровень ядра? Грубо говоря в обработчик прерывания засунуть быструю реакцию на событие. Тоже линукс не успеет?
Я не замерял таким образом. Так-что пока не могу вам ответить на вопрос.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LPC2478

...

порядка сотен наносекунд

Т.е. порядка десятков тактов процессора.

Только если реакция несложная и вся в обработчике прерываний.

 

Тут неподалёку как-то обсуждалось время переключения задач в scmRTOS на Cortex-M3 (72 MHz STM32F1, 100 MHz LPC17). Ну так эти «сотни наносекунд» идут десятками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Требуемое время реакции на некоторые события жесткое и весьма малое, порядка сотен наносекунд. Обеспечит ли какой-нибудь из линуксов такое время?

Прав ли я? Или может быть линукс содержит какие-то вкусности, которые в рамках обрисованной задачи компенсируют время, потраченное на его освоение?

 

Сам микроконтроллер выбран неправильно. Нужно было брать на Cortex-M3 или M4. Там механизм прерываний оптимизирован для малых задержек.

И там легче сделать независимые от оси прерывания.

Вообще независимые от оси прерывания можно сделать практически на любом современном микроконтроллере и в любой оси включая линукс.

Надо только порт оси поправить и все драйвера. Чтобы не было глобальных запрещений прерываний.

 

Очень быстрый механизм прерываний с поддержкой сервисов оси сделан в свободной RTOS от Keil-а.

https://www.keil.com/demo/eval/rtx.htm

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну а если задачу с быстрой реакцией перенести на уровень ядра? Грубо говоря в обработчик прерывания засунуть быструю реакцию на событие. Тоже линукс не успеет?

нет не успеет.

читайте http://www.at91.com/linux4sam/bin/view/Linux4SAM/RealTime

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ок, вынесение самых критичных по времени действий в обработчики прерываний - снимает вопрос времени реакции.

А возвращаясь к вопросу о вкусностях - для работы с USB и FAT'ом - как обстоят дела с хорошими бесплатными библиотеками под линукс и под FreeRTOS?

И еще, вопрос объема используемой памяти оказался все-таки актуальным. Какого порядка объемы флеша и ОЗУ нужны под ядро линукса и под каждую задачу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ок, вынесение самых критичных по времени действий в обработчики прерываний - снимает вопрос времени реакции.

 

с чего вы это взяли? смотря с какой частотой прерывания поступают. Навскидку: прерывания до 1кГц только можно "ловить вовремя", быстрее - сложнее. А о частотах порядка мегагерц и речи нет. Всё зависит от задачи.

 

А возвращаясь к вопросу о вкусностях - для работы с USB и FAT'ом - как обстоят дела с хорошими бесплатными библиотеками под линукс и под FreeRTOS?

В Linux с этим, насколько я знаю, лучше чем у других.

 

И еще, вопрос объема используемой памяти оказался все-таки актуальным. Какого порядка объемы флеша и ОЗУ нужны под ядро линукса и под каждую задачу?

тут не подскажу. Ведь ещё ucLinux бывает

 

P.S. реализация TCP/IP в Linux - одна из самых лучших. всякие Lwip и рядом не валялись. ИМХО

Изменено пользователем TigerSHARC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще, вопрос объема используемой памяти оказался все-таки актуальным. Какого порядка объемы флеша и ОЗУ нужны под ядро линукса и под каждую задачу?
Всяко бывает. Всё от задачи зависит.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще, вопрос объема используемой памяти оказался все-таки актуальным. Какого порядка объемы флеша и ОЗУ нужны под ядро линукса и под каждую задачу?

Зависит от задачи. Минимум 4МВ флэш и 16МБ RAM но начинать лучше с 8МВ флэш и 64МБ RAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но начинать лучше с 8МВ флэш и 64МБ RAM.

это вы с чего взяли? я запускался на AT91+4MBDataFlash+32MB_SDRAM

слабее конфигурацию не пробовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

слабее конфигурацию не пробовал.
Ничего, другие это проделали:-)

http://dmitry.co/index.php?p=./04.Thoughts...nux%20on%208bit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего, другие это проделали:-)

http://dmitry.co/index.php?p=./04.Thoughts...nux%20on%208bit

 

...uARM is certainly no speed demon. It takes about 2 hours to boot to bash prompt...

 

Фанатик, что сказать. В Google людям видать больше нечего делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сугубо практический вопрос на обсуждаемую тему.

Или может быть линукс содержит какие-то вкусности, которые в рамках обрисованной задачи компенсируют время, потраченное на его освоение?

TCP/IP -- помоему одна из действительных вкусностей. А так рекомендую Вам поначалу взять этот чип (если уж вы решились именно на этот), а затем перейти на CotexM3 LPC178x он должен идти ножка в ножку с LPC2478. А FAT32 с USB HOST у меня как одельный поток неплохо работает.

 

CotexM3 действительно более хорош для более быстрой реакции на прерывания чем LPC2478.

 

Перифирия у чипов схожая. Если хотите возится с переносимостью кода, то см мой проект.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...