Код
if (status == FLASH_COMPLETE)
{
size = sizeof(GLOB_MOTOR_DATA);
addr = (uint32_t *)(flash_page + offset);
status = WriteFlash(&glob_mot_data, addr, size);
offset += (size + SEPARATOR);
size = sizeof(IR_DATA);
addr = (uint32_t *)(flash_page + offset);
status = WriteFlash(&ir_data, addr, size);
offset += (size + SEPARATOR);
size = sizeof(MOTOR_TASK) * MAX_TASKS;
addr = (uint32_t *)(flash_page + offset);
status = WriteFlash(&mot_task, addr, size);
offset += size + SEPARATOR;
}
{
size = sizeof(GLOB_MOTOR_DATA);
addr = (uint32_t *)(flash_page + offset);
status = WriteFlash(&glob_mot_data, addr, size);
offset += (size + SEPARATOR);
size = sizeof(IR_DATA);
addr = (uint32_t *)(flash_page + offset);
status = WriteFlash(&ir_data, addr, size);
offset += (size + SEPARATOR);
size = sizeof(MOTOR_TASK) * MAX_TASKS;
addr = (uint32_t *)(flash_page + offset);
status = WriteFlash(&mot_task, addr, size);
offset += size + SEPARATOR;
}
размер данных постоянно растет, добавляются новые структуры и я задумался - нужно же как то мониторить переполнение страницы, она же не резиновая.
и чо то у меня какие то громоздкие вычисления получаются, что мне очень не нравиться. как бы это сделать покрасивше?
если последняя структура не влезает на страницу - дописать то что влезает и перескочить на следующую страницу или не париться и всю структуру записать на следующей странице?
а где хранить информацию что у меня данные раскинуты на нескольких страницах?
я тут нашел старый код для внешней памяти
Код
if(((address & (AT25_PAGE_SIZE - 1)) + lenght) >= AT25_PAGE_SIZE)
{
bytes_to_write = AT25_PAGE_SIZE - (address & (AT25_PAGE_SIZE - 1));
//page_overflow = 1;
}
else
{
bytes_to_write = lenght;
//page_overflow = 0;
}
{
bytes_to_write = AT25_PAGE_SIZE - (address & (AT25_PAGE_SIZE - 1));
//page_overflow = 1;
}
else
{
bytes_to_write = lenght;
//page_overflow = 0;
}
с какого перепугу я эндил, нифига не помню. сижу мучаю калькулятор, ничего не выходит. можно воспользоваться этим алгоритмом?
упс. только сейчас заметил. я offset вычисляю в байтах а надо size/4.