Когда кто-то говорит, что он "прошил" прошивку на устройство, мне интересно, что это на самом деле означает.
- Прошивка - это просто двоичный файл, который хранится в памяти и который может интерпретироваться процессором устройства (как любой другой EXE-файл на компьютере)? Или встроенное ПО - это просто данные, которые служат входом для неизменяемой программы, уже жестко запрограммированной / подключенной к устройству?
- Если последний пример не является прошивкой, как бы вы это назвали? Например, предположим, что на устройстве есть какой-то двоичный код (
someapp.exe
), и вы не можете удалить или изменить этот двоичный файл. Бинарный файл при запуске получает данные от микросхемы памяти. Вы можете «прошить» данные на этот чип и, таким образом, повлиять на ввод / конфигурированиеsomeapp.exe
, которые вступят в силу при следующем запуске. Если бы не прошивка, как бы это называется?
Ответы:
Как часто с такими определениями, мы согласны в большинстве случаев, но нет действительно твердой границы между тем, что является прошивкой, а что нет. Прошивка есть
Что касается данных, которые интерпретируются интерпретатором (встроенного программного обеспечения): это не часто делается в профессиональных условиях, потому что это делает продукт более дорогим: для достижения той же конечной цели требуется больше памяти, ресурсов процессора и т. Д. Это будет , однако иногда используется в любительском обстановке, часто с основным переводчиком в вспышке, и (Разбивается на лексемы) Основное применение в ЭСППЗУ (или в Flash , тоже). Проверьте, например, PICAXE и различные основные марки.
При такой настройке IMO и Базовый интерпретатор, и Базовое приложение должны называться прошивкой.
Интересным использованием интерпретатора встроенного программного обеспечения, который интерпретирует хранимый код (который также следует считать IMO встроенным ПО), является запуск XBOX 360. Этот отличный разговор описывает это в некоторых деталях.
Ниже MSalters задается вопросом, следует ли считать код FPGA / данные конфигурации микропрограммой.
В наиболее важных аспектах (это информация, которая может изменяться в конце производственного процесса, но не предназначена для изменения конечным пользователем по желанию) Биты FPGA ведут себя как встроенное ПО. Это делает вопрос, является ли это прошивка согласно любому определению спорным. Важным моментом является то, что он может (и должен) записываться, обрабатываться и управляться как прошивка. (Если он ходит и крякает как утка, это утка?)
Не беспокойтесь о определениях, когда они бесполезны. Это микрокод прошивки? Имеет ли значение представительство? Имеет ли значение контекст? Биты ROM для прошивки IWM?
Комментарий Vaxquis к вопросу OP побудил меня прочитать вики-статью, на которую он ссылается. ИМО определение данного встроенного программного обеспечения (постоянная память и программный код и данные, хранящиеся в нем) является проблематичным. ИМО карты, хранящиеся в автомобильной навигационной системе, являются данными, а не прошивками, независимо от того, как они хранятся (согласно вики они должны быть прошивками). И приложения в вашем iPhone или Android-телефоне - это приложения, а не прошивки (согласно вики они тоже должны быть прошивками).
источник
Прошивка - это программный код, который хранится в энергонезависимой памяти, такой как флэш-память. Этот термин чаще всего используется в связи со встроенными системами. Он может быть на том же чипе, что и процессор, или на отдельном устройстве.
источник
Я думаю, что оба варианта являются правильными, просто глядя на микропроцессор на разных уровнях абстракции. То, что вы называете своим неизменным двоичным файлом, - это само оборудование, которое довольно ограничено в своих возможностях. Извлечь адрес инструкции 0x0000, инструкцию декодирования, извлечь предоставленный адрес / регистр, выполнить, счетчик инструкции приращения. Это микропроцессорный конвейер, и вы не можете его изменить. Вы управляете тем, что делает микроконтроллер, сохраняя инструкции в памяти, которые затем последовательно считываются. В общем, да, прошивка - это просто входные данные для неизменяемой программы на низком уровне абстракции. Однако обычно проще представить прошивку как специальную программу, которая управляет микропроцессором, потому что концептуально это проще.
источник
Это на самом деле оба.
Одним из примеров микропрограммного обеспечения является BIOS для ПК, один из разделов BIOS является исполняемым, но другие части самого BIOS фактически являются данными, в частности, в таблицах для отображения для перечисления различных функций ПЗУ BIOS, независимо от типа технологии, на которой он основан на. Часто данные хранятся либо в другой флэш-памяти, либо в ОЗУ с резервным питанием от батареи или конденсатора, либо в CMOS SRAM, либо в другой совместимой технологии микросхем памяти.
Прошивка, это общий термин, используемый для обозначения неизменяемой / энергонезависимой памяти, она существует и доступна в соответствии с циклом питания до тех пор, пока в схеме нет ничего плохого с электрической цепью или в случае застрявшего цикла программирования, для EEPROM или Flash ромы.
Прошивка по определению - это самый низкий уровень доступа, который инициализирует, тестирует оборудование, установленное в вашей системе или встроенных компонентах, и предоставляет процедуры низкого уровня (иногда называемые вызовами функций BIOS), которые ваша операционная система должна иметь возможность использовать компоненты в вашей системе. В прежние времена BIOS или Basic Input Output System также включали в себя язык программирования под названием «BASIC», такой как Commodore 64 и другие персональные компьютеры 1970-х годов, конечно, были более старые компьютеры, в которых в них был встроен BASIC для использования. профессиональными компьютерными учеными. Если вы когда-либо слышали о символьном или символьном ПЗУ, это форма чистых данных для ПЗУ руководителя или программы, чтобы заставить систему перейти на этот символьный ПЗУ и искать символы в последовательности или выгрузить весь чип в ОЗУ для работы с ним. там.
Программисты по умолчанию PROM, EPROM, EEPROM, Flash записывают микропрограмму на микросхему, например, с суффиксом .hex или .bin, которые имеют одинаковый формат, и зависит от приложения, которое вы используете для отправки на микросхему, от микропрограммы.
Кроме того, существуют файлы BLOB-файлов прошивки, это исполняемые файлы в виде библиотек и подпрограмм, которые загружаются во время выполнения, хорошим примером этого являются драйверы беспроводного оборудования, они содержат достаточно кода для запуска всего оборудования этих карт через ваш компьютерная система. Единственная разница заключается в том, что карта и прошивка на основе USB хранятся не на них, а на жестком диске и загружаются в память. По сути, он работает как слой и фильтр службы перевода. Это и данные, и код тоже.
Моя основа заключается в том, что я на самом деле пишу BIOS для других компьютеров и встроенных систем (например, беспроводное встроенное ПО, которое фактически загружается при запуске операционной системы, а затем начинает загружать аппаратные драйверы низкого уровня, которые также включают встроенное ПО во время выполнения). ). Он называется прошивкой, потому что он никогда не меняет свои процедуры, если вы не получите обновление от производителя, а затем обновление перезаписывает старое. Действует как новая прошивка в этом случае до тех пор, пока не будет найдено, что обновляется новый материал, если нет, то это именно та прошивка, которую вы используете при загрузке операционной системы.
Я согласен, это не следует называть прошивкой, потому что технически он не встроен в чип как постоянное решение и нуждается в специальном инструменте и приложении для обновления прошивки (в случае старых BIOS или флэш-памяти).
Есть еще вопросы, я был бы рад ответить на них для вас.
источник
Прошивка - это код, созданный в некоторой среде разработки, точно так же, как программный код, но затем он сводится к машинному коду, чтобы процессор мог его понять. Если вы сбросите память микроконтроллера или какого-либо другого чипа, вы заметите, что он не похож на код C или то, для чего мы его программируем.
Таким образом, вы не программируете .EXE для него, так как это скомпилированная программа для запуска в какой-то среде ОС. Вы будете программировать, как правило, на .hex или, может быть, .elf, это действительно зависит от устройства, которое вы программируете, но это не имеет значения, потому что вас не интересуют типы файлов, поскольку ваш компилятор вместо этого скомпилирует запишите код в машинный код и поместите его во встроенную микросхему флэш-памяти или в любую схему хранения.
Прошивка, как правило, является неизменяемой в том смысле, что в нее должны быть запрограммированы условия среды. Вы не можете изменить код прошивки и оставить его, вы должны внести изменение, скомпилировать его и заново прошить устройство.
источник
Прошивка - это общий термин, который обычно используется для обозначения того, что находится на полпути между миром программного обеспечения и миром аппаратного обеспечения.
Оборудование сложно изменить. Программное обеспечение легко изменить. Менять прошивку не так сложно, как аппаратную, но сложнее, чем программную.
Его можно использовать для обсуждения исполняемого кода, данных или информации о конфигурации (как в FPGA / PLD / etc), которую можно изменить.
источник
Чтобы объяснить больше, что такое прошивка из внутреннего смысла.
Прошивка - это код, который выполняется на очень специфическом оборудовании, то есть его операционные коды специфичны для оборудования, для которого оно написано, это может быть семейство микросхем или интерфейсов или предназначенный только для одного элемента.
По сути, что делает прошивка это;
Имеет встроенные инструкции для данного процессора для выполнения и выполнения, это называется «начальной загрузкой». Какие самые загружаемые компьютеры имеют это в своем BIOS.
Инициализируйте указанное оборудование через инструкцию в прошивке.
Загрузите в / вверх таблицу прыжков.
Сделать доступ к регистрам на данном устройстве доступным.
Передавайте управление на выход из процедуры, как только BIOS будет использован после холодного (состояние выключено) или горячего старта (был использован обычный сброс или вывод сброса).
Большинство BIOS (микропрограммное обеспечение) предназначены для конкретного набора микросхем, исключают все их функции и уточняют любые данные, которые могут быть подключены к определенной шине в компьютере или встроенном устройстве.
Жесткие диски являются хорошим примером решения для хранения данных, которое само по себе является встроенным устройством, в котором также есть BIOS и микропрограммное обеспечение на чипе.
По сути, все прошивки представляют собой набор инструкций, которые другой процессор выполняет для получения функциональных возможностей указанного устройства. Это программное обеспечение, которое загружается в физическое устройство, после потери питания оно будет там, когда устройство восстанавливает питание.
Технически, вы можете использовать любой язык программирования или сценариев для создания бинарных файлов. Вам просто нужно знать, как работает процессор, на который вы собираетесь ориентироваться, действительные коды операций, внутренний регистр (не говоря уже о том, для чего они предназначены), чтобы изучить двоичные и шестнадцатеричные системы счисления и как создать ассемблер, который может сохранять Ваш код на ассемблере. После этого вы можете поручить другой программе преобразовать ее в двоичный файл, а затем сохранить в виде файла .bin или .hex.
Если вы хотите узнать, как Ada, C, C ++, D и другие языки программирования преобразуют свои «токены», которые являются их собственным кодом, который преобразуется в псевдо-коды для машинного языка. Есть несколько книг, которые я рекомендую вам прочитать, некоторые из них довольно элементарны и сосредоточены вокруг очень специфических процессоров, но это полезно для изучения. Я покажу вам одну книгу, потому что я не хочу утопить вас или кого-либо еще, кто читает это в информации.
Это введение в программирование на ассемблере на ПК в самом начале. В нем рассказывается об обработке прерываний (аппаратных и программных прерываний) и о многих других темах, более подробно объясняется, что на самом деле делает BIOS и как с ним работать.
В отличие от ассемблера и машинного языка, в Ada, C, C ++, D вы можете получить гораздо больше, если не знаете особенностей своего оборудования. В ассемблере и машинном языке, если вы не знаете, что делаете, либо произойдет что-то плохое, либо код не будет работать. Я предпочитаю последний случай, а не работать против чего-то плохого.
Примечание: о ответе выше, о флэш-ОЗУ, такого нет, есть флэш-ПЗУ, но нет флэш-ОЗУ. Флэш-ПЗУ содержит встроенное программное обеспечение, ОЗУ с батарейным или конденсаторным питанием или другое флэш-ПЗУ, содержащее параметры для установленных вами параметров BIOS.
В прошивке есть код о том, как хранить или очищать память данных (в сравнении с памятью программы / самой прошивкой), если это флэш-ПЗУ или чип ОЗУ. На ПК, если ваш пароль BIOS искажен или вы его не помните (или кто-то связывается с вами), вы можете открыть корпус и найти два контакта, которые называются «CMOS CLR / CMOS CLEAR / BIOS RESET / BIOS RST», Сочетание этих двух контактов вместе также очищает память, все, что вам нужно будет сделать после этого, это нажать кнопку сброса, когда два контакта все еще закорочены. Это удаляет пароль и дает вам полный доступ к BIOS вашего компьютера (при условии, что у вас более новый компьютер с 1990-х годов).
На новых ПК у вас есть флэш-память для прошивки и SRAM с резервным питанием от батареи (не нужно постоянно обновляться, как микросхемы DRAM, он основан на более старой технологии).
источник
Что касается встроенных систем, прошивка прошивки означает, что вы удалили ПЗУ микроконтроллера с помощью перепрошивки и переписали его с новым кодом. Прошивка для прошивки находится в шестнадцатеричной форме.
С точки зрения терминологии, связанной с ОС, она также мигает в ПЗУ, но на этот раз ОС несет ответственность за ее прошивку при появлении обновления.
источник
Я считаю, что использование «исторической» перспективы может дать более общее представление о том, что такое прошивка .
Сначала начинается с «аппаратных средств». Чтобы обеспечить / создать данную функцию, можно использовать трубки, реле, транзисторы и ИС. Вы бы использовали ряд этих компонентов и создали бы устройство, которое выполняло бы требуемую функцию. Это считалось «аппаратным обеспечением», потому что, если вы хотите (или нуждаетесь) изменить функцию, вам потребуется распаять провода, розетки и т. Д., И это было «сложно» сделать. Таким образом, этот метод реализации функции стал известен как использование аппаратного обеспечения. Использование процессора, оперативной памяти и кода стало еще одним методом создания функции и стало называться «программным обеспечением».вносить изменения в конструкцию ». Однако была также необходимость (в основном от производителей) завершить проектирование как можно раньше, но при этом иметь возможность вносить изменения в конструкцию« в последнюю минуту »как можно проще и с меньшими затратами. Использование ПЗУ обеспечивало такую гибкость вплоть до момента «первого отгрузки». ЭСППЗУ позволяют вносить изменения даже после «первого отгрузки» (в полевых условиях). Код, необходимый / используемый для ПЗУ и ППЗУ, был назван «микропрограммой». «.
источник