STM32. Ядро Cortex-M0.
Вставка
- Опубліковано 23 лют 2019
- Лектор - Казиахмедов Эдгар.
Сообщество проекта: drec_courses
Репозиторий с материалами курса: github.com/edosedgar/stm32f0_ARM
Приняли участие в создании:
- Филипп Микоян philalala
- Владислав Молодцов molvlad
- Прутьянов Виктор vprutyanov
Снято на базе студии Физтех-Live при поддержке Фонда Целевого Капитала МФТИ. - Наука та технологія
Бомба, наконец-то..., а то у всех в уроках для "начинающих", используются термины для не "начинающих" и ни чего не понятно. А у Вас, нормальным языком, описывается базовые знания и все проясняется. Спасибо!!!
Молодец! Все очень доступно, понятно и отлично оформлено! Меньше волнуйтесь! Вы молодец
Небольшое исправление про конфигурационные биты BOOT0 & nBOOT1.
Состояние пина и конф. регистров при запуске позволяет нам выбрать 3 области, из которых начинается исполнение:
1) Flash память
2) Оперативная память
3) Системная память с бутлоадером
Более подробную информацию по данной теме можно найти в статье, приложенной к лекции на Вики курса.
Эдгар, а как можно загружаться из оперативной памяти, когда при выключении питания информация с нее пропадает, а при включении она пуста?
Системная память с бутлоадером - это ведь та же флеш-память из первого пункта, но по более высокому адресу.
@@user-zi1hf6xn2w про бутлоадер все верно, но скорее это read-only memory, ну т.е. без возможности перезаписи.
Про оперативную память всегда возможен сценарий, что происходит soft/hard reset, после которого начнется выполнение кода из оперативной памяти. Конечно, это будет умышленная операция, например, для запуска кода с носителя.
Большое вам спасибище за труд. Отличный получается курс!
Я запутался в моменте объяснения процесса запуска программы при старте МК. Если выбран режим запуска из Flash, то откуда начинается работа программы, что имеется в виду под "отображением" адреса, откуда куда, и для кого он отображается? Ибо в других статьях речь идёт о том, что начинается всё с адреса 0x0.
Спасибо занимательный материал
Не получается повторить урок из вики "Booting with gdb". Ubuntu 20.04. После "make gdb-st-util" микроконтроллер не уходит в halt, а сразу запускается и первая инструкция si уже оказывается while(1). Вручную (arm-none-eabi-gdb -> tar extended-remote :4242 -> load xxxx.elf) естественно тоже самое. Соответственно непонятно как пошагово посмотреть "после reset, но перед main" все регистры, которые указаны в уроке. При попытке установить brakepoint на первой инструкции вектора сброса (ldr r0, [pc, #52]) и перезапуска командой "run", arm-none-eabi-gdb вылетает с ошибкой.
upd. Получилось сделав так. После "make gdb-st-util" устанавливаем brakepoint на (ldr r0, [pc, #52]), запускаем выполнение "continue" (на самом деле выполнение уже идет и этой командой мы "запускаем/синхронизируем st-link на отладку"), нажимаем RESET на отладочной плате. После этого можно пройтись si по программе до main.
в предложенном к лекции задании, изложена возможность использования стороннего адаптера и stm32flash для загрузки и чтения бинарников. Можете подсказать, как мне определить нужный порт на MacOS Mojave когда прописываю sudo stm32flash /dev/tty??? А то собственные попытки привели меня только к Error probing interface "serial_posix"
Добавил в статью про альтернативный способ прошивки решение данной проблемы
А что делать если после main вызвалось последовательно N функций.
Куда укладывать адрес возврата если lr регистр только один?
Отличная лекция
А на полевых транзисторах можно собрать кортекс м0?
Спасибо
"Залили код." сразу понятно что это не профессионал.
Раскройте профессиональную тайну, скажите как говорят профессионалы. Пожалуйста.
Я пытался читать википедию, там написано следующее: "The Cortex-M0 core is optimized for small silicon die size and use in the lowest price chips." Я не понял почему маленький силикон умер. И непонятно, связано это с размером чипсов или нет.
Куча для аллоцирования, микроконтроллер для контролирования
слабенько, мальчик...