|
8051Fxxx from SiLabs, Кто как сохраняет настройки |
|
|
|
Aug 13 2006, 17:00
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Кто как сохраняет пользовательские настойки в разрабатываемых девайсах, а то SiLabs пожадничали прикрутить EEPROM к ихним камням.Я просто поражен  неужели это так сложно было. Так что остается 2 варианта, писать во флэш, или наружи епром цеплять. Как лучше получается(из соображения размера кода)?
|
|
|
|
|
 |
Ответов
|
Aug 14 2006, 11:20
|
Участник

Группа: Свой
Сообщений: 36
Регистрация: 7-11-05
Пользователь №: 10 549

|
Я во внутреннюю flash контроллера пишу. Функция записи небольшая получается, да и быстродействие несоизмеримо по сравнению с вариантом EEPROMа.
|
|
|
|
|
Aug 15 2006, 15:05
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(RedFroggy @ Aug 14 2006, 15:20)  Я во внутреннюю flash контроллера пишу. Функция записи небольшая получается, да и быстродействие несоизмеримо по сравнению с вариантом EEPROMа. Я так понимаю надо работать с целым сектором даже если надо записать 1 байт?
|
|
|
|
|
Aug 15 2006, 15:30
|
Участник

Группа: Свой
Сообщений: 36
Регистрация: 7-11-05
Пользователь №: 10 549

|
Цитата(viael @ Aug 15 2006, 19:05)  Цитата(RedFroggy @ Aug 14 2006, 15:20)  Я во внутреннюю flash контроллера пишу. Функция записи небольшая получается, да и быстродействие несоизмеримо по сравнению с вариантом EEPROMа.
Я так понимаю надо работать с целым сектором даже если надо записать 1 байт? Да, с целым сектором 512 байт. Поэтому перед записью даже одного байта, придётся все полезные данные сохранить в буфер, т.к. операции записи предшествует операция стирания.
|
|
|
|
|
Aug 15 2006, 16:27
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
[quote name='RedFroggy' date='Aug 15 2006, 19:30' post='144734'] [quote name='viael' post='144726' date='Aug 15 2006, 19:05'] [quote name='RedFroggy' post='144279' date='Aug 14 2006, 15:20'] Я во внутреннюю flash контроллера пишу. Функция записи небольшая получается, да и быстродействие несоизмеримо по сравнению с вариантом EEPROMа. [/quote] Я так понимаю надо работать с целым сектором даже если надо записать 1 байт? [/quote] Да, с целым сектором 512 байт. Поэтому перед записью даже одного байта, придётся все полезные данные сохранить в буфер, т.к. операции записи предшествует операция стирания. [/7quote] Явно не подходит для кристалов с RAM<768 байт.
|
|
|
|
|
Aug 15 2006, 16:57
|
Участник

Группа: Свой
Сообщений: 36
Регистрация: 7-11-05
Пользователь №: 10 549

|
[quote name='viael' date='Aug 15 2006, 20:27' post='144745'] [quote name='RedFroggy' date='Aug 15 2006, 19:30' post='144734'] [quote name='viael' post='144726' date='Aug 15 2006, 19:05'] [quote name='RedFroggy' post='144279' date='Aug 14 2006, 15:20'] Я во внутреннюю flash контроллера пишу. Функция записи небольшая получается, да и быстродействие несоизмеримо по сравнению с вариантом EEPROMа. [/quote] Я так понимаю надо работать с целым сектором даже если надо записать 1 байт? [/quote] Да, с целым сектором 512 байт. Поэтому перед записью даже одного байта, придётся все полезные данные сохранить в буфер, т.к. операции записи предшествует операция стирания. [/7quote] Явно не подходит для кристалов с RAM<768 байт.  [/quote] Почему не подходит? Никто ведь не заставляет запоминать состояние всех 512 байт. Если у Вас, скажем, 10 байт настроек, так и сохраняйте в буфер эти 10 байт. А потом после стирания их восстанавливайте во флеш.
|
|
|
|
|
Aug 15 2006, 17:49
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата Почему не подходит? Никто ведь не заставляет запоминать состояние всех 512 байт. Если у Вас, скажем, 10 байт настроек, так и сохраняйте в буфер эти 10 байт. А потом после стирания их восстанавливайте во флеш. А у вас есть пример реализации на кейле.Этож надо сразу забить блок флеша размером 512 шоб компилятор его не заюзал.
|
|
|
|
|
Aug 15 2006, 18:51
|
Участник

