English for Firmware Engineers

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

Програмне забезпечення розташоване на межі між апаратним та програмним забезпеченням, і англійська мова, якою використовується для його опису, запозичує слова з обох світів — такі терміни з електротехніки, як « pull- up resistor », разом з термінами з програмного забезпечення, на зразок « interrupt handler ». Правильне використання цього словника має більше значення, ніж зазвичай, оскільки неправильно використане слово у перегляді коду програвача може призвести до того, що ваш колега почне переслідувати неправильну ваду на фізичній платі, яку він не зможе легко перевірити з спільного екрана. Цей посібник містить основні слова, фрази, які інженери з розробки мікропрограм використовують щодня, а також помилки, які найчастіше збентежують людей, для яких мова не є рідною.

Ключовий словник

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

  • Приклад: « Загрузчик перевіряє підпис мікропрограми перед переходом до вектора скасування програми. » *

** Реєстрація карти ** Задокументований набір адрес пам’ яті, що відповідають апаратним контролем і регістрам стану на мікроконтролері або периферійному пристрої.

  • Приклад: « Перевірити карту регістрів в таблиці даних — біт 3 керуючого регістру вмикає переривання прийому UART ». *

** Рутинна обслуговування переривання (ISR) ** Функція, до якої процесор автоматично переходить, коли відбувається певна подія апаратного забезпечення, що перериває звичайний поток програми.

  • Приклад: « Тримайте ISR коротким — виконуйте важку обробку у головному циклі і просто встановіть прапорець всередині обробника переривань. » *

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

  • Приклад: « Ми додали 20- мілісекундний відскок на вхід кнопки; без нього одне натискання було зареєстровано як три. » *

** Таймер для собаки-охоронця ** Аппаратний таймер, який скидає систему, якщо програмне забезпечення не може періодично « затискатися » або « натискатися », використовується для автоматичного відновлення після зависання.

  • Приклад: « Якщо головний цикл застряг у очікуванні на датчик, охоронний собака скине плату через 500 мілісекунд. » *

** Флеш-пам’ять / нелетюче зберігання ** Постійний об’ єкт зберігання, який зберігає дані без живлення, використовується для зберігання штампу мікропрограми і, часто, даних налаштування.

  • Приклад: « Ми зберігаємо значення калібрування у резервованому секторі флеш- пам’ яті, щоб вони пережили цикл живлення. » *

Периферия Компонент апаратного забезпечення, приєднаний до мікроконтролера, наприклад, UART, шина SPI, ADC або таймер, з яким програмне забезпечення налаштовує і взаємодіє за допомогою регістрів.

  • Приклад: « Датчик температури знаходиться на периферії I2C, і ми запитуємо його кожні 100 мілісекунд. » *

Бит-банг Реалізація протоколу зв’ язку у програмному забезпеченні шляхом безпосереднього перемикання виводів GPIO, замість використання спеціального апаратного пристрою. Приклад: “Ми біт-бангуємо протокол SPI на цьому виводі, тому що апаратний контролер SPI вже використовується в іншому місці.”

JTAG/SWD Інтерфейси апаратного зневадження, які надають зневаджувачу змогу зупинити процесор, перевірити пам’ ять і регістри, а також переглянути інструкції на фізичному мікросхемі.

  • Приклад: « Підключіть зонд SWD до заголовка, і ми зможемо встановити точку зупинки прямо на обробнику помилок. » *

Звичайні фрази

** В обзорах коду: **

  • «Ця ISR робить обчислення з плаваючою комою — це занадто дорого для контексту переривання; пересунути його в головний цикл»
  • «Ми не вимикаємо переривання навколо цього спільного доступу до буфера, тому існує умова гонки з перериванням завершення DMA»
  • “Ви перевірили лист з помилками для цієї версії чипа? Є відомий кремнієвий баґ з цим периферійним годинниковим воротами»

В стоячих позах:

  • «Я провів вчора, щоб підняти новий датчик над SPI — час виглядав правильно на логічному аналізаторі, але я все ще бачу сміття на першому байті»
  • «Сегодня я збираюся розділити мікропрограму, щоб знайти, який запит впровадив скасування brown-out, яке ми бачимо при холодному запуску»
  • «Я закінчив логіку відновлення завантажувача; якщо новий образ не перевершить його контрольну суму, він повернеться до попереднього відомого образу.»

** У зустрічах синхронізації апаратного/ програмного забезпечення: **

  • “Може, ми отримаємо оновлену схему? Пін 14 на роз’ємі не відповідає тому, що є в поточній версії плати»
  • «Ми бачимо перервані скидання, які корелюють з запуском двигуна — чи можемо ми перевірити, чи це проблема з рейкою живлення або тригером охоронця прошивки?»
  • “У таблиці даних зазначено, що цей регістр є тільки для запису, але нам потрібно прочитати налаштований стан десь для діагностики.”

Фрази, яких слід уникати

