LINUX.ORG.RU

AVR + STM = ♥?

 ,


1

2

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

Небольшая предыстория, если кому-то интересно, в общем, решил наконец взяться за голову и думать что я буду делать после института (да-да, во втором семестре третьего курса), да и еще чтоб деньги за это получать, и положил глаз на программирование микроконтроллеров, где некоторый опыт у меня уже имеется. Посмотрел на hh то, что мне нужно было там есть и в некоторых вакансиях даже требовали диплом по моей специальности (радиотехник), то что я там видел было в основном про stm и pic. Зарядившись мотивацией, я открыл свои закладки в браузере со множеством мануалов, достал свой чемодан с рассыпухой и начал потихоньку изучать как использовать atmega8a, которую я купил года два назад, и что с ней можно делать. Вообще у меня есть и stm32f103, но я ни разу не прогал для стм, а еще она у меня только одна, еще и с алика долго ждать, в отличие от трех мег, которые и дешевле и спалить одну не так страшно. А еще я поглядел код для стм32 какой-то пугающий с его бесконечными GPIO_*

В общем, у меня вопрос к местной публике, среди которых есть много программистов под микроконтроллеры и встройку: нормальная идея сначала изучить best practices для микроконтроллеров и интерфейсы на avr (в моем случае atmega8), а потом просто перейти на стм?

Мотивация сначала писать avr у меня есть потому что, субъективно, avr легче в изучении, соответственно я больше могу сфокусироваться (надеюсь) на изучаемом интерфейсе, а еще я не нашел как мне можно тестировать код под stm32 без железки (буду рад ссылкам на гайды), как можно c тем же simavr или с верилогом через icarus verilog.

Там многие и делали. Сначала AVR, которая прошивалась через LPT, затем остальное. Хватит чтобы понять общие принципы как работать с железом на низком уровне. Затем захочется большей частоты, много памяти и модной периферии…

P.S. STM != STM32. Бывает еще STM8.

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

STM != STM32. Бывает еще STM8.

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

snake266 ★★
() автор топика

тестировать код под stm32 без железки

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

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

Проблема в том, что железо не всегда под рукой, поэтому хочется иметь возможность написать тестбенч, чтобы посмотреть, правильно ли работает код. Я в прошлом семестре писал лабы на верилоге под altera de1 и еще какой-то стенд, и проверить дома код на icarus verilog было очень удобно. С этого времени, мне кажется, что тестировать код сначала у себя на компе это норма, ведь это удобно: в gtkwave посмотреть временные диаграммы всех переменных всех модулей.

snake266 ★★
() автор топика

чтоб деньги за это получать, и положил глаз на программирование микроконтроллеров

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

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

это норма, ведь это удобно

Под stm32 это далеко не так радужно.

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

Ну я глянул на hh вакансии и зп, которые там были, меня на данный момент устраивают. А так, по близости к железкам, меня всегда нравилась работа, близкая к «железу»: пайка, разводка плат, схемотехника, микроконтроллеры – поэтому я и ищу то, что мне нравится и буду получать за это деньги.

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

Хотя мя не вполне понимаю, что там учить - ядро AVR примитивное, вся квантовая запутанность в периферии. Если уже знаешь, как работают прерывания и всякое такое, поигрался с портами, таймерами и регистрами и не намерен всерьёз лезть в ассемблер - база для входа в STM у тебя уже есть, смысл сидеть на старье.

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

Ну раз под stm32 это не так радужно, то куплю потом discovery board, они там по моему и правда небольшие.

P.S. А есть для stm32 discovery boards с уже распаянными кнопками, свитчами, дисплеями и тд? Типа той же altera de1, не так «жирно», чтоб не было так дорого, но хотя бы примерно такое же. Просто я нашел такое, но я и думал найти что-то типа: воткнул только питание, и уже смотришь как оно реагирует на периферию и как оно с ней взаимодействует.

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

Вообще, нет, первый программатор STM тоже лапками делал, хоть и по готовой трассировке с интернетов. Скорее, уходит время, когда мейнстримовые инструменты нельзя было купить на али за две копейки.

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

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

Да, так правильнее сказать.

James_Holden ★★★
()

тут как всегда «програмирование <не равно> языкознание» :)
так и с контроллерами, познав суть работы с микроконтроллером, ты быстро поймешь любое железное исполнение.
не поймешь, так и будешь всю жизнь с программным уартом жить :)

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

Ну не, AVR можно ногами за вечер запинать, там всё в один шаг делается, а с STM32 без копрокуба такое не прокатит, одно только тактирование по даташиту без прдсказок включать офигеешь.

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

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

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

Кстати да, что там с кубом под линуксом? У меня почему-то было ощущение, что его нет под линем, но сейчас глянул на сайте – можно скачать, правда предлагает зарегистрироваться.

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

дык, «ассемблер - самый простой язык в нем всего ~50 команд» :)
%ТС% тут на FPGA замахнулся, а ты про такую мелочь, как несколько страниц описания работы одного аппаратного модуля :)

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

всё збс, не считая очень мелкого шрифта в некоторых окнах под 4к

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

