СПОСОБ И УСТРОЙСТВО ДЛЯ ЭМУЛЯЦИИ ПОБАЙТНО ПРОГРАММИРУЕМОЙ ФУНКЦИОНАЛЬНОСТИ В ПОСЕКТОРНО ОЧИЩАЕМУЮ ПАМЯТЬ

1. Способ эмуляции побайтно программируемой памяти в посекторно очищаемой памяти (3), содержащий:
а) разделение указанной посекторно очищаемой памяти на множество секторов (36),
б) разделение каждого из указанных секторов на множество ячеек памяти, пригодных для сохранения контейнеров (35), где каждый контейнер (35) имеет заголовок (33) и блок полезной нагрузки (34),
в) запись значения данных P бит, относящихся к заявке, в указанный блок полезной нагрузки (34) одного из указанных контейнеров (35) и информации заголовка в указанный заголовок (33) в доступном контейнере,
характеризуемый указанными контейнерами как контейнерами блока, указанным блоком полезной нагрузки, содержащим M бит, где M>P, и указанное сохранение указанного значения данных P бит в указанный блок (34) полезной нагрузки выполняется таким образом, что указанные M бит нагрузки в указанном блоке (34) полезной нагрузки представляют указанное значение данных P бит
и содержит:
в1) считывание сохраненных данных полезной нагрузки из блока полезной нагрузки контейнера;
в2) вычисление новых данных полезной нагрузки в зависимости от значения данных от сохраненного значения данных и сохраненных данных полезной нагрузки в в1;
в3) сохранение новых данных полезной нагрузки в указанном контейнере.
2. Способ по п.1, где указанная посекторно очищаемая память представляет собой FLASH память.
3. Способ по пп.1 или 2, где блок полезной нагрузки содержит два или более частей полезной нагрузки, где каждая часть полезной нагрузки имеет число битов, равное P, и где указанное значение данных может быть получено из указанных двух или более частей полезной нагрузки в указанном блоке полезной нагрузки (34) путем выполнения арифметических операций.
4. Способ по п.3, где указанная арифметическая операция представляет собой, по меньшей мере, одну из функций SUM, EXOR, XOR и AND.
5. Способ по п.1, где указанная операция вычисления в2 содержит:
в21) вычисление текущей суммы по модулю всех указанных двух или более частей полезной нагрузки в указанном блоке (34) полезной нагрузки,
в22) вычисление вычитаемого значения такого, что указанное вычитаемое значение равно разности между текущей суммой по модулю и указанным значением данных,
в23) вычитание указанной вычитаемой величины из указанных двух или более значений полезной нагрузки по предопределенной схеме вычитания.
6. Способ по п.5, где существует, по меньшей мере, пять значений полезной нагрузки, и указанная преопределенная схема вычитания для каждого бита в позиции бита в указанном вычитаемом значении содержит:
в231) проверку, имеет ли бит значение "1"; если проверка дала отрицательный результат, переход к следующему биту; если проверка дала положительный результат, продолжение к следующей операции.
в232) проверку, существует ли какой-либо бит со значением "1" в одинаковой позиции в двух или более значениях полезной нагрузки;
в2321) в таком случае, вычитание значения "1" в указанной одинаковой позиции бита из значения полезной нагрузки, определенного таким образом;
в2322) в обратном случае проверка, если существуют два бита со значением "1" из двух или более значений полезной нагрузки;
в23221) в таком случае вычитание два раза значения "1" из двух значений полезной нагрузки, определенных таким образом;
в23222) в обратном случае проверка, если существуют четыре бита со значением "1" в следующей позиции бита;
в232221) в таком случае, вычитание четыре раза значения "1" из четырех значений полезной нагрузки, определенных таким образом;
в232222) в обратном случае, если существует достаточно значений полезной нагрузки, продолжение это процесса для восьми, шестнадцати и т.д. бит в следующих позициях бита и, если это вообще невозможно, определение пустого контейнера блока и запись указанного значения данных в указанный пустой контейнер блока.
7. Способ по п.6, содержащий вариант, когда нельзя определить такой пустой контейнер в секторе, в котором хранится указанный контейнер блока, дефрагментацию указанного блока и затем заново определение пустого контейнера блока.
8. Способ по п.7, где указанная дефрагментация содержит
г) считывание всех контейнеров в указанном секторе один за другим в обратном порядке;
д) проверка для каждого контейнера блока является ли значение полезной нагрузки действительным значением и
игнорирование каждого блока контейнера с недействительными данными в его данных полезной нагрузки,
запись указанного контейнера полезной нагрузки в буфер локальной памяти, если указанные данные полезной нагрузки являются действительными,
е) запись содержимого указанного буфера локальной памяти в новый сектор в указанную FLASH память,
ж) настройка указанного нового сектора в активный статус,
з) стирание указанного сектора.
9. Способ по п.1, где последовательно доступные контейнеры определены на основе одной из стековой организации и организации на базе указателей.
10. Способ по п.1, где каждое значение данных, блок полезной нагрузки и вычитаемое значение являются байтом из восьми бит.
11. Система, содержащая центральный процессор, размещенный для выполнения способа, заявленного в любом из предшествующих пунктов.
12. Система по п.11, указанная система является встроенной системой или с внутренней или внешней посекторно стираемой памятью, эмулирующей побайтно программируемую память.
13. Система по п.12, где указанная посекторно стираемая память представляет собой FLASH память.
14. Компьютерный программный продукт, содержащий данные и инструкции, указанную компьютерную программу, размещенную для загрузки системой по пп.11, 12 или 13, и после загрузки обеспечение указанному центральному процессору возможности выполнить способ по любому из пп.1-10.
15. Носитель данных, содержащий компьютерный программный продукт по п.14.
16. Способ эмуляции побайтно-программируемой памяти в посекторно стираемую память (3), содержащий:
а) разделение указанной посекторно очищаемой памяти на множество секторов (36),
б) разделение каждого из указанных секторов на множество ячеек памяти, пригодных для сохранения контейнеров (35), где каждый контейнер (35) имеет заголовок (33) и блок полезной нагрузки (34),
в) запись значения данных, относящихся к заявке, в указанный блок полезной нагрузки (34) одного из указанных контейнеров (35) и информации заголовка в указанный заголовок (33) в доступном контейнере,
характеризуемый указанным заголовком, содержащим поле статуса, и, по меньшей мере, один адрес смещения указателя (ptrA), определяющий, на каком адресе смещения был выделен новый контейнер.
17. Система, содержащая процессор, размещенный для выполнения способа по п.16.