Перейти к содержанию
    

Связь значения VTOR и адреса размещения таблицы векторов в Cortex-M3

18 минут назад, misyachniy сказал:

Ага, а теперь поставьте 1 в 29 бит и посмотрите результирущий адрес. Ничего не напоминает?

 

P.S. Ваша цитата есть лишь пережеванное и упрощенное описание битовых полей VTOR.

Абсолютно закономерно, что адреса Flash 0x00000000-0x1FFFFFFF будут иметь 0 в 29 бите.

Абсолютно закономерно, что адреса RAM 0x20000000-0x3FFFFFFFF будут иметь 1 в 29 бите.

 

6 минут назад, misyachniy сказал:

Ну так где хоть слово о том, что начальное значение SP это начало Flash?

То, что начальное значение SP лежит по нулевому слову таблицы векторов я прекрасно знаю.

Вы же утверждали, что именно Flash:wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, AHTOXA said:

(Architecture Reference Manual в данном случае).

Получается, что документация на микроконтроллер включает в себя (по порядку):

1. Architecture Reference Manual на архитектуру, например ARMv6-M.

2. Technical Reference Manual на процессор, например Cortex-M0.

3. Cortex-Mx Devices. Generic User Guide.

4. Reference Manual, Datasheet, Programming manual и проч. на сам микроконтроллер.

5. Плюсом различные Application Notes на данный микроконтроллер.

п.п. 1 - 3 от разработчиков архитектуры и ядра, остальные - от разработчика микроконтроллера.

Ничего не пропустил?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 минут назад, haker_fox сказал:

Получается, что документация на микроконтроллер включает в себя (по порядку):

...

Ничего не пропустил?)

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

Но в целом, да, в 99,9% случаев это набор на все случае жизни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати. Посмотрел в RM на первый попавшийся STM32 (STM32F205), там в разделе про режимы загрузки написано

Цитата

2.4 Boot configuration

Due to its fixed memory map, the code area starts from address 0x0000 0000 (accessed through the ICode/DCode buses) while the data area (SRAM) starts from address 0x2000 0000 (accessed through the system bus). The Cortex®-M3 CPU always fetches the reset vector on the ICode bus, which implies to have the boot space available only in the code area (typically, Flash memory). STM32F20x and STM32F21x microcontrollers implement a special mechanism to be able to boot from other memories (like the internal SRAM).

...

Note: When the device boots from SRAM, in the application initialization code, you have to relocate the vector table in SRAM using the NVIC exception table and the offset register.

 

А с фига ли? Знает кто-нибудь?

Зачем при загрузке из SRAM мне указывать в VTOR положение векторов?

При выборе режима загрузки из SRAM на нулевые адреса итак ляжет начало SRAM.

Соответственно, таблица векторов будет рассматриваться, как находящаяся по 0x20000000.

Как туда поместить реальные адреса обработчиков - вопрос другой.

Почему ST пишут, что нужно явно переназначить VTOR (полагаю, адресом 0x20000000)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, haker_fox said:

Получается, что документация на микроконтроллер включает в себя...

Конкретно на Cortex-M3 надо ввести ещё Cortex-M3 Devices Generic User Guide . Это будет где-то между п. 2 и 3. П. 1-3 - от разработчика архитектуры и ядра - ARM. П. 3-4 от разработчика микроконтроллера - STM, NXP, Renesas и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Darth Vader said:

п. 2 и 3. П. 1-3 - от разработчика архитектуры и ядра -

Исправил список. Оказывается на M0 он тоже есть. Всегда мечтал подготовить такой список. Помню, как было на первых порах самому разольраться в этом ворохе документов. После AVR и PIC))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, Arlleex сказал:

P.S. Ваша цитата есть лишь пережеванное и упрощенное описание битовых полей VTOR.

Абсолютно закономерно, что адреса Flash 0x00000000-0x1FFFFFFF будут иметь 0 в 29 бите.

Абсолютно закономерно, что адреса RAM 0x20000000-0x3FFFFFFFF будут иметь 1 в 29 бите.

Интересно, а адрес 0x1FFE8000 в Cortex-M4F - это что по Вашему получается там находится? Флешь или ОЗУ?  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, jcxz сказал:

Интересно, а адрес 0x1FFE8000 в Cortex-M4F - это что по Вашему получается там находится? Флешь или ОЗУ?  :wink:

Ну, вообще говоря, хз. Это область кода, судя по первоисточникам. А че там физически, зависит уже от производителя МК. Если Вы про XMC4, то там да, будет лежать PSRAM.

Я сначала думал, что будет проще для понимания, если я Code обзову как область хранения кода (в большинстве случаев это все-таки Flash). Но опрометчиво:smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...