Чи код програмного забезпечення чи дані?


29

Коли хтось каже, що вони "прошивали" прошивку на пристрій, мені цікаво, що це насправді має на увазі.

  1. Чи є прошивка лише нативним двійковим файлом, який зберігається в пам'яті і який може бути інтерпретований процесором пристрою (як і будь-який інший EXE на комп'ютері)? Або це прошивка лише даних, які виступають як вхід до незмінної програми, яка вже жорстко закодована / підключена до пристрою?
  2. Якщо останній приклад не є вбудованим програмним забезпеченням, як би ви його назвали? Наприклад, припустимо, що у пристрої є якийсь бінарний ( someapp.exe), і ви не можете видалити або змінити цей бінарний файл. Бінарний при запуску приймає вхід з мікросхеми пам'яті. Ви можете "прошивати" дані до цього мікросхеми і, таким чином, впливати на вхід / конфігурацію, someapp.exeщо вплине на наступний раз, коли він запуститься. Як не програмне забезпечення, як би це називалося?

12
Це справді гарне запитання. Це приємна перерва від вбивства "Мій тостер не гріється. Чи можна покласти в нього ардуїно?" питання.
Jason_L_Bens

17
Що ж, це питання було б добре, якби не головний недолік у ньому: код - це дані, а дані можуть бути кодовими - що стосується архітектури / моделі Фон Ноймана. Таким чином, все питання марне - оскільки код можна (і, як правило , ) трактувати як дані та навпаки; також до ОП: чому б не перевірити en.wikipedia.org/wiki/Firmware ? він має відповідь на це саме питання, і до багатьох інших речей , що стосується прошивки - таким чином, в той час як це хороший перерву «Можу чи я підключити 1 лампочку в 230 гніздових» питання, вона по - , як і раніше подпарітета в моїй книзі .. .
vaxquis

2
Я майже впевнений, що відповідь тут - «так».
Коннор Вольф

7
Машинний код - це лише введення даних в незмінне проводка процесора.
користувач253751

2
Це книги чи слова чи букви?
Нік Т

Відповіді:


27

Як і часто з такими визначеннями, ми погоджуємося в більшості випадків, але насправді немає чіткої межі між тим, що є вбудованим програмним забезпеченням, і тим, що ні. Прошивка є

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

Щодо даних, які інтерпретуються інтерпретатором (вбудованого програмного забезпечення): це не часто робиться в професійних умовах, оскільки це робить продукт дорожчим: для досягнення тієї самої мети потрібно більше пам’яті, потужності процесора тощо. Це буде , проте іноді використовується в аматорському обстановці, часто з основним перекладачем в спалаху, і (Розбивається на лексеми) Основне застосування в ЕСППЗУ (або в Flash , теж). Перевірте, наприклад, PICAXE та різні марки марки Basic.

ІМО в таких умовах і інтерпретатор Basic, і програма Basic повинні називатися прошивкою.


Цікавим використанням інтерпретатора мікропрограмного забезпечення, що інтерпретує збережений код (який також слід вважати IMO) - це запуск XBOX 360. Ця чудова розмова описує її докладно.


Нижче MSalters задається питанням, чи слід вважати кодові / конфігураційні дані FPGA прошивкою.

У найбільш важливих аспектах (це інформація, яка може бути змінена пізно в процесі виробництва, але вона не передбачається змінювати за бажанням кінцевим користувачем) біти FPGA поводяться як програмне забезпечення. Це ставить питання про те, чи є це вбудована програма згідно з будь-яким визначенням спорів. Важливим моментом є те, що з ним можна (і слід) писати, обробляти та керувати як програмне забезпечення. (Якщо вона ходить і хитається, як качка, це качка?)

Не турбуйтеся з визначеннями, коли вони не корисні. Чи мікропрограмна програма? Чи має значення представництво? Чи має значення контекст? Чи є біти ROM для прошивки IWM?