**Скажуть “програма зламалася” через помилку в прошивці. ** У вбудованих контекстах, « аварія » є неясним. Люди, які говорять на рідній мові, використовують більш точні терміни: « пристрій зазнав критичної помилки », « він викликав скасування системи спостереження » або « він увійшов у нескінченний цикл у програмі обробки помилок ». Точність у цьому випадку допомагає колегам з апаратного забезпечення точно зрозуміти стан плати.

Скажите “Я подключил отладчик к чипу”, когда вы имеете в виду отладочный зонд. « Зневаджувач » — це програмне забезпечення, яке запущено на вашому комп’ ютері (наприклад, GDB або IDE виробника); « зонд » або « адаптер » (наприклад, J- Link або ST- Link) — це фізичне обладнання, яке з’ єднує ваш комп’ ютер з призначенням. Скажіть: « Я приєднав зонд зневадження до цілі і запустив сеанс зневадження. »

Скажи “сбросить дошку”, коли ти маєш на увазі щось більш конкретне. Існує кілька різних видів: «сброс при включенні», «сброс програмного забезпечення» (запускається прошивкою), «сброс сторожового собаки» і «сброс при виході з ладу» (запускається падінням напруги). Правильне названня збереже вашим колегам значний час діагностики.

Краткий справочник

TermHow to use it
bootloader”The bootloader checks a CRC before jumping to the application.”
ISR”Keep ISRs short and defer heavy work to the main loop.”
debounce”We debounce the button in software with a 20ms window.”
watchdog”The watchdog resets the board if the main loop stalls.”
bit-banging”We’re bit-banging this protocol since no hardware peripheral is free.”
JTAG/SWD”Attach the SWD probe and set a breakpoint at the fault handler.”

Ключеві моменти

  • Словник програмного забезпечення поєднує апаратні терміни (реєстр, периферія, рейка) з програмними термінами (переривання, watchdog, ISR) — використовуйте обидва терміни.
  • Ясно розрізняти типи скидання (включення живлення, програмне забезпечення, watchdog, brown- out), а не просто говорити « скидання ».
  • Відокремте зневаджувач (програмне забезпечення) від зонда зневаджування (апаратне забезпечення) під час опису ваших налаштувань.
  • У описах ISR слід вказувати, що відбувається у контексті переривання у порівнянні з головним циклом — це часто обговорюється під час перегляду коду.
  • Коли щось не працює, описуйте спостережуваний симптом точно (серйозна помилка, нескінченна петля, зависання), а не просто « аварія »

Розрізняють: практичний підхід

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

Поширений сценарій під час перегляду коду. Уявіть, що ви отримали коментар на кшталт: «Я не зовсім впевнений, чому ви встановили вектор переривання для SPI на 0x10. Документація свідчить, що вона повинна бути вирівняна з картою пам’яті. Негайна реакція може бути оборонною, але добре структурована відповідь, зосереджена на * ясності * і демонстрації розуміння основної проблеми, є набагато ефективнішою. Замість того, щоб сказати «Я не розумію», спробуйте щось на зразок: «Це хороша точка зору — я покладався на внутрішню документацію, яка не була оновлена, щоб відобразити останні зміни карти пам’ яті. Дозвольте мені дослідити вирівнювання вектора переривання SPI; чи могли б ви надати посилання на остаточну специфікацію?» Ключовим у цьому випадку є визнання потенційної невідповідності, продемонстрування бажання вчитися і запрошення до співпраці.

Крім того, точна мова уникає неправильного тлумачення. Сказати, що «система зламалася», неоднозначно. Замість цього, намагайтеся бути конкретними: « Завантажувач не виконав команду після завершення процесу запуску, що призвело до жорсткого скасування ». Цей рівень деталізації негайно надає контекст і дозволяє іншим зрозуміти масштаб проблеми. Аналогічно, при описі запропонованої зміни, уникайте таких термінів, як «виправлення» — це означає дефект, де його може не існувати. Замість цього використовуйте такі фрази, як « підвищити продуктивність » або « поліпшити надійність ». Ясне спілкування зменшує неоднозначність і спрощує процес зневадження. Пам’ ятайте, документація є ключем; послідовна термінологія створює спільне розуміння у команді.

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

Ось приклад того, як ви можете скористатися grep для пошуку певного значення регістру у бінарному файлі під час зневадження:

grep -B2 -A2 '0x12345678' bootloader.bin

За допомогою цієї команди буде виконано пошук у файлі bootloader.bin випадків шістнадцяткової адреси 0x12345678 і буде надруковано два рядки перед і два рядки після кожного збігу, що надає контекст навколо значення регістру. Це демонструє практичне застосування словника, пов’ язаного з двійковим аналізом і налаштуванням апаратного забезпечення.

Поширені запитання

Про що ця стаття "English for Firmware Engineers"?

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

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "English for Firmware Engineers"?

Приблизно 8 min.