Як відбувається виконання програми в прошивці?


9

Я чув від людей, що працюють в області прошивки, що немає операційної системи, яка б контролювала мікропрограмне забезпечення (наприклад, прошивка на USB-накопичувачі). Існує лише один потік, який працює в циклі часу, очікуючи зовнішньої команди, і це є початковою точкою для того, щоб відбутися переривання, за яким слід ISR і управління, що протікає до апаратури. Але принципово, що це за частина обладнання, яке виконує код прошивки? Чи є процесор чи це код на основі ASIC, який спрацьовує, поки пристрій живиться. Я не розумію перехід парадигми від звичайної системи на базі процесора до прошивки.


Якщо можливо, хтось може взяти приклад прошивки, вказавши марку процесора та будь-які інші деталі апаратного та програмного забезпечення. Приклади можуть бути прошивками на картах SD, USB, HDD-контролерах тощо
Abhijit K Rao

Відповіді:


13

Відсутня зміна парадигми; в обох випадках процесор виконує програмне забезпечення / програмне забезпечення.

Прошивки та програмне забезпечення - це одне і те ж; Єдина відмінність полягає в тому, як вона зберігається. Програмне забезпечення, як правило, зберігається на пристрої масового зберігання (наприклад, дисковий накопичувач) і завантажується в енергонезалежну пам'ять (наприклад, DRAM) перед його виконанням. Змінити програмне забезпечення легко, просто замінивши файл, що містить його, на інший.

Прошивки зазвичай зберігаються в енергонезалежній пам'яті (наприклад, FLASH), більш-менш підключеній безпосередньо до процесора. Це важче модифікувати (отже, "фірма"), і він може бути, а може і не переноситися в іншу пам'ять для виконання.

Дійсно, робота комп'ютера з "операційною системою" принципово не відрізняється від вашого опису мікропрограмного забезпечення. Пам’ятайте, сама ОС - це лише черговий фрагмент програмного забезпечення - або, швидше за все, величезна колекція взаємозалежних частин програмного забезпечення. На найнижчому рівні процесор все ще сидить у певній формі, чекаючи, що робити. Просто ця петля закопана всередині ОС.


9

Навіть "звичайний" процесор з ОС повинен виконувати прошивку ... його зазвичай називають BIOS на загальному ПК. Прошивка для будь-якого процесора - це лише програмне забезпечення, яке завжди доступне при включенні живлення, незалежно від того, підключений процесор до будь-яких периферійних пристроїв (дискові накопичувачі, USB тощо) чи ні. Якщо у вас повноцінна ОС, то вбудована програма просто з'ясовує, на якому пристрої (диск, USB-накопичувач тощо) міститься код для ОС, копіює код в оперативну пам'ять і запускає його. Для невеликих вбудованих пристроїв не потрібно повноцінної ОС, оскільки ви не збираєтеся завантажувати різні програми або підключати різні пристрої, тому невеликі процесори просто використовують дуже просту ОС або, можливо, "планувальник завдань". У різних завданнях може бути зчитування датчиків, очікування натискання кнопок та оновлення дисплея. Для дуже простих додатків у процесора є достатньо часу для виконання всіх завдань, тому він просто виконує кожну послідовно, що також відоме як підхід "кругового". Більш складні планувальники вважають пріоритет завдань.

Основний момент полягає в тому, що кожен процесор повинен мати якийсь код, який завжди доступний для виконання при включенні живлення. Цей код зазвичай зберігається у відносно невеликій пам'яті "лише для читання" або ПЗУ, хоча сучасні процесори вкладають прошивку у Flash ROM, який "здебільшого читають". Код, який зберігається таким чином, є "прошивкою" для процесора.


6

Здається, у вашому запитанні є деякі помилки.

Прошивка - це лише програмне забезпечення у фіксованому вигляді, яке раніше використовувалося в звичайному (записуваному колись або навіть програмованому масці) ПЗУ, тепер здебільшого у флеш-диску (для повторного запису). У деяких системах ця прошивка є єдиним програмним забезпеченням, в інших (як звичайний ПК) її основна функція - завантаження іншого програмного забезпечення.

