Для оголеного металевого MCU, в порівнянні з домашнім кодом з фоновим циклом та архітектурою переривання таймера, які переваги неперешкодженої ОС? Що з цих переваг є достатньо привабливим для проекту, який повинен прийняти ОС, що не передбачає перевагу, а не використовувати домашній код з фоновою архітектурою циклу?
.
Пояснення до питання:
Я дуже ціную всіх, хто відповів на моє запитання. Я відчуваю, що відповідь майже там. Я додаю це пояснення до свого запитання тут, яке показує мій власний розгляд і може допомогти звузити питання або зробити його більш точним.
Що я намагаюся зробити, це зрозуміти, як вибрати найбільш відповідний RTOS для проекту в цілому.
Щоб досягти цього, допоможе краще розуміння основних понять та найбільш привабливих переваг від різних видів RTOS та відповідної ціни, оскільки немає кращого RTOS для всіх застосувань.
Я читав книги про ОС кілька років тому, але більше не маю їх при собі. Я шукав в Інтернеті, перш ніж розмістив тут своє запитання, і виявив, що ця інформація є найбільш корисною: http://www.ustudy.in/node/5456 .
Є багато іншої корисної інформації, як, наприклад, вступ на веб-сайті різних RTOS, статті, що порівнюють попереднє планування та непередбачене планування тощо.
Але я не знайшов жодної теми, коли слід вибрати непідтримувану RTOS, а коли краще просто написати власний код, використовуючи переривання таймера та фоновий цикл.
У мене є певні власні відповіді, але я ними недостатньо задоволений.
Мені дуже хотілося б дізнатися відповідь чи погляд від більш досвідчених людей, особливо в галузі.
Моє розуміння поки що:
незалежно від того, використовувати або не використовувати ОС, завжди потрібні певні види планування, навіть у вигляді коду типу:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Перевага 1:
Непереважна ОС позначає спосіб / стиль програмування для коду планування, щоб інженери могли поділяти один і той же погляд, навіть якщо раніше вони не були в одному проекті. Тоді, з однаковим поглядом на поняття завдання, інженери можуть працювати над різними завданнями та перевіряти їх, максимально профілювати їх самостійно.
Але скільки ми насправді можемо отримати від цього? Якщо інженери працюють над одним і тим же проектом, вони можуть знайти спосіб спільного використання того ж виду, не використовуючи ОС, що не виключає.
Якщо один інженер є з іншого проекту чи компанії, він отримає вигоду, якщо раніше знав ОС. Але якщо він цього не зробив, то, схоже, це не має великого значення для його вивчення нової ОС або нового фрагмента коду.
Перевага 2:
Якщо код ОС добре перевірений, це економить час від налагодження. Це справді добра користь.
Але якщо у додатку є лише близько 5 завдань, я думаю, що насправді безладно писати власний код, використовуючи переривання таймера та фоновий цикл.
Тут не випереджаюча ОС називається комерційною / вільною / застарілою ОС з непередбачуваним планувальником.
Коли я розміщував це запитання, я в основному думаю про деякі ОС, як-от:
(1) Ядро KISS (Невеликий непідкупний RTOS - заявлений на його веб-сайті)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (легкий RTOS - стверджується на його веб-сайті)
(3) FreeRTOS (Це превентивний RTOS, але, як я розумію, він може бути налаштований і як неперешкоджаючий RTOS)
(4) uC / OS (подібно до FreeRTOS)
(5 ) застарілий код ОС / планувальника в деяких компаніях (зазвичай їх виробляє та підтримує внутрішня компанія)
(Неможливо додати більше посилань, оскільки обмеження з нового облікового запису StackOverflow)
Як я розумію, неперспективна ОС - це сукупність таких кодів:
(1) планувальник, що використовує непередбачувану стратегію.
(2) засоби для взаємодії між завданнями, мьютекс, синхронізацію та контроль часу.
(3) управління пам'яттю.
(4) інші корисні засоби / бібліотеки, такі як файлова система, мережевий стек, графічний інтерфейс і т. Д. (FreeRTOS та uC / OS надають це, але я не впевнений, чи все ще вони працюють, коли планувальник налаштований як непередбачений)
Деякі з їх не завжди є. Але планувальник обов'язковий.