Коментар Vaxquis до питання ОП спонукав мене прочитати статтю wiki, на яку він посилається. IMO визначення вбудованого програмного забезпечення (стійкий код пам'яті та програми та збережені в ньому дані) викликає занепокоєння. IMO карти, що зберігаються в системі навігації для автомобілів, - це дані, а не прошивки, незалежно від того, як вони зберігаються (згідно з wiki, вони повинні бути вбудованими програмами). А додатки у вашому телефоні iPhone або Android - це програми, а не прошивки (згідно з wiki, вони теж повинні бути прошивками).


Мені зараз цікаво, чи вважається програма FPGA прошивкою. Інтуїтивно, так, але він не працює на процесорі. І все ж це класичний випадок бітів, які знаходяться на півдорозі між кодом і даними.
MSalters

Комп'ютер TI 99/4 (1979) включав перекладача в ПЗУ для мови під назвою GPL та перекладача BASIC, написаного на GPL. Істотною особливістю GPL було те, що він міг запускати код, що зберігається в мікросхемах GROM (які були розроблені для переважно послідовного доступу і можуть бути фізично меншими та дешевшими, ніж ПЗП з випадковим доступом), тому TI 99/4 може розглядатися як маса -ринок персонального комп’ютера, дизайн якого аналогічний дизайну марки BASIC.
supercat

14

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


Дякуємо @Leon Heller (+1) - чи є назва 2-го прикладу вище, де по суті є "миготіння" вхідних даних до фіксованого двійкового на мікросхемі? Або це взагалі не практикується? Знову дякую!
HeineyBehinds

Це просто дані. Він може зберігатися в енергонезалежній або нелетучій пам'яті.
Леон Геллер

Термін, який я використовував би для вашого №2, був би "таблицею огляду". Прикладом, який я можу придумати, були б значення синусоїди, використовувані для числового керованого осцилятора.
kjgregory

1
@KGregory Це може бути таблиця пошуку, це може бути інтерпретована програма, це можуть бути зображення зображень ...
glglgl

@glglgl погодився. Я можу стверджувати, що це можна вважати формою оглядової таблиці, але я думаю, що ми зараз поруч із цим.
kjgregory

9

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


Люблю цю відповідь, +1, добре зроблено для підкреслення даних та коду - це зрештою те саме.
Vality

Вони однакові для архітектури Фон Ноймана. Щойно у вас є окремі автобуси, ви можете почати стверджувати, що вони різні речі, хоча врешті-решт це все просто біти.
Jason_L_Bens

8

Це насправді і те, і інше.

Одним із прикладів вбудованого програмного забезпечення є ПК BIOS, один розділ BIOS є виконуваним, але інші частини самого BIOS - це фактично дані, зокрема в таблицях для відображення для перерахування різних функцій BIOS ROM, незалежно від типу технології, на якій він заснований. на. Часто, коли дані зберігаються в будь-якій іншій флеш-пам'яті, акумуляторі або конденсаторі, що підтримується оперативною пам'яттю, або CMOS SRAM, або іншою сумісною технологією чіпа пам'яті.

Прошивка - це загальний термін, що використовується для незмінної / нелетучої пам’яті, він є там і доступний відповідно до циклу живлення до тих пір, поки в ланцюзі немає нічого неправомірно електричного або у випадку, коли замикається цикл програмування, для EEPROMs або Flash ПЗУ.

Прошивка за визначенням - це найнижчий рівень доступу, який ініціалізує, тестує апаратне забезпечення, встановлене у вашій системі або вбудовані компоненти, і дає підпрограми низького рівня (іноді сприймаються як дзвінки функції BIOS), що ваша операційна система повинна мати можливість використовувати компоненти у вашій системі. За старих часів BIOS або Basic Input Output System також включали мову програмування, яку називали "BASIC", наприклад Commodore 64 та інші персональні комп'ютери 1970-х років. Звичайно, були старіші комп'ютери, які в них вбудували BASIC для використання. і професійними комп'ютерними вченими. Якщо ви коли-небудь чуєте про символьний чи символьний ROM, це форма чистих даних для виконавчого чи програмного ROM, щоб система перейшла до цього символьного ПЗУ і шукала символи в послідовності або скидала весь чіп в оперативну пам'ять, щоб працювати з ним там.

Програмісти PROM, EPROM, EEPROM, Flash програмують мікропрограмне забезпечення на мікросхемі, як і суфікс .hex або .bin, які є подібними форматами, це залежить від вашої програми, яку ви використовуєте для надсилання на чіп, мікропрограмного забезпечення.

Крім того, існують файли блоку прошивки, це виконувані файли у вигляді бібліотек і процедур, які завантажуються під час виконання, хороший приклад цього - драйвери бездротового обладнання, вони містять достатньо коду для запуску всього обладнання на цих картках через вашу комп'ютерна система. Єдина відмінність полягає в тому, що мікропрограмне забезпечення на базі картки та USB насправді не зберігається на них, а на вашому жорсткому диску і завантажується в пам'ять. Він по суті працює як рівень служби перекладу та фільтр. Це і дані, і код.

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

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

Маю більше запитань, я радий відповісти на них за вас.


6

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

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

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

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

2
"але потім воно зводиться до машинного коду, щоб процесор міг це зрозуміти." Так само, як і програмний код, якщо він написаний на С або щось подібне.
glglgl

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

0

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

Обладнання важко змінити. Програмне забезпечення легко змінити. Мікропрограмне забезпечення не так важко змінити, як апаратне, але змінити складніше, ніж програмне забезпечення.

Він може використовуватися для обговорення виконуваного коду, даних або інформації про конфігурацію (як у FPGA / PLD / тощо), які можна змінити.


У широкому сенсі цього слова та визначення це правда. Хоча ці фішки насправді не є кодом і не даними. Після завершення компілятор створює логічні конструкції, як або комплексні рішення, або логіка клею, щоб з'єднати різні частини системи разом. Замість використання логічних воріт і регістрів фізичних 74 та 54 для прийняття рішення. Я насправді радий, що ти це вигадав, Адаме.

0

Щоб пояснити більше, що таке прошивка з внутрішнього сенсу.

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

По суті, що таке прошивка - це це;

  1. Маючи жорсткі провідні інструкції для певного процесора для виконання та виконання, це називається "завантажувальним пристроєм". Які найзавантажувані комп’ютери мають це у своєму BIOS.

  2. Ініціалізуйте вказане обладнання через інструкцію з вбудованого програмного забезпечення.

  3. Завантажте в / до таблиці стрибків.

  4. Зробіть доступ до реєстрів на даному пристрої доступним.

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

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

  7. Жорсткі диски - хороший приклад рішення для зберігання даних, яке саме по собі є вбудованим пристроєм, який також має на ньому BIOS і має форму прошивки на мікросхемі.

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

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

Якщо ви хочете знати, як Ada, C, C ++, D та інші мови програмування перетворюють свої "жетони", це їх рідний код, який порубаний на псевдо-коди в машинну мову. Є кілька книг, які я рекомендую вам прочитати, деякі є досить елементарними та зосереджені на дуже конкретних процесорах, але це добре вчитися. Я дам тобі одну книгу на даний момент, тому що я не хочу заглушити тебе чи когось іншого, хто читає це в інформації.

  1. Створення компілятора з «С» Чарльза Н. Фішера та Річарда Дж. ЛеБланка-молодшого.
  2. Відвідайте цей сайт, він базується на чіпсеті x86, знайденому в комп'ютері IBM; http://www.laynetworks.com/assembly%20tutorials.htm

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

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

Примітка. Про відповідь вище, про флеш-пам’ять, такого немає, є флеш-пам’яті, але не флеш-пам’яті. Flash ROM мають в собі вбудовану програму, оперативні пам'яті, на яких є резервна батарея або конденсатор, або інший флеш-диск, який містить параметри параметрів BIOS, які ви встановили.

У прошивці є код про те, як зберігати чи очищати пам’ять даних (порівняно із самою пам'яттю програми / мікропрограмним забезпеченням), якщо це флеш-диск чи чіп оперативної пам’яті. На комп’ютерах, якщо ваш пароль BIOS зім'ятий або ви його не пам’ятаєте (або хтось з вами возиться), ви можете відкрити корпус і знайти два штифта з назвою: "CMOS CLR / CMOS CLEAR / BIOS RESET / BIOS RST", якщо короткий замикання цих двох штифтів також очищає пам’ять, все, що вам потрібно буде зробити після цього, це натиснути кнопку скидання, коли два штифта ще короткий. Це очищає пароль і дозволяє вам отримати повний доступ до BIOS вашого ПК (якщо припустити, що у вас є новіший комп'ютер з 1990-х років).

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


0

Що стосується вбудованих систем, миготлива прошивка означає, що ви видалили ПЗУ мікроконтролера за допомогою миготливого пристрою і переписали його з новим кодом. Ця прошивка, яку потрібно прошивати, знаходиться у форматі HEX.

Що стосується терміналогії, пов'язаної з ОС, вона також прошивається в ПЗУ, але цього разу ОС несе відповідальність за те, щоб прошивати її, коли приходить оновлення.


0

Я вважаю, що використання "історичної" перспективи може дати більш базове розуміння того, що таке прошивка .
Спочатку він починається з "металовиробів". Для забезпечення / створення заданої функції можна використовувати трубки, реле, транзистори та ІС. Ви б використали ряд цих компонентів, і ви створили б пристрій, який виконував необхідну функцію. Це вважалося "складним", тому що якщо ви хочете (або потрібно) змінити функцію, вам потрібно буде розпаяти дроти, розетки тощо, і це було "важко" зробити. Таким чином, цей спосіб реалізації функції став відомим як використання апаратного забезпечення. Використання процесора, оперативної пам’яті та коду стало ще одним методом створення функції, який став відомим як «програмне забезпечення»щоб змінити дизайн. "Однак виникла потреба (в основному від виробників), якнайшвидше виконати дизайн, але бути здатним зробити зміни в останню хвилину максимально простими та економічно ефективними. Використання ПЗУ дозволило досягти цієї гнучкості аж до "першого корабля". EEPROMS дозволяють змінити навіть після "першого корабля" (в полі). Код, необхідний / використовуваний для ПЗУ та PROM, дав назву "прошивки" . "

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