Додаток може працювати під управлінням ОС, або він може працювати без ОС. Останню ситуацію часто називають «голим металом»: додаток не працює між цим апаратним «металом». Функції, що знаходяться в ситуації з ОС, яку виконує ОС, наприклад, обробка файлової системи та положення для багатопотокової передачі, все ще можуть бути присутніми в голій металевій системі, але у формі бібліотек, пов'язаних із додатком .

Програмне забезпечення може мати безліч різних архітектур. Дуже проста форма - цикл "отримати вхід, зробити обробку, записати вихід". Більш складні форми можуть включати опитування, переривання чи багаторізкові нитки. І всі ОС, і залежні від ОС програми, можуть використовувати всі ці архітектури.

Ці три проблеми не залежать: наприклад, вбудована програма може працювати з голим металом та використовувати багатопотокову архітектуру. Або прошивка - це операційна система, яка завантажує додаток з дискети (вибачте, флеш-карту ..), яка використовує просту архітектуру циклу get-do-write.


5

ОС і процесор - це різні поняття. Так, є центральний процесор, який є ключовим обладнанням в основі машини. Він витягує інструкції прошивки з пам'яті прошивки та виконує їх. ( В даний час він є загальним для навіть невеликі систем , щоб мати кілька процесорів для паралельного виконання, до речі, тому він дещо застаріли говорити виключно про з . CPU)

Прошивка - це програмне забезпечення, яке зберігається в енергонезалежній (або, можливо, навіть, лише для читання) пам'яті. Оскільки вона є в такій пам'яті, прошивка доступна при включенні машини. Машина може майже одразу почати виконувати прошивку, коли вона включена, або якась невелика програма завантаження (сама прошивка) може витягнути більшу прошивку з якогось електронного накопичувача, наприклад флеш-пам'яті, і потім виконати її. Сучасне використання флеш-пам’яті в наші дні, чому іноді можна почути фразу «миготіння нової прошивки», посилаючись на процедуру оновлення. Прошивки не повинні бути легко оновлювані, як це. Він може поставитися на мікросхемі інтегральної мікросхеми, так що оновлення пристрою до нової мікропрограми може призвести до вилучення інтегральної схеми ("мікросхема EPROM") з розетки та підключення нової. PC BIOS ' s, який раніше оновлювався таким чином, і безліч інших пристроїв. Тут справді походить слово. Деяким людям було незручно називати програму "програмним забезпеченням", якщо їм довелося міняти чіп або друковану плату, щоб замінити її, що більше схоже на оновлення обладнання. Таким чином, "прошивка" була вигадана: щось "складніше" змінити, ніж програмне забезпечення.

Прошивка може бути "повною мірою" операційної системи. Наприклад, Tomato - це прошивка на базі Linux для бездротових маршрутизаторів:

http://www.polarcloud.com/tomato

Ми можемо увійти в Томат через ssh та отримати підказку Linux. Отже, це вдосконалена операційна система, і це прошивка. Але якщо маршрутизатор мав на ньому жорсткий диск, і якщо та сама ОС повинна була завантажуватися з цього диска при запуску, вона вже не може бути законно названа прошивкою. Прошивка повинна знаходитись в електронному сховищі, яке доступне процесору негайно при включенні живлення, як-от флеш-пам'ять або мікросхеми EPROM.

На сьогоднішній день багато споживчих пристроїв мають оновлені програмні засоби. Наприклад, якщо у вас є цифровий фотоапарат, ви повинні знайти його веб-сайт і побачити, чи не доступна нова версія прошивки, яка усуває деякі проблеми, які можуть бути наявними у встановленому на заводі мікропрограмному забезпеченні. Оновити прошивку сьогодні досить легко навіть для відносно нетехнічних кінцевих користувачів. Вищезгаданий Томат є прикладом стороннього програмного забезпечення з відкритим кодом, який замінює фабричне програмне забезпечення.

Слово "операційна система" просто позначає програму управління, яка має певний ступінь витонченості та повноти управління ресурсами машини та надання послуг високого рівня програмам: такі функції, як файлові системи, мережеві протоколи, управління пам'яттю та процесами, доступ високого рівня до пристроїв і, можливо, якоїсь моделі користувача, а також безпеки. Не всі з них мають бути присутніми в операційній системі. Зазвичай ключовою є пам'ять, управління процесами та введення / виведення. Якщо програма управління дозволяє виконувати інші програми, надаючи цим програмам ідентичність, через яку вони пов'язані з власними ресурсами, і якщо вона надає їм послуги для управління процесором і пам'яттю, а також введення / виведення, ми можемо викликати це управління запрограмувати операційну систему.

