Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Хранение данных в Flash-памяти
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Vadim.Dyachuk
Доброго времени суток!

Меня интересует такой вопрос: "Можно ли хранить в Flash-памяти большой объём информации (к примеру 8 кб) который не будет стерт при перезагрузке МК, если можно то как его туда записать ?"
Использую IAR EW, МК XMEGA 32A4.

Заранее спасибо!
ILYAUL
Можно. Вы же написали boot , всё тоже самое
Vadim.Dyachuk
Дело в том что boot секция занята bootloader'ом и мне не хватило бы этой памяти. И что значит
Цитата
всё тоже самое
?
Я хочу разместить по заданному адресу в Flash-памяти с помощью BootLoader'а данные , которые можно будет использовать после перезагрузки МК. Но это нужно сделать так что бы основная программа этих данных не видела и по этому не могла их изменить или стареть.
zombi
Цитата(Vadim.Dyachuk @ Oct 21 2013, 16:24) *
Но это нужно сделать так что бы основная программа этих данных не видела и по этому не могла их изменить или стареть.

Видеть будет, а изменить не сможет.
Vadim.Dyachuk
Цитата(zombi @ Oct 21 2013, 16:34) *
Видеть будет, а изменить не сможет.

А как это можно реализовать?
zombi
Цитата(Vadim.Dyachuk @ Oct 21 2013, 16:49) *
А как это можно реализовать?

Странный вопрос для автора USART-bootloaderа
Vadim.Dyachuk
То есть если просто зашить программу по заданному адресу (примерно в середину Appliction section) и при этом по нулевому адресу (в начале Appliction section) будит находится еще и главная программа - то при роботе главной программы, программа что находится в середине памяти не будет реагировать на прерывания и т.п.. Я правильно понял?
ILYAUL
Правильно , пока вы ей не передадите управление
Vadim.Dyachuk
Спасибо за помощь!
Но есть еще один вопрос: "Можно ли сделать все тоже самое только если вместо bootloader'а использовать программу не в Boot-секции, а в Application-секции?"
ILYAUL
Обычно boot секция органично расположена в программной памяти и если она не нужна тои .. с ней
Vadim.Dyachuk
Просто, насколько я знаю в МК с поддержкой Boot-секции на команду SPM накладываются ограничения - её можно выполнить только из BLS (Bootloader section). Есть ли способ записывать в флэш-память данные не используя команды SPM?
ILYAUL
Всё таки интересно как Вы написали Boot loader
This instruction can address the entire program memory. А в вoot она не пишет ,что бы не затереть саму себя
Vadim.Dyachuk
Как я понял, прямо Вы мне не ответите?
ILYAUL
Description:
SPM can be used to erase a page in the program memory, to write a page in the program memory (that is already erased), and to set boot loader lock bits. In some devices, the program memory can be written one word at a time, in other devices an entire page can be programmed simultaneously after first filling a temporary page buffer. In all cases, the program memory must be erased one page at a time. When erasing the program memory, the RAMPZ and Z register are used as page address. When writing the program memory, the RAMPZ and Z register are used as page or word address, and the R1:R0 register pair is used as data. R1 determines the instruction high byte, and R0 determines the instruction low byte... When setting the boot loader lock bits, the R1:R0 register pair is used as data. Refer to the device documentation for detailed description of SPM usage. This instruction can address the entire program memory.

А для xmeg to` более конкретно

The SPM instruction can access the entire flash, including the boot loader section itself. The protection level for the boot loader
section can be selected by the boot loader lock bits. If this section is not used for boot loader software, application code
can be stored here.
Vadim.Dyachuk
Спасибо за помощ!
sKWO
Цитата(Vadim.Dyachuk @ Oct 21 2013, 16:55) *
Меня интересует такой вопрос: "Можно ли хранить в Flash-памяти большой объём информации (к примеру 8 кб) который не будет стерт при перезагрузке МК, если можно то как его туда записать ?"
Использую IAR EW, МК XMEGA 32A4.

static __flash UINT8 No_ErazeData[] =
{
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
................................................
...................................................
};
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.