Как прошивки связываются с электронными устройствами для выполнения своих операций? - PullRequest
0 голосов
/ 19 ноября 2009

Почти все электронные устройства поставляются с прошивками. Я знаю, что он хранится в ПЗУ (постоянное запоминающее устройство), поэтому он становится энергонезависимым (не требуется источник питания, чтобы удерживать содержимое от стирания, как ОЗУ)

То, что я хочу знать, это "Как прошивки взаимодействуют с электронными устройствами для выполнения своих операций?" Допустим, есть маленький ролик. Как он перемещается при нажатии кнопки? Может кто-нибудь объяснить, что находится позади, чтобы это произошло .. Я думаю, что для его раскрутки может потребоваться небольшое краткое объяснение.

Кроме того, какой самый популярный язык используется для кодирования прошивок?

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

В большинстве систем есть специальные адреса памяти, которые используются для ввода / вывода. Чтение и запись по таким адресам выполняет некоторую функцию, а не просто перемещает данные. В системах x86 для этого также есть специальные инструкции ввода / вывода IN и OUT.

Простейший случай называется общим параллельным вводом / выводом (GPIO), где вы можете считывать или записывать данные непосредственно с / на внешние электрические контакты устройства. Существует несколько адресов памяти, называемых регистрами, где вы можете читать данные из порта (напряжение около 0 = 0, около напряжения питания = 1), где вы можете записывать данные в порт и где вы можете определить, является ли конкретный вывод вход (соответствующий бит обычно равен 0) или выход (бит равен 1). Каждый микроконтроллер имеет GPIO.

Таким образом, в вашем примере кнопка может быть подключена к выводу, установленному на вход, который может распознавать программа. Обычно он делает это каждые 10 мс и реагирует, только если у него есть стабильное значение для нескольких операций чтения, это называется debouncing. Затем он записал бы 1 в некоторый выход, который через некоторый транзистор для усиления мог управлять двигателем. Если он почувствует, что вы отпустите переключатель, он может снова выключить двигатель, написав 0. И так далее, эта программа будет работать, пока вы не выключите устройство.

Существует множество других устройств ввода-вывода для других целей, обычно с сотнями регистров для управления ими. Если вы хотите увидеть больше, вы можете посмотреть в спецификации какого-то микроконтроллера. Например, вот таблица данных ATtiny4 / 5/9/10 , очень маленького контроллера из семейства Atmel AVR.

Сегодня большинство прошивок написано на C, за исключением самых маленьких устройств и небольшого специального кода для обработки сброса и прерываний, который написан на ассемблере.

1 голос
/ 19 ноября 2009

Современное аппаратное обеспечение, как вы описываете, имеет программу, хранящуюся в ПЗУ, и универсальный микрокомпьютер (ЦП), выполняющий эту программу.

ЦП считывает информацию из ПЗУ, устанавливая адреса на своей адресной шине, а затем просит ПЗУ сообщить ему значение, хранящееся в этом месте. Возникает что-то вроде импульса чтения (в отдельной строке), который сообщает ПЗУ, чтобы сделать значение доступным в строках шины данных. Это, в двух словах, чтение.

Чтобы аппаратные средства что-то делали, ЦП в основном выполняет своего рода операцию записи. Он помещает значение, которое является просто кучей битов, если вы хотите посмотреть на него таким образом, на адресную шину, чтобы выбрать определенное устройство и, возможно, функционировать на этом устройстве, а затем выдает другую сигнальную линию, говорящую «напишите!» Устройство, которое распознает свой адрес на адресной шине, реагирует на этот сигнал, принимая данные с шины данных и затем выполняя любую функцию. Как правило, один из битов шины данных будет подключен в выходном устройстве к выходному каскаду мощности, то есть к транзистору, более мощному, чем те, которые используются только для вычислений, и этот транзистор подключит некоторое электрическое устройство к току, достаточному для его движения / свечения. /whatever.

Крошечные, дешевые устройства написаны на языке ассемблера, чтобы сэкономить на ПЗУ; в промышленных объемах даже небольшое количество памяти может повлиять на цену. Язык ассемблера специфичен для процессора; Некоторые чипы под названием «8051», «6502» и «Atmel (что-то или другое)» являются популярными. Более крупные устройства с более сложными требованиями могут иметь свою прошивку, написанную на C или C-подобном диалекте, что делает программирование немного легче, чем на ассемблере. Самые большие даже запускают код C ++. Скомпилировано, конечно.

...