Попытался реализовать хранение данных во flash для контроллера PIC16LF1709. среда MPLAB X, компилятор XC8
Уже всю голову сломал, как это сделать...
Алгоритм то понятный:
1. определяемся где и что будем хранить
2. выделяем под это страницу flash
3. создаем переменную, которая берет значения с необходимого адреса (или читаем напрямую из flash)
4. Если нужно обновить переменные, копируем страницу flash, изменяем нужные значения, очищаем страницу и записываем туда новую инфу.
НО
1. Как указать компилятору, чтобы он не трогал ту память. где я планирую хранить данные?
2. Как считать данные из flash? (не нашел ни одной библиотеки или примера, единственная информация - документ на компиллятор и даташит. ни по тому ни по другому ничего сделать не получилось)
3. Как стереть страницу flash?
4. Как записать новые данные?
5. 1 страницы flash занимает 2 КБайт. объем ОЗУ 1 Кбайт. Для того чтобы считать старую страницу flash, внести в нее изменения и перезаписать, нужно как минимум столько же оперативки сколько занимают данные. Судя по этим цифрам ничего не получится. Или я не прав? Стирание производится блоками (row) по 32 слова. Запись, наверное, аналогично
Уже всю голову сломал, как это сделать...
Алгоритм то понятный:
1. определяемся где и что будем хранить
2. выделяем под это страницу flash
3. создаем переменную, которая берет значения с необходимого адреса (или читаем напрямую из flash)
4. Если нужно обновить переменные, копируем страницу flash, изменяем нужные значения, очищаем страницу и записываем туда новую инфу.
НО
1. Как указать компилятору, чтобы он не трогал ту память. где я планирую хранить данные?
2. Как считать данные из flash? (не нашел ни одной библиотеки или примера, единственная информация - документ на компиллятор и даташит. ни по тому ни по другому ничего сделать не получилось)
3. Как стереть страницу flash?
4. Как записать новые данные?
5. 1 страницы flash занимает 2 КБайт. объем ОЗУ 1 Кбайт. Для того чтобы считать старую страницу flash, внести в нее изменения и перезаписать, нужно как минимум столько же оперативки сколько занимают данные. Судя по этим цифрам ничего не получится. Или я не прав? Стирание производится блоками (row) по 32 слова. Запись, наверное, аналогично
Последний раз редактировалось van_de_luxe Вт июн 10, 2014 23:43:43, всего редактировалось 1 раз.
