Особенности Flash Memory
Использование блок флэш-памяти. Обеспечение функционирования встроенной системы в соответствии с требованиями пользователя. Распределение пространства Flash Memory. Разблокирование, стирание и запись в Flash. Сохранение данных в энергонезависимую память.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.12.2019 |
Размер файла | 593,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Внутренняя флэш-память
1.1 Общие положения
1.2 Распределение пространства Flash Memory
1.3 Как использовать блок флэш-памяти
2. Работа с flash memory. Практические примеры
2.1 Чтение из Flash
2.2 Разблокирование Flash
2.3 Стирание Flash
2.4 Запись в Flash
3. Пример чтения и записи
Введение
Во встроенных системах очень важно иметь память, которая может хранить информацию. Программы (набор инструкций) используются для обеспечения функционирования встроенной системы в соответствии с требованиями пользователя. Микроконтроллер использует флэш-память, которую можно стирать и перепрограммировать. Некоторое пространство памяти может быть перепрограммировано, а некоторое пространство памяти является фиксированным (то есть его нельзя перепрограммировать), и то, как они управляют распределением памяти, зависит от производителя микроконтроллера.
1. Внутренняя флэш-память
1.1 Общие положения
Зачастую возникает необходимость сохранять ряд данных в энергонезависимую память. Такими данными, например, могут быть настройки программы для МК. Если нет внешней памяти, то приходится использовать внутренние ресурсы МК. К сожалению, stm32f4 не имеет в своём составе памяти EEPROM, позволяющей писать побайтно, как в ОЗУ. Потому приходится использовать Flash. Тот самый, в который пишется и сама программа. Потому работа с этой памятью требует особой осторожности. Если её не соблюдать, то вы можете легко затереть часть (а то и всю) вашей программы и устройство перестанет работать.
Чтобы этого не произошло, в микроконтроллере stm32f4 предусмотрена защита. Для доступа к записи в эту память необходимо ввести 8-мибайтный код. Если код введён не верно, доступ к flash можно будет открыть только после сброса питания с МК.
1.2 Распределение пространства Flash Memory
Распределение внутренней флэш-памяти STM32F407 происходит следующим образом.
· Основная память разделена на 11 секторов. Первые четыре сектора (0-3) имеют размер 16 КБ, следующий сектор имеет размер 64 КБ, а остальные 5 секторов имеют размер 128 КБ каждый;
· Системная память является загрузчиком;
· 512 КБ памяти - это память с однократной записью, используемая для общих целей. Еще 16 байтов используются для блокировки данных;
· Дополнительные байты используются для настройки защиты от чтения записи, сброса Брауна (для обнаружения источника питания), аппаратного / программного контроля и т. д.
Библиотека Waijung имеет набор блоков для использования блока внутренней флэш-памяти с возможностью очистки, чтения и записи данных. Использование ограничено от сектора 5 до 11.
STM32F4DISCOVERY оснащен 1 МБ флэш-памяти микроконтроллера STM32F407VGT6. Флэш-память микроконтроллера была разделена на сектора, и каждый сектор имеет свои начальный и конечный адреса. Некоторые сектора маленькие, а некоторые большие.
Распределение пространства флэш-памяти показано на рисунке 1.1.
Рисунок 1.1. Распределение флэш-памяти в STM32F407
1.3 Как использовать блок флэш-памяти
Библиотека Simulink >> Waijung Blockset >> STM32F4 target >> On Peripheral Chip >> FLASH содержит набор блоков для управления данными во флэш-памяти. Параметры блока Flash Erase(очистки) показаны на рис. 1.2, который используется для удаления данных из секторов. Стирание данных из памяти 128 КБ занимает от 1 до 2 секунд.
Рисунок 1.2. Особенности Flash Erase Block
Параметры блока Flash Read(чтения) показаны на рисунке 1.3. Используется для чтения данных из указанной памяти. Например, если требуется прочитать адрес: 0x080E0500, выполните следующие действия.
· По нужному адресу выберите правильный сектор. Адрес: 0x080E0500 находится в секторе 11
· Для нахождения смещения = требуемый адрес - первый адрес в секторе
Таким образом, смещение = 0x80E0500 - 0x80E0000 = 0x0000500 = 20480 (в десятичном формате).
Рисунок 1.3. Характеристики Flash Read Block
Блок Flash Write(записи) показан на рисунке 1.4. Он используется для записи данных со смещением в памяти идентификатора конкретного сектора. Процедура назначения адреса и указания адреса смещения такая же, как и для блока чтения, как описано выше.
Рисунок 1.4. Характеристики Flash Write Block
2. Работа с flash memory. Практические примеры
2.1 Чтение из Flash
Тут всё просто. У нас есть адрес из которого нам надо считать. Что мы и делаем функцией:
uint32_t flash_read(uint32_t address)
{
return (*(__IO uint32_t*) address);
}
Эта функция возвращает данные из 4-х байт, начиная с заданного.
2.2 Разблокирование Flash
Прежде чем что-то делать с памятью, её нужно сначала разблокировать. Для этого надо в регистр KEYR сначала нужно записать число 0x45670123, а затем 0xCDEF89AB. при использовании StdPeriph это сводится к вызову функции:
FLASH_Unlock();
Если вы закончили писать в память, то вызовите функцию:
FLASH_Lock();
2.3 Стирание Flash
Стирать память можно только по секторам. Стирание памяти устанавливает состояние всех ячеек в 1.
Перед стиранием узнайте по приведённому выше списку в каком секторе находятся данные, подлежащие стиранию.
Затем вызовите функцию:
FLASH_EraseSector(FLASH_Sector_5, VoltageRange_3);
FLASH_Sector_5 - Вместо 5 нужно подставить номер своего сектора.
VoltageRange_3 - это диапазон питания. Есть 4 диапазона:
VoltageRange_1 - питание от 1.8 до 2.1 В
VoltageRange_2 - питание от 2.1 до 2.7 В
VoltageRange_3 - питание от 2.7 до 3.6 В
VoltageRange_4 - питание от 2.7 до 3.6 В с внешним Vpp.
Обычно 3.3В без батарейки.
2.4 Запись в Flash
Правильная запись гарантируется только если все биты в нужной ячейке равны 1. Как мы уже знаем, стирать память можно только по секторам, т.е., если вам требуется записать 1 байт, вам нужно куда-то скопировать ВЕСЬ сектор, стереть его и записать в него старые данные, заменив в них нужный байт. Записать же данные поверх текущих невозможно потому, что запись производится побитовым AND. Т.е. фактически это выглядит так:
ПАМЯТЬ=ПАМЯТЬ AND data, где data - ваши данные.
Запись также происходит по адресу одной из команд:
FLASH_ProgramDoubleWord() - запись 8-х байт.
FLASH_ProgramWord() - запись 4-х байт.
FLASH_ProgramHalfWord() - запись 2-х байт.
FLASH_ProgramByte() - запись 1-х байт.
Первым пишется адрес куда нужно записать, вторым данные которые нужно записать. Функции используются в зависимости от типа записываемых данных. Пример: FLASH_ProgramWord(0x08007F00, 0x89ABCDEF);
3. Пример чтения и записи
Фунция которая записывает 12 символов в память:
#define DEVICE_ADDRESS 0x08007F00
#define DEVICE_SECTOR FLASH_Sector_1
void WriteDeviceAddress(char* data)
{
uint8_t i;
FLASH_Unlock();
FLASH_EraseSector(DEVICE_SECTOR, VoltageRange_3);
for (i=0;i<12;i++)
{
FLASH_ProgramByte(DEVICE_ADDRESS+i, data[i]);
}
FLASH_Lock();
}
Пример чтения записанных 12-ти символов:
void ReadDeviceAddress(char* Dout)
{
uint32_t temp, i, j, k=0;
for (i=0;i<3;i++)
{
temp = flash_read(DEVICE_ADDRESS+(i*4));
for (j=0;j<4;j++)
{
Dout[k] = (char)((temp>>(j*8))&0xFF);
k++;
}
}
Dout[12]=0;
}
Использование в программе:
char TempStr[20], TempStr2[20];
sprintf(TempStr2, "0001951337B1");
WriteDeviceAddress(TempStr2);
ReadDeviceAddress(TempStr);
флэш память разблокирование запись
Если её не соблюдать осторожность, то вы можете легко затереть часть вашей программы и устройство перестанет работать. Чтобы этого не произошло, в микроконтроллере stm32f4 предусмотрена защита. Для доступа к записи в эту память необходимо ввести 8-мибайтный код. Если код введён не верно, доступ к Flash можно будет открыть только после сброса питания с МК, но это все еще не отменяет того, что работа с Flash памятью требует особой осторожности.
Размещено на Allbest.ru
Подобные документы
Проектирование микропроцессорного устройства для записи и чтения данных из памяти flash-типа и осуществления взаимодействия с персональным компьютером посредством универсальной последовательной шины (USB). Программное обеспечение для устройства.
курсовая работа [868,3 K], добавлен 23.12.2012Изучение особенностей Flash-анимации, ее достоинства и недостатки. Существенные характеристики, видовые особенностей Flash-аниматора. Примеры использования Flash-технологий. Роль Flash-аниматора в сфере web-дизайна. Необходимый инструментарий web-мастера.
контрольная работа [54,8 K], добавлен 24.05.2015Создание видеоролика про хлор, используя Flash-технологии. Характеристика и принцип работы в MACROMEDIA FLASH 8. Сцены. Анимация движения объекта. Встроенные эффекты. Последовательность действий при создании Flash-фильма, его просмотр и тестирование.
курсовая работа [504,5 K], добавлен 10.04.2008Основные принципы работы с Macromedia Flash, структура программы, использование векторной графики, передача данных в потоковом режиме в Macromedia Flash, разделение данных и их представление. Разработка макета, информационной структуры и дизайна сайта.
дипломная работа [394,3 K], добавлен 12.07.2010Программа Flash компании Macromedia. Создание обучающей системы по Macromedia Flash 7. Структура программы Flash. Базовые моменты, подлежащие описанию для включения их в обучающую систему, реализованную в виде web-узла. Реализация обучающей системы.
курсовая работа [23,3 K], добавлен 21.02.2009Кодування відео у Flash. Кодек Sorenson Spark. Параметри цифрового відео. Використання імпортованих кліпів. Профілі діалогового вікна Wizard. Редагування кліпу, що імпортується засобами Flash. Macromedia Flash Video. Групи елементів Track options.
контрольная работа [301,8 K], добавлен 28.06.2011Назначение и разновидности постоянных запоминающих устройств (ПЗУ). Конструкция и виды полупроводниковых ПЗУ. История разработки и типы Flash-памяти, ее программирование и структурная организация. Характеристика современных стандартов карт памяти.
презентация [933,6 K], добавлен 11.12.2013Создание тестовой программы используя flash-технологии, Action-скрипт. Характеристика и принципы работы в программе Macromedia Flash 7 MX. Использование панели Actions-скрипт. Создание и оформление теста с помощью программы Macromedia Flash.
курсовая работа [614,0 K], добавлен 10.04.2008Основи, типові функції і настройка інтерфейсу Flash. Формати статичної графіки, робота з кольором та текстом. Бібліотеки та провідник Flash. Публікація і експорт статичної графіки. Покадрова та трансформаційна анімації. Засоби відладки ActionScript.
дипломная работа [89,8 K], добавлен 02.05.2009Сравнение языка Php с другими языками программирования web-приложений. Язык разметки гипертекстовых страниц Html. Технология Macromedia Flash, её преимущества и недостатки. Этапы создания флеш-сайта, руководство пользователя и листинг программы.
дипломная работа [2,3 M], добавлен 04.10.2013