там по дефолту шины не сконфигурированы, и GPIO работать не будет. Просто, ну, у AVR в этом плане всё просто - включаешь штуку, и она либо работает, либо не работает, довольно мало зависящих друг от друга подсистем. А в случае с STM ты из коробки имеешь мёртвый камень, который даже лампочкой дебажить нельзя, пока минимальной инициализации нет. Не то чтобы большая проблема, но я не сразу раскурил.

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

Да, но я честно хз, как новичок сможет с его помощью понять, почему не моргает.

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

ну в AVR тоже как минимум порты надо сконфигурить прежде чем можно будет поморгать…

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

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

там все просто пока пишешь, потому что архитектура у них миленько-примитивная. но при попытке что-то отладить — удачно тебе пожрать говна с Microchip'овским компилятором. AVR хоть можно нормальными тулзами компилить.

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

Кстати о птичках: AVRы это нынче уже тоже Microchip. Нынешний Microchip очень уж склонен к проприерастии, так что, боюсь, это аргумент contra в отношении AVRов.

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

ТС не технологию на всю жизнь выбирает же, пока еще AVR не требует MPLAB – ему и норм, а потом STM, там свои способы отстрелить себе яйца

fegipat
()

Начинай с изучения архитектуры и ассемблера конкретного МК. Это вообще не сложно. Через месяц заткнёшь любого местного кукаретика.

И поменьше слушай неосиляторов, которые ни разу не соизволили открыть документацию и программируют пальцем в небо. Они в красках тебе расскажут как всё сложно, как им тяжело, про безоговорочную необходимость копрокубов и их подсказок, про неработающие GPIO и про мёртвые камни — чушь собачья! Показать тебе полный исходник хеллоуворлда для Blue Pill на асме? stm32 мигаем светодиодом (комментарий) А теперь спроси полный исходник, со всеми инклудами, хедерами и зависимостями у кукоретика с его калокубом. Он ещё и не заработает, так как неосилятор понятия не имеет как устроен МК и что именно он программирует.

anonymous
()
Ответ на: комментарий от izzholtik

смысл сидеть на старье.

пфф. Дешево, сердито, понятно, и будет всегда. Мейку вон сорок лет, а я все им собираю…

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

микрочиповцы те ще тридварасы.
помнится программист матерился. он неделю ковырял ДМА-канал в каком-то пике, а потом оказалось что дма-модуля в железе нет.
в документации есть, в железе нет. и тех.поддержка очень аккуратно на это намекает, но в прямую не говорит…

pfg ★★★★★
()

нормальная идея сначала изучить best practices для микроконтроллеров и интерфейсы на avr (в моем случае atmega8), а потом просто перейти на стм?

Просто программируйте на всем чем можно - пригодится. Все равно жизнь в лице работодателей переучит по своему. Ну или вы работодателей.

vaddd ★☆
()

а еще я не нашел как мне можно тестировать код под stm32 без железки

Зачем? Blue pill или black pill стоят наверное до 5 баксов. Чуть дороже discovery

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

Стоили, до известных событий. Теперь даже за китайские клоны STM32 просят каких-то нездоровых денег.

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

Изначально STM32 не в Китае разве делается? Я просто Али смотрю.

Сам покупаю в Европе в локальном интернет магазине, потому что присыслают за пару дней, а стоит все равно несколько евро

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

О, не знал что они европейцы и производят в Европе.

Но это сам STM. Который делает Nucleo, Discovery.

Как я понимаю Blue Pill, Black Pill - китайские штуки

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от anonymous

А вы успели с Mplab-ом поработать, который без Х? Вот где была проприетарная вещь в себе! Сейчас еще нормально. Ну а вообще под микроконтроллеры/DSP обычно пишут на проприетарных решениях.

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

STM — изначально французы. Производство чипов есть и в Китае (код CHN в маркировке). Но впоследствии появилась масса клонов семейства STM32, начиная с очень хороших GD32/CS32 (исправлена errata, больше sram, выше частоты ядра), и заканчивая непонятно чем с явно поддельной маркировкой (такое в том числе по ссылке в заглавном посте). Что там окажется — каждый раз сюрприз.

Как правило, хорошие клоны полностью совместимы по командам, но могут быть отличия в таймингах (GD32, например, тратят меньше тактов на доступ к sram). И само-собой, может отличаться chip_id, что вызывает затуп при прошивке официальными тулзами (но если разобраться, всё допиливается и шьётся).

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

Производство чипов есть и в Китае (код CHN в маркировке)

Было. Если википедия дает точные данные, то на данный момент фабрику в Китае закрыли.

Я буквально на этой неделе начал интересоваться embedded, вот думаю начать с Black pill (STM32F401CCU6).

Хочу порисовать что-то на цветном 128x128 SSD1351 SPI дисплее, но пока что для меня все это очень новая штука.

В будущем попытаюсь может подключить какой-то, пока не знаю какой. Вроде всякие ESP8266 выглядят неплохо. Запилю себе настольные часы с всякими виджетами с инфой с интернета, котировочки, погода, такое

Вроде https://github.com/TeXitoi/rusty-clock, но вместо сенсоров и меряния температуры в комнате - инфа будет с онлайн сервисов

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.