Вивчіть C та отримайте дешеву плату розробки мікроконтролерів, як-от MSP430 або ARM Cortex, і принаймні напишіть і завантажте кілька програм C.
У мене є ступінь інформатики та передумови розробки програмного забезпечення, в основному програмування C ++ для ігор, а тепер ігри та додатки для iOS, але останньою моєю роботою була напівпрофесійна концертна програма EE, яка розпочалась із створення програми програмування програмного забезпечення для системи ARM Cortex M3 , а потім я зрозумів, як зробити основні схеми дизайну та компонування дошки та створити пару простих дощок. Таким чином, я в основному повинен був зіткнутися з проблемою використання найкращої мови програмування для з'єднання дизайну апаратного / програмного забезпечення, як того, хто відповідав за обидва кінці цього.
C - це абсолютно та мова, яку потрібно знати. Люди, які програмують на C ++, і ніколи насправді не повинні обмежуватися набором функцій C, щоб сказати "це те саме", але це не так. Тим більше, як C ++ розвивався та набирав функції, і те, як основні програмісти C ++ використовують ці функції, працювати над досить великим додатком C на відміну від додатка C ++ - це дійсно набагато інша справа. Ваш SDK для мікропрограмного забезпечення буде купою бібліотек C, все інше, що вміститься в MCU, буде бібліотекою C, будь-яка ОС, яка має сенс на MCU, буде записана на C і т.д. тощо.
Однак, оскільки багато ланцюгів інструментів MCU в кінцевому підсумку використовують GCC як їх компілятор, ви майже напевно будете мати компілятор C ++, якщо ви використовуєте гідну сім'ю MCU. Але ви повинні бути дуже обережними щодо функцій, якими ви користуєтесь, особливо до речей зі стандартної бібліотеки, оскільки це дуже просто в кінцевому підсумку з двійковим файлом, який занадто великий, щоб поміститися на вашому пристрої. Я думаю, що для використання C ++ на вбудованих пристроях слід створити хороший випадок, у C ++ є досить багато приємних функцій, які мають засмічення або відсутність розміру або швидкість покарання, ви просто повинні знати, що ви робите, і писати код таким чином далі на кінці спектру в стилі С, ніж кінець спектру STL з точки зору розумного використання функцій.
Не звертайте занадто багато уваги на людей, які кажуть, що ви можете використовувати Lua або Python на MCU з правильним вбудованим перекладачем, бла. Це правда, я це зробив, і це весело, але на даний момент це більше для іграшкових проектів і речей, які з'являються на Hack a Day. Я думаю, що ми побачимо більше подібного, оскільки закон Мура невблаганно застосовується навіть до найменших процесорів, це те, що трапилося з іграми, де раніше було багато збірок, тоді вони довше трималися з C і C ++ ніж у всіх інших, і зараз все настільки швидко, і продуктивність розробників настільки важлива, що багато розробок робиться з вбудованими мовами вищого рівня або мовою високого рівня прямо. Незважаючи на це, пройде кілька років, перш ніж ви побачите компанії, які наймають програмістів програмного забезпечення з фоном Python та Lua.
Не витрачайте занадто багато часу на складання. Непогано бути знайомим з поняттями, але навряд чи ви виявите, що ви робите багато, якщо якесь програмування монтажу. Ось така звичайна мудрість з іграми та вбудованою, що це «добре знати» збірку, часто повторювану людьми, які насправді не працюють у цих сферах. Але насправді це малоймовірно, що ви взагалі будь-коли будете писати будь-яку збірку, і якщо ви це зробите, можливо, це буде лише кілька рядків для оптимізації або щось із апаратним забезпеченням, для якого у вас просто немає API (але ви будете мати після того, як ви напишете той, який обгортає кілька рядків складання). Я працював над декількома іграми, і цей проект дизайну дошки / прошивки та загальна кількість ліній складання, які я написав для комерційних проектів, мабуть, у підлітків. Це '