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

Запись во Flash STM32

Добрый день

Пытаюсь записывать свои данные во Flash на STM32f0xx, при компиляции выдает кучу ошибок по типу:

 

ANV_AMP_MTR\ANV_AMP_MTR.axf: Error: L6407E: Sections of aggregate size 0x40 bytes could not fit into .ANY selector(s).

ANV_AMP_MTR\ANV_AMP_MTR.axf: Error: L6406E: No space in execution regions with .ANY selector matching iusefp.o(.text).

 

    HAL_FLASH_Unlock();
        
        FLASH_EraseInitTypeDef EraseInitStruct;
        EraseInitStruct.PageAddress = 0x08004000;
        EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
        EraseInitStruct.NbPages = 1;
        uint32_t SectorError = 0;

        if (HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError) != HAL_OK) 
            {     
                    HAL_FLASH_Lock();
            }

        HAL_FLASH_Unlock();
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08010000, AHReady);
        HAL_FLASH_Lock();

Пробовал менять адрес для записи, на разные области памяти. Ситуация вообще не меняется

Собственно ругается на строки, где я передаю адрес для записи(стирания)

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


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

Читал. Если я правильно понял, то ошибка обычно возникает когда значение IRAM меньше, чем на самом деле память у контроллера.

В своем случае с 0x1000 поднимал до 0x5000 на вскидку, пробовал подставить адрес из нового диапазона. Ошибки все те же.

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


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

Читал. Если я правильно понял, то ошибка обычно возникает когда значение IRAM меньше, чем на самом деле память у контроллера.

В своем случае с 0x1000 поднимал до 0x5000 на вскидку, пробовал подставить адрес из нового диапазона. Ошибки все те же.

Вы же пишите во флэш, причем здесь ОЗУ?

И как можно навскидку поднимать IRAM, вдруг по этим адресам её нет, у вас точно в чипе есть 20 Кбайт? :)

Видимо 0x08010000 вылетает за размер флэша прописаного в проекте, у вас в чипе точно больше 32 КБайт?

Для уточнения смотрите в референс мануал, раздел "Memory map and register boundary addresses".

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


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

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

post-84967-1503371414_thumb.jpg

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


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

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

post-84967-1503371414_thumb.jpg

Простите, а где Вы это увидели?

На приведенной картинке видно, что flash расположена 0x08000000 - 0x08007FFF.

А Вы обращаетесь по адресу 0x08010000, что за пределами.

Может проблема в подсчёте ноликов?

 

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


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

Код скопировал скорее всего когда пробовал методом перебора добиться отсутствия ошибки, извиняюсь, не доглядел. В основном пытаюсь писать во флеш по даташиту. И как уже писал выше, куда только пробовал не писать.

Сейчас заметил, что при включении оптимизации(а она у меня отключена), компилируется без ошибок. Но в память все равно не пишет.

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


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

Берём нормально работающий пример из библиотек, проверяем, что работает, а тогда только что-то правим.

Ведь, когда у большинства всё работает : стирается и пишется, то, очевидно, что что-то не так с руками, а не глюк процессора.

И, если бы каждый из нас создавал по этому поводу тему - сотни страниц гарантированы.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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