Группа: Свой
Сообщений: 36
Регистрация: 7-11-05
Пользователь №: 10 549

|
Цитата(viael @ Aug 15 2006, 21:49)  Цитата Почему не подходит? Никто ведь не заставляет запоминать состояние всех 512 байт. Если у Вас, скажем, 10 байт настроек, так и сохраняйте в буфер эти 10 байт. А потом после стирания их восстанавливайте во флеш.
А у вас есть пример реализации на кейле.Этож надо сразу забить блок флеша размером 512 шоб компилятор его не заюзал. Завтра вышлю пример
|
|
|
|
|
Aug 15 2006, 21:21
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(RedFroggy @ Aug 15 2006, 22:51)  Цитата(viael @ Aug 15 2006, 21:49)  Цитата Почему не подходит? Никто ведь не заставляет запоминать состояние всех 512 байт. Если у Вас, скажем, 10 байт настроек, так и сохраняйте в буфер эти 10 байт. А потом после стирания их восстанавливайте во флеш.
А у вас есть пример реализации на кейле.Этож надо сразу забить блок флеша размером 512 шоб компилятор его не заюзал. Завтра вышлю пример Я уже сам допер Поковырялся в апликухах и написал это: Код void write_flash( unsigned char dat,unsigned char xdata *ptr ) { unsigned char xdata *pwrite; char EA_save,PCA0MD_save;
// Disable Watchdog timer PCA0MD_save=PCA0MD; PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer // enable)
// erase the FLASH page at 0x1000 EA_save = EA; EA = 0; // disable interrupts (precautionary)
// initialize write/erase pointer pwrite = ptr; PSCTL = 0x03; // MOVX writes erase FLASH page
FLKEY = 0xA5; // FLASH lock and key sequence 1 FLKEY = 0xF1; // FLASH lock and key sequence 2 *pwrite = 0; // initiate page erase
PSCTL = 0; // MOVX writes target XRAM
// copy a dat FLASH memory at address ptr
pwrite = ptr; // initialize FLASH write pointer PSCTL = 0x01; // MOVX writes target FLASH memory
FLKEY = 0xA5; // FLASH lock and key sequence 1 FLKEY = 0xF1; // FLASH lock and key sequence 2 *pwrite = dat; // copy byte
PSCTL = 0x00; // MOVX writes target XRAM EA = EA_save; // re-enable interrupts PCA0MD=PCA0MD_save; } записывается dat по указателю ptr с предварительным стиранием блока начиная с ptr.Проверил в железе на F321 работает. Но примерчик все рано вышли интересно как у тебя реализовано.
|
|
|
|
Сообщений в этой теме
viael 8051Fxxx from SiLabs Aug 13 2006, 17:00        RedFroggy Цитата(viael @ Aug 16 2006, 01:21) Цитата... Aug 16 2006, 06:00 Igor_K Делаю так же, в scratchpad пишу. Недостаток вижу т... Aug 14 2006, 15:00 Igor_K Не обязательно работать с такими большими секторам... Aug 16 2006, 15:44 RedFroggy Цитата(Igor_K @ Aug 16 2006, 19:44) Не об... Aug 16 2006, 16:50  viael Цитата(RedFroggy @ Aug 16 2006, 20:50) Ци... Aug 17 2006, 07:31   RedFroggy Цитата(viael @ Aug 17 2006, 11:31) Цитата... Aug 17 2006, 07:58 _Andu_ мы в своих устройствах используем внешнюю флаш. С ... Aug 17 2006, 12:09 nik_al Цитата(_Andu_ @ Aug 17 2006, 16:09) С точ... Sep 2 2006, 19:39 evg123 Варианотов нет - или работать с внутренним флэшом ... Sep 13 2006, 12:10 RedFroggy Цитата(evg123 @ Sep 13 2006, 16:10) Вариа... Sep 13 2006, 12:32 evg123 Использовать флэш. Если настроек мало, то можно по... Sep 13 2006, 12:42 AndreyS День добрый
А чем плох Даллосовский термодатчик с... Sep 14 2006, 13:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|