Бомба, наконец-то..., а то у всех в уроках для "начинающих", используются термины для не "начинающих" и ни чего не понятно. А у Вас, нормальным языком, описывается базовые знания и все проясняется. Спасибо!!!
Небольшое исправление про конфигурационные биты BOOT0 & nBOOT1. Состояние пина и конф. регистров при запуске позволяет нам выбрать 3 области, из которых начинается исполнение: 1) Flash память 2) Оперативная память 3) Системная память с бутлоадером Более подробную информацию по данной теме можно найти в статье, приложенной к лекции на Вики курса.
Эдгар, а как можно загружаться из оперативной памяти, когда при выключении питания информация с нее пропадает, а при включении она пуста? Системная память с бутлоадером - это ведь та же флеш-память из первого пункта, но по более высокому адресу.
@@АндрейИ-ф3л про бутлоадер все верно, но скорее это 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"
Я пытался читать википедию, там написано следующее: "The Cortex-M0 core is optimized for small silicon die size and use in the lowest price chips." Я не понял почему маленький силикон умер. И непонятно, связано это с размером чипсов или нет.
Бомба, наконец-то..., а то у всех в уроках для "начинающих", используются термины для не "начинающих" и ни чего не понятно. А у Вас, нормальным языком, описывается базовые знания и все проясняется. Спасибо!!!
Небольшое исправление про конфигурационные биты BOOT0 & nBOOT1.
Состояние пина и конф. регистров при запуске позволяет нам выбрать 3 области, из которых начинается исполнение:
1) Flash память
2) Оперативная память
3) Системная память с бутлоадером
Более подробную информацию по данной теме можно найти в статье, приложенной к лекции на Вики курса.
Эдгар, а как можно загружаться из оперативной памяти, когда при выключении питания информация с нее пропадает, а при включении она пуста?
Системная память с бутлоадером - это ведь та же флеш-память из первого пункта, но по более высокому адресу.
@@АндрейИ-ф3л про бутлоадер все верно, но скорее это 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.
Спасибо занимательный материал
А что делать если после main вызвалось последовательно N функций.
Куда укладывать адрес возврата если lr регистр только один?
Отличная лекция
в предложенном к лекции задании, изложена возможность использования стороннего адаптера и stm32flash для загрузки и чтения бинарников. Можете подсказать, как мне определить нужный порт на MacOS Mojave когда прописываю sudo stm32flash /dev/tty??? А то собственные попытки привели меня только к Error probing interface "serial_posix"
Добавил в статью про альтернативный способ прошивки решение данной проблемы
А на полевых транзисторах можно собрать кортекс м0?
Как ты собираешься это делать? Паяльником 10000+ транзисторов паять?
Спасибо
"Залили код." сразу понятно что это не профессионал.
Раскройте профессиональную тайну, скажите как говорят профессионалы. Пожалуйста.
Я пытался читать википедию, там написано следующее: "The Cortex-M0 core is optimized for small silicon die size and use in the lowest price chips." Я не понял почему маленький силикон умер. И непонятно, связано это с размером чипсов или нет.
Куча для аллоцирования, микроконтроллер для контролирования
слабенько, мальчик...