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

 
 
 
Reply to this topicStart new topic
> запись во влеш, помогите дописать функцию
TigerSHARC
сообщение Nov 29 2011, 18:27
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



имеется функция для перезаписи во флеши 32-битного значения, как переписать её для запаси числа в формате uint64?
CODE
void flash_replace32(int32_t *ptr, int32_t word)
{
int *read_ptr;
int *write_ptr;
int w;

//Optimise the case where the new and old values are the same
if (*ptr == word)
return;

flash_clr( (int *) FSEG_A);
_DINT();
//Set to write mode to prepare for copy
FCTL3 = FWKEY; /* Lock = 0 */
FCTL1 = FWKEY | WRT;

//Copy block B to A
read_ptr = (int *) FSEG_B;
write_ptr = (int *) FSEG_A;
for (w = 0; w < 64; w++)
*write_ptr++ = *read_ptr++;

flash_clr((int *) FSEG_B);

//Set to write mode to prepare for copy
FCTL3 = FWKEY; /* Lock = 0 */
FCTL1 = FWKEY | WRT;

//Copy block A to B, slipping in the new value at the right location
read_ptr = (int *) FSEG_A;
write_ptr = (int *) FSEG_B;
for (w = 0; w < 64; w++, read_ptr++, write_ptr++)
{
if (write_ptr == (int *) ptr)
{
*ptr = word;
//Bump the counter to allow for just writing a double
//word.
w++;
read_ptr++;
write_ptr++;
}
else
{
*write_ptr = *read_ptr;
}
}
flash_secure();
_EINT();
}
Go to the top of the page
 
+Quote Post
bigal
сообщение Dec 3 2011, 15:14
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 16-08-06
Из: Москва
Пользователь №: 19 581



Если компилятор языка си не поддерживает формат 64 бит, то половинить число и передавать в функцию два значения, или использовать структуру либо объединение. А лучше передавать указатель на начало буфера где лежит число и писать последовательно по формату флеши.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 19:16
Рейтинг@Mail.ru


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