LINUX.ORG.RU

Как обучиться embedded?

 


0

2

Меня интересует не Arduino и др., а что то типа stm32 или esp. Я хочу научиться программировать такие микроконтроллеры на си без всяких жирных библиотек как у ардуино. Но я не могу найти в интернете информацию по этой теме…

Опыт на си имеется. Ассемблера не боюсь. В схемотехнике плюс минус.

Кто хорошо разбирается, скажите, пожалуйста, как вы научились и как научиться мне.

Ищешь какую-нибудь среду разработки, лучше такую, чтоб в ней симулятор был, и начинаешь ковыряться, читая доки на контроллер. Какие сейчас есть, да ещё чтобы и бесплатные — не в курсе. Я-то учился на официальном софте от AD и TI, сейчас с этим сложно. Для АРМов каких-нибудь, наверно, можно найти.

alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)
Ответ на: комментарий от realbarmaley

У вас цель какая, научится или использовать СПО? Доки на stm доступны на сайте производителя, они и будут основным «учебником». Плюс на профильных форумах по электронике, тот же радиокот или сахара, имеют отдельные темы по МК в том числе и для начинающих.

pavel_l
()

Если рассматриваешь книги, то на сайте ST есть список книг по stm32. Я пару из них начинал читать, например, если, рассматриваешь использование HAL, то можешь почитать «Mastering the STM32 Microcontroller by Carmine Noviello», либо про libopencm3 и FreeRTOS «Beginning STM32: Developing with FreeRTOS, libopencm3 and GCC by Warren Gay» — тут кстати полностью СПО стек. Переложить эти знания на использование регистров несложно, обращаясь к Reference Manual на твой камень.

snake266 ★★★
()

Плюсую на счет работы. Я не разбираюсь (как-то писал только hello world для ARM более толстого, чем на STM32), но действовал бы так: гуглю на предмет «STM32 bare metal», нахожу пример использования STM32 без ОС, выбираю плату с STM32, желательно ту, которую в статьях рекомендуют, пробую эти bare metal примеры, потом добавляю всякой периферии. Как только освоился с железом, можно уже подумать о собственной ОС. Вот здесь есть какая-то инфа по низкоуровнему программированию: https://wiki.osdev.org/Expanded_Main_Page , хотя из армов там вроде RPI. По STM32 и ESP дофига книг, просто качать их из торрентов, или как сейчас принятно, и читать, пробовать.

seiken ★★★★★
()
Ответ на: комментарий от aiqu6Ait

Я может что-то не то делаю, но я 2 недели ищу работу в ДС (я в первый раз ищу работу, может это на самом деле мало) и только один созвон с HR. Официального коммерческого опыта чуть меньше года, возможно проблема в том, что я разбираюсь только в bare metal и никогда не работал с тем же RTOS и embedded Linux, публичных проектов особо тоже нет потому что после учебы и работы времени не остаётся. Сейчас думаю пойти вширь и самостоятельно познать embedded Linux и написание модулей под него.

Так вот, к чему это я: я так понимаю, ТС знает только ардуинку и я не представляю как он найдет себе работу.

snake266 ★★★
()

Я хочу научиться программировать такие микроконтроллеры на си без всяких жирных библиотек как у ардуино. Но я не могу найти в интернете информацию по этой теме…

производители всяких там процов в том числе и МК, должны на сайтах у себя выкладывать коды хала и драйверов, и всякие демки - как все это запустить, чтобы оно в компорт написало типа хелловорда.

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

возьми платку с stm, залезь на сайт производителя и ищи стартап-коды и халы всякие. грузи и пускай.

alysnix ★★★
()
Ответ на: комментарий от bga_

что значит потыкать регистры? последний проц с которым я имел дело в ембеде был TI am1810. там этих регистров хоть ж. ешь. и тыкать в них бестолку без мануала бескрайних размеров. разумеется все это должно быть накрыто драйверами и халом, чтобы мозги не сломать.

alysnix ★★★
()

на си без всяких жирных библиотек

Ересь. Бери STM32CubeMX, библиотеку HAL и вперёд. На рынке платят за сокращение time-to-market.

Ассемблера не боюсь.

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

ox55ff ★★★★★
()
Ответ на: комментарий от bga_

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

