ZeratulSC007 0 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба Здравствуйте. Занимаюсь программированием микроконтроллеров некоторое время, имея знания достаточные для создания работающего кода, использования дебага и процесса прошивки микроконтроллера. Возникло желание глубже разобраться в устройстве микроконтроллера - узнать как работает bootloader, как устроена память в микроконтроллере. Некоторый минимум информации помню с университета (архитектура фон Неймана, Гарвардская, более-менее представляю как работают команды ассемблера). Хочу разобраться с микроконтроллерами серии STM32. Семейство любое, потому что подозреваю, что загрузчик устроен на всех одинаково. Мне нужны источники информации, где я могу почитать про загрузку микроконтроллера (например, я нашел вот это, но прочтение понимания мне не добавило). Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба А что именно непонятно? Если речь про МК на Cortex-M то стартуют они так: По сигналу RESET все регистры МК переводятся в исходное (RESET) состояние, далее - делается выборка из RESET-вектора таблицы прерываний адреса верхушки стека и стартового адреса исполняемого кода, происходит переход на исполняемый код. Всё. Если в RESET-векторе находится стартовый адрес бутлоадера, то переход произойдёт на него. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZeratulSC007 0 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 8 minutes ago, jcxz said: А что именно непонятно? Если речь про МК на Cortex-M то стартуют они так: По сигналу RESET все регистры МК переводятся в исходное (RESET) состояние, далее - делается выборка из RESET-вектора таблицы прерываний адреса верхушки стека и стартового адреса исполняемого кода, происходит переход на исполняемый код. Всё. Если в RESET-векторе находится стартовый адрес бутлоадера, то переход произойдёт на него. Например, каким условием делается выборка из Reset-вектора таблицы прерываний. Да и про сам старт МК почитать в документации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба Для STM32F103 читать RM0008 , раздел 7.1.1 System reset A system reset sets all registers to their reset values except the reset flags in the clock controller CSR register and the registers in the Backup domain (see Figure 4). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZeratulSC007 0 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 4 minutes ago, mcheb said: Для STM32F103 читать RM0008 , раздел 7.1.1 System reset A system reset sets all registers to their reset values except the reset flags in the clock controller CSR register and the registers in the Backup domain (see Figure 4). А отличается Reset от простого включения мк при подаче питания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба Да, отличается. see Figure 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 2 hours ago, ZeratulSC007 said: я нашел вот это, но прочтение понимания мне не добавило Эт потому что вы нашли только начало описания встроенных бутлодеров. А дальше еще надо найти талмуды с описанием их API. Но полное и исчерпывающее описание бутлодеров из ROM вам никто не даст. Поэтому как правило этими бутолодерами не пользуются. Делают свои. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZeratulSC007 0 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 21 minutes ago, AlexandrY said: Эт потому что вы нашли только начало описания встроенных бутлодеров. А дальше еще надо найти талмуды с описанием их API. Но полное и исчерпывающее описание бутлодеров из ROM вам никто не даст. Поэтому как правило этими бутолодерами не пользуются. Делают свои. А можно в двух словах, почему свои? Я, в силу недостаточности опыта, никогда не делал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 173 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 1 час назад, ZeratulSC007 сказал: А можно в двух словах, почему свои? Я, в силу недостаточности опыта, никогда не делал. Потому что не всегда удобны и не всегда подходят под конкретную задачу. А еще, например, потому, что прошивку коммерческого девайся нужно, по-хорошему, вовсе шифровать. Причин тьма. А заводской загрузчик, если он есть, удобно использовать для первоначальной прошивки своего загрузчика Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Baranov 1 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба Скачайте книжку "The Insider's Guide to The STM32 ARM Based Microcontroller" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 5 hours ago, ZeratulSC007 said: где я могу почитать про загрузку микроконтроллера Почитайте книги Джозефа Ю. Эти. Они, конечно, не очень легки в чтении, но всё же легче, чем материалы с arm.com (имхо). А самое главное - информация в книгах структурирована и подобрана по нарастающей. Выберите подходящее семейство: cortex-m0/m3/m4. Но: не думайте, что за неделю или пару вы этот материал освоите. Читать надо вдумчиво, проверяя прочитанное в симуляторе, а лучше на реальной плате через отладчик. Хотя я бы поставил реальную задачу сделать какое-либо устройство. Делая его, вы так или иначе разберётесь с микроконтроллером. Правда читать книги при этом не отменяется. А библиотеки (stm cube и подобные) использовать категорически не стоит, лучше писать все драйвера самостоятельно. Иначе цель изучения будет упущена. 5 hours ago, ZeratulSC007 said: Например, каким условием делается выборка из Reset-вектора таблицы прерываний. Считайте, что железо МК так спроектировано, что по сбросу оно в начале таблицы вычитываем значение верхушки стека, а затем - адрес перехода (на приложение, бут, куда угодно). 4 hours ago, ZeratulSC007 said: А отличается Reset от простого включения мк при подаче питания? В первом грубом приближении можете считать, что нет. Но это очень грубое приближение. Например, у вас сохранятся в ОЗУ прежнее значения в тех областях, которые не инициализируются startup-кодом (глобальные объекты). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 173 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 1 час назад, haker_fox сказал: Почитайте книги Джозефа Ю... Отмечу лишь весьма "странную" новость, в Терраэлектронике эту книгу можно купить сейчас по цене коробки спичек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 10 минут назад, Arlleex сказал: Отмечу лишь весьма "странную" новость, в Терраэлектронике эту книгу можно купить сейчас по цене коробки спичек. По моему, это первая книга, которую написал Ю по Cortex. Морально устарела, вот так-то. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 173 4 октября, 2019 Опубликовано 4 октября, 2019 · Жалоба 6 минут назад, ViKo сказал: По моему, это первая книга, которую написал Ю по Cortex. Морально устарела, вот так-то. Вот только годной инфы в ней больше, чем на 99% всех русскоязычных порталах, посвященных STM32 и Cortex-Mx в целом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 5 октября, 2019 Опубликовано 5 октября, 2019 · Жалоба 9 hours ago, Arlleex said: Отмечу лишь весьма "странную" Действительно, странно. Скорее всего, опечатка в цене. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться