реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Запись во Flash STM32
Nosaer
сообщение Aug 21 2017, 09:04
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Добрый день
Пытаюсь записывать свои данные во 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();

Пробовал менять адрес для записи, на разные области памяти. Ситуация вообще не меняется
Собственно ругается на строки, где я передаю адрес для записи(стирания)
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Aug 21 2017, 11:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



На сайте keil или интернете читали об ошибке?
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Aug 21 2017, 12:03
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Читал. Если я правильно понял, то ошибка обычно возникает когда значение IRAM меньше, чем на самом деле память у контроллера.
В своем случае с 0x1000 поднимал до 0x5000 на вскидку, пробовал подставить адрес из нового диапазона. Ошибки все те же.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Aug 21 2017, 15:51
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(Nosaer @ Aug 21 2017, 19:03) *
Читал. Если я правильно понял, то ошибка обычно возникает когда значение IRAM меньше, чем на самом деле память у контроллера.
В своем случае с 0x1000 поднимал до 0x5000 на вскидку, пробовал подставить адрес из нового диапазона. Ошибки все те же.

Вы же пишите во флэш, причем здесь ОЗУ?
И как можно навскидку поднимать IRAM, вдруг по этим адресам её нет, у вас точно в чипе есть 20 Кбайт? sm.gif
Видимо 0x08010000 вылетает за размер флэша прописаного в проекте, у вас в чипе точно больше 32 КБайт?
Для уточнения смотрите в референс мануал, раздел "Memory map and register boundary addresses".
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Aug 22 2017, 03:11
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



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

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
amiller
сообщение Aug 22 2017, 04:39
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(Nosaer @ Aug 22 2017, 07:11) *
В плане адреса, согласно мануалу он существует. К тому же я практически методом перебора уже перепробовал всевозможные адреса

Прикрепленное изображение

Простите, а где Вы это увидели?
На приведенной картинке видно, что flash расположена 0x08000000 - 0x08007FFF.
А Вы обращаетесь по адресу 0x08010000, что за пределами.
Может проблема в подсчёте ноликов?
Go to the top of the page
 
+Quote Post
Nosaer
сообщение Aug 22 2017, 06:16
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Код скопировал скорее всего когда пробовал методом перебора добиться отсутствия ошибки, извиняюсь, не доглядел. В основном пытаюсь писать во флеш по даташиту. И как уже писал выше, куда только пробовал не писать.
Сейчас заметил, что при включении оптимизации(а она у меня отключена), компилируется без ошибок. Но в память все равно не пишет.
Go to the top of the page
 
+Quote Post
sadat
сообщение Aug 22 2017, 08:18
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575



Берём нормально работающий пример из библиотек, проверяем, что работает, а тогда только что-то правим.
Ведь, когда у большинства всё работает : стирается и пишется, то, очевидно, что что-то не так с руками, а не глюк процессора.
И, если бы каждый из нас создавал по этому поводу тему - сотни страниц гарантированы.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016