alysnix ★★★
()

Так ембедед на Адуино, ничем не отличается от ембедеда на stm, nuvoton, ti или ещё каком-то г-не, там везде одно и тоже, если микроконтроллер ARM вся разница в кривизне SDK конкретных производителй. Та и библиотеки есть везде, и под ту же платформу ардуино можно писать и на ассемблере, и на пайтоне, и на С, и без использования либ. А для разработки нужна только платка, компилятор и редактор кода, никакие IDE впринципе не нужны.

sbu_shpigun
()
Ответ на: комментарий от bga_

Не нужны, ассемблер впринципе не нужен в современном ембедеде, для потребительского рынка, та и для проффессионального тоже не особо, если это не рокетсайнс или оборонка.

sbu_shpigun
()

Думаю, что проще всего взять какую-нибудь отладочную плату с тем же STM32 (их много, могу посоветовать) + программатор + отладчик и начать писать Hello World’ы на голом железе. Сначала просто лампочкой поморгать/логический уровень на ножке подёргать и измерить мультиметром. Потом настроить обработку какого-нить прерывания (от таймера, например) и тоже ножку дёргать. А потом взять datasheet на нужную модель микроконтроллера и читать-читать. Может потом и идея придёт что можно на этой платке запилить полезного.

dsl
()

Я хочу научиться программировать такие микроконтроллеры на си без всяких жирных библиотек как у ардуино.

Так а конечная-то цель какая?

Если разобраться во внутреннем устройстве контроллера, то берете любой - хоть ту же Ардуину, хоть чистый AVR, хоть PIC, STM32 и пишете на чистом ассемблере, потом Си. Я не так давно с RISC-V разбирался, тоже asm->C. Лучше сразу же тренироваться на чем-то более-менее интересном, чтобы мотивация не пропала. Если вдруг у вас есть какое-то старое детское желание и оно не слишком сложное (ну мало ли, гирлянду сделать или телевизор на диске Нипкова) - можно его.

Если сразу решать практические задачи (ну там автоматизация теплицы или что-то в этом роде), то как раз Ардуино, ST-HAL и прочие монструозии. Правда, если вдруг захочется потом разобраться как же работает собранная вами же поделка, придется вернуться к предыдущему варианту.

Ну а если просто вам кто-то наплел что эмбед это круто, лучше сразу откажитесь от этой идеи. Оно того не стоит.

COKPOWEHEU
()

Для ESP есть очень неплохие девайсы от M5STACK. Мне очень нравятся, тем что у них есть нормальыне корпуса и платки между собой удобно соединять. Ну и для рограммирования есть все что угодно. От скретчка на их сайте до вполне бареметального С

vromanov ★★★
()

Лучше не делай этого. Ембеддед чудовищно повреждает мозг людям. Если поговоришь с жертвами этого культа, они не могут готовые библиотеки или языки сложнее C использовать в принципе. В результате, плодятся тонны ненужного кода там, где без этого можно обойтись, и потом все страдают.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Это точно, в код embedded-разработчиков лучше не заглядывать. Они обычно собирают все bad practice что есть на свете. Иногда диву даёшься как оно всё это работает вообще.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Просто при ограничении в условные 64К флэша это бьет по рукам несколько меньше, чем в случае кода в 100500 sloc. Как следствие, зачастую можно успешно завершить проект и сдать заказчику без особых познаний в архитектуре ПО (но лучше не нужно).

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

Minoru ★★★
()
Последнее исправление: Minoru (всего исправлений: 1)
Ответ на: комментарий от snake266

Сейчас думаю пойти вширь и самостоятельно познать embedded Linux и написание модулей под него.

Зачем? Просто напиши нормальное резюме и найди работу, на рынке есть вакансии для неопытных эмбедеров (ну те которые около сотки получают). Наберешься опыта, и годика через 2-3 найдешь нормальную работу. А эмбед линуксом за деньги тебя обеспечит работодатель.

aiqu6Ait ★★★★
()
Последнее исправление: aiqu6Ait (всего исправлений: 1)

Кто хорошо разбирается, скажите, пожалуйста, как вы научились и как научиться мне.

Помни что программируешь систему. А какую - DGX H100 или STM32 - неважно. Важно понять как работает система.

Ну и внутри всякого embedded есть другой embedded. Иногда гораздо больше сложнее наружного )

kindof
()
Ответ на: комментарий от EXL

Это точно, в код embedded-разработчиков лучше не заглядывать. Они обычно собирают все bad practice что есть на свете. Иногда диву даёшься как оно всё это работает вообще.

А. И самое главное - если имеет место этот самый bad practice и он положен в основание работы - тратить время на такую работу можно только из крайней нужды. Нормальное embedded программирование в своей организации и практике ничем от любого другого программирования не отличается.

aiqu6Ait ★★★★
()
Ответ на: комментарий от bga_

Исчезающе малое кол-во проектов. Пока вкатишься в семейство, оно безбожно устареет. Имеет смысл только если собрался писать HAL. На обычных проектах такое выпендривание ведет к увольнению за просратые сроки.

Morin ★★★★★
()

Ты бы сформулировал, в чём проблема, пока не понятно ничего, чему именно ты собрался учиться. Датащит на стм32 скачать не проблема. Там расписано по каждому адресу и биту что куда. Я в этом не особо разбираюсь, но на ассемблере мигалку светодиодом писал, никаких существенных проблем не возникло. Просто по нужным адресам на флеш записываешь нужный машинный код и всё.

А вообще коммерческие эмбеддеры этого ничего не понимают, они просто в кубе чето там двигают, поэтому если хочешь бабло зашибать - учись кубу. Как там библиотеки соединять. Но я бы посоветовал жаву. Тоже ничего понимать не надо, а просто библиотеки соединять в идее, но хотя бы платят больше. А микроконтролеры для души в свободное время на ассемблере программировать.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

Разберись с AVR только не с ардуиной, а прям бери мегу8, втыкай в макету, подключал по про водочку программатор и вперёд - светодиод, уарт, таймер и далее по датащиту. Программу писать руками, мейэкфайэл писать руками.

С мегой разобраться проще всего: по ней и информации море и примеров и всегда есть у кого спросить. И стоит все это копейки и поддержка на линуксе - 146%. Когда белых пятен по меге не останется, внезапно обнаружить что другие микроконтроллере - все такие же

pihter ★★★★★
()
Ответ на: комментарий от realbarmaley

Нашел два чипа, которые мне по душе: atmega8a-pu и attiny13a-pu

Начинать лучше с ATmega8: чуть больше возможности отладки (в отличие от tn13, есть аппаратный UART). Больше ног и периферии, с которыми можно поиграться, не придется городить расширители портов или вырвиглазные мультиплексоры. Ну и больше памяти, но если вы новичковским кодом забьете даже килобайт - пора думать об оптимизации.

Датащит на стм32 скачать не проблема. Там расписано по каждому адресу и биту что куда.

С непривычки в stm’овском даташите (плюс рефман плюс еще кучу документации) утонуть можно.

Да хоть ту же периферию взять: у AVR это будет пяток битов в двух регистрах, а у STM придется десяток регистров перелопатить чтобы понять какие 5 - 10 битов надо выставить. И, кстати, биты придется выставлять не только в регистрах, связанных с самой периферией.

COKPOWEHEU
()
Ответ на: комментарий от bga_

Демосцена по определению не делает погоды в эмбеде. Это просто факт. А «заталкивание в прошивку» происходит скорее буднично и банально. Методом урезания осетра.

slackwarrior ★★★★★
()

Я тоже нуб и мимокрокодил в этой области, периодически начинаю что-то почитывать, но дальше пока не продвинулся.

Так вот, я к тому, что мне понравилась вот эта статья и другие от этого же автора. Глянь, вдруг пригодится.

hobbit ★★★★★
()
Ответ на: комментарий от snake266

я в первый раз ищу работу
Официального коммерческого опыта чуть меньше года

у тебя вообще нет опыта, то что ты у своего родственника/знакомого штаны просиживал опытом не является

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Пятизвездочника порвало вставить свои 5 копеек. Вы ничего не знаете обо мне, а уже наложили свои влажные фантазии. Откуда вы знаете что я делал на работе или как я нашел эту работу? Не думаете, что как то не хорошо обесценивать чужие старание, основываясь на свои домыслы?

snake266 ★★★
()