Jump to content

    

Микроконтроллеры

Здравствуйте. Занимаюсь программированием микроконтроллеров некоторое время, имея знания достаточные для создания работающего кода, использования дебага и процесса прошивки микроконтроллера. Возникло желание глубже разобраться в устройстве микроконтроллера - узнать как работает bootloader, как устроена память в микроконтроллере. Некоторый минимум информации помню с университета (архитектура фон Неймана, Гарвардская, более-менее представляю как работают команды ассемблера). Хочу разобраться с микроконтроллерами серии STM32. Семейство любое, потому что подозреваю, что загрузчик устроен на всех одинаково. Мне нужны источники информации, где я могу почитать про загрузку микроконтроллера (например, я нашел вот это, но прочтение понимания мне не добавило). Спасибо!

Share this post


Link to post
Share on other sites

А что именно непонятно? Если речь про МК на Cortex-M то стартуют они так: По сигналу RESET все регистры МК переводятся в исходное (RESET) состояние, далее - делается выборка из RESET-вектора таблицы прерываний адреса верхушки стека и стартового адреса исполняемого кода, происходит переход на исполняемый код. Всё.

Если в RESET-векторе находится стартовый адрес бутлоадера, то переход произойдёт на него.

Share this post


Link to post
Share on other sites
8 minutes ago, jcxz said:

А что именно непонятно? Если речь про МК на Cortex-M то стартуют они так: По сигналу RESET все регистры МК переводятся в исходное (RESET) состояние, далее - делается выборка из RESET-вектора таблицы прерываний адреса верхушки стека и стартового адреса исполняемого кода, происходит переход на исполняемый код. Всё.

Если в RESET-векторе находится стартовый адрес бутлоадера, то переход произойдёт на него.

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

Share this post


Link to post
Share on other sites

Для 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).

Share this post


Link to post
Share on other sites
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 от простого включения мк при подаче питания?

Share this post


Link to post
Share on other sites
2 hours ago, ZeratulSC007 said:

я нашел вот это, но прочтение понимания мне не добавило

Эт потому что вы нашли только начало описания встроенных бутлодеров. 
А дальше еще надо найти талмуды с описанием их API.
Но полное  и исчерпывающее описание бутлодеров из ROM вам никто не даст. 

Поэтому как  правило этими  бутолодерами не пользуются. Делают свои. 

Share this post


Link to post
Share on other sites
21 minutes ago, AlexandrY said:

Эт потому что вы нашли только начало описания встроенных бутлодеров. 
А дальше еще надо найти талмуды с описанием их API.
Но полное  и исчерпывающее описание бутлодеров из ROM вам никто не даст. 

Поэтому как  правило этими  бутолодерами не пользуются. Делают свои. 

А можно в двух словах, почему свои? Я, в силу недостаточности опыта, никогда не делал.

Share this post


Link to post
Share on other sites
1 час назад, ZeratulSC007 сказал:

А можно в двух словах, почему свои? Я, в силу недостаточности опыта, никогда не делал.

Потому что не всегда удобны и не всегда подходят под конкретную задачу.

А еще, например, потому, что прошивку коммерческого девайся нужно, по-хорошему, вовсе шифровать.

Причин тьма. А заводской загрузчик, если он есть, удобно использовать для первоначальной прошивки своего загрузчика:spiteful:

Share this post


Link to post
Share on other sites
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-кодом (глобальные объекты).

Share this post


Link to post
Share on other sites
1 час назад, haker_fox сказал:

Почитайте книги Джозефа Ю...

Отмечу лишь весьма "странную" новость, в Терраэлектронике эту книгу можно купить сейчас по цене коробки спичек.

Share this post


Link to post
Share on other sites
10 минут назад, Arlleex сказал:

Отмечу лишь весьма "странную" новость, в Терраэлектронике эту книгу можно купить сейчас по цене коробки спичек.

По моему, это первая книга, которую написал Ю по Cortex. Морально устарела, вот так-то. 

Share this post


Link to post
Share on other sites
6 минут назад, ViKo сказал:

По моему, это первая книга, которую написал Ю по Cortex. Морально устарела, вот так-то. 

Вот только годной инфы в ней больше, чем на 99% всех русскоязычных порталах, посвященных STM32 и Cortex-Mx в целом.

Share this post


Link to post
Share on other sites
9 hours ago, Arlleex said:

Отмечу лишь весьма "странную"

Действительно, странно. Скорее всего, опечатка в цене.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now