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

STM32L100RBT верхний адрес RAM

Глупый вопрос:
Где в документации STM указан верхний адрес доступной памяти ?
Карту памяти вижу, RAM начитается с 0x20000000
Размер "10КВ"  вижу.

А сам-то верхний адрес, в явном виде, без округления до "10КВ"  где ?

Заранее спасибо за подсказку !

1.jpg

2.jpg

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


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

ST любят делать шаблонную документацию на серию - поэтому указывают начало и размер.

В L100 все просто, а в других случаях нужно читать не только DS, но и RM (матрица шин, ремап, защита и т.п.) - т.к. SRAM бывает разная.

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


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

On 6/11/2022 at 9:15 PM, adnega said:

ST любят делать шаблонную документацию на серию - поэтому указывают начало и размер.

В L100 все просто, а в других случаях нужно читать не только DS, но и RM (матрица шин, ремап, защита и т.п.) - т.к. SRAM бывает разная.

А резмер-то где указан ?
"10KB"  это 0х2710  или 0x2709 ? или ещё сколько-то ?

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


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

Я всегда использую 10 * 1024 = 10240 байт = 0x2800.

В верхних адресах обычно стек. Адрес вершины нужно передать в первом слове прошивки - там должно быть 0x2000_2800.

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


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

On 6/11/2022 at 9:28 PM, adnega said:

Я всегда использую 10 * 1024 = 10240 байт = 0x2800.

Делал так же.
Но вот сейчас какой-то непонятный глюк при обращении к верхним адресам.
Поэтому, хочу узнать из документации в явном виде, какой именно адрес считается границей сверху.

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


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

У меня с некратным объемом есть 6-килоБайтные - все норм.

А в чем глюк? В скрипте линкера нет ошибки?

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


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

On 6/12/2022 at 1:56 AM, Arlleex said:

10кБ это 10240 байт. В документации не найдете, просто верьте на слово:biggrin:

Более того, если взять линковачный скрипт из того же кубика под выбранный МК, то там обычно так же тупо объём и ставится:

// STM32F407VG
/* Specify the memory areas */
MEMORY
{
  FLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 1024K
  RAM (xrw)       : ORIGIN = 0x20000000, LENGTH = 128K
  CCMRAM (xrw)    : ORIGIN = 0x10000000, LENGTH = 64K
  MEMORY_B1 (rx)  : ORIGIN = 0x60000000, LENGTH = 0K
}
	

И его нужно править, если ты часть памяти отдал под бутлодырь.

Изменено пользователем HardWareMan

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


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

Спасибо всем ответившим !
И, посмотрите.


Процессор  STM32L100RBT6
RAM  10КБ =  0x2800


Забиваю память значением 0xAA.
И, выше адреса 0x2573  оно почему-то не пишется!
Более того, если взять  значение  не 0xAA,  а 0x0, программа попадает в HardFault при записи выше 0x2573.
Чем это можно объяснить ?


 

3.jpg

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


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

Слишком вы дерзко на стек налезаете...

У вас в верхних адресах стек и писать туда так просто данные нельзя - это служебная память + там и куча может находиться.

Можно в startup-файле залить стек/ОЗУ каким-нить шаблоном, но просто сам факт, что стек настроен на 0x2000_2800,

и функции в программе вызываются корректно, доказывает, что эта память рабочая.

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


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

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

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

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

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

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

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

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

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

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