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

 
 
> Алгоритм вычесления page overflow
Jenya7
сообщение Feb 18 2018, 07:40
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть несколько структу которые я записываю на флеш в камне
Код
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;
    }

размер данных постоянно растет, добавляются новые структуры и я задумался - нужно же как то мониторить переполнение страницы, она же не резиновая.
и чо то у меня какие то громоздкие вычисления получаются, что мне очень не нравиться. как бы это сделать покрасивше?

если последняя структура не влезает на страницу - дописать то что влезает и перескочить на следующую страницу или не париться и всю структуру записать на следующей странице?
а где хранить информацию что у меня данные раскинуты на нескольких страницах?

я тут нашел старый код для внешней памяти
Код
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;
    }

с какого перепугу я эндил, нифига не помню. сижу мучаю калькулятор, ничего не выходит. можно воспользоваться этим алгоритмом?

упс. только сейчас заметил. я offset вычисляю в байтах а надо size/4.

Сообщение отредактировал Jenya7 - Feb 18 2018, 11:11
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 11:40
Рейтинг@Mail.ru


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