Оскільки вам цікаво, вам можуть сподобатися деякі підручники з комп’ютерної архітектури, наприклад, Вільям Стеллінгс або Геннесі та Паттерсон.


4

На самому фундаментальному рівні процесор - це лише машина, що переходить через послідовність інструкцій, які змінюють власний внутрішній стан та / або дають певний вихід. Абстрактно та вдосконалюйте цю концепцію на дуже високому рівні, і ви отримуєте найновіші пропозиції настільних та мобільних процесорів від Intel. Але основоположний принцип досить простий - ви можете побудувати дуже базовий процесор з близько десятка інтегральних мікросхем TTL, а мікропроцесори з початку до середини 1970-х років, призначені для використання в настільних калькуляторах і контролерах світлофорів, не були страшенно складнішими за це . Очевидно, закон Мура переніс це на цілком інший рівень, і сучасні високопродуктивні процесори мало схожі на своїх предків з 35 років тому.

Незважаючи на це, все ще існує величезний ринок процесорів (зазвичай їх називають мікроконтролерами), які значно менш складні, ніж передові; це, наприклад, типи процесорів, які ви можете знайти на своєму накопичувачі USB. Щоб вирішити своє запитання - можливо, деякі функції пристроїв, про які ви згадуєте, могли обробляти ASIC, але якщо ваші колеги говорять про потоки та переривання, це, як правило, свідчить про те, що певний час є процесор, ймовірно, на мікроконтролері . Це дійсно повноцінні комп’ютери в тому сенсі, що вони мають АЛУ, регістри, програмний лічильник, стек тощо, але вони мають дуже низьку потужність і дуже недорогі, і можуть мати лише кілька десятків інструкцій, а не сотні архітектури x86.

Немає вимоги, щоб ці пристрої мали будь-яку операційну систему або будь-яку концепцію комутації контексту (хоча це можливо в деяких випадках), все, що потрібно для її застосування, - це переглядати інструкції в своїй програмі одну після інше, і, як ви кажете, це дійсно може бути дуже проста програма.


1

Мінус деякі дозволи, центральний процесор не дізнається, чи буде він виконувати код з ОС або будь-якого іншого виду програми. Для центрального процесора це просто виконання інструкцій, витягнутих із пам'яті.

Не будемо забувати, що таке операційна система: програма, яка завжди знаходиться в пам’яті, яка відповідає за безпечне поводження та планування декількох завдань. Термінологія, яку ми використовуємо для опису самостійного завдання, - це "процес". ОС дозволяє процесам безпечно обмінюватися ресурсами (апаратним забезпеченням, пам'яттю тощо) та планувати та визначати пріоритетність їх виконання, а також надає такі функції, як міжпроцесовий зв'язок. Все це випливає з необхідності підтримувати кілька одночасних завдань. Мінус деяких рівнів дозволів, до процесора це просто виконання інструкцій ОС або немає ОС - різниці не знає.

Коли ми пишемо мікропрограмне забезпечення для мікроконтролера, зазвичай у нас немає цієї додаткової програми (ОС), яка завжди залишається в пам’яті, щоб управляти завданнями для нас. Чому? Оскільки у нас немає потреби в декількох одночасних завданнях - вбудовані системи зазвичай розроблені та запрограмовані, щоб добре виконати лише одне додаток. Порівняйте це з ПК, який, як очікується, буде дуже гнучким і зможе запускати всі види програм одночасно.

Більше не виникає занепокоєння тим, що один процес займає і утруднює простір пам’яті іншого процесу, або один процес, що займає весь час процесора. Це тому, що ми пишемо єдину програму, яка має доступ до всіх ресурсів у будь-який час, оскільки це єдина програма, що працює в системі, і тому нам не потрібна інша програма, як ОС для управління нею. Знову ж таки, для процесора це просто виконання інструкцій, витягнутих з пам'яті, він не може визначити різницю, ОС чи немає ОС.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.