ПРОГРЕССИВНАЯ НАЧАЛЬНАЯ ЗАГРУЗКА ДЛЯ БЕСПРОВОДНОГО УСТРОЙСТВА
PROGRESSIVE BOOT STRAP LOADING FOR WIRELESS DEVICE

УРОВЕНЬ ТЕХНИКИ
I. Область техники, к которой относится изобретение
Настоящее изобретение относится, в основном, к электронной аппаратуре и, в частности, к методам начальной загрузки беспроводного устройства при включении питания.
II. Уровень техники
Беспроводное устройство (например, сотовый телефон) обычно работает на основе программных кодов, которые управляют аппаратными средствами в беспроводном устройстве и поддерживают различные разработанные функции. Программные коды могут храниться в энергонезависимой памяти большого объема и могут загружаться в более быструю энергозависимую память при включении питания. Энергонезависимой памятью большого объема может быть флэш-память типа NAND (НЕ-И), которая может экономно хранить большое количество данных, но обращение к которой может выполняться только постранично. Страницей может быть наименьший блок данных, который может извлекаться из флэш-памяти типа NAND, и она может составлять четыре килобайта (KB) или некоторый другой размер. Более быстрой энергозависимой памятью может быть синхронное динамическое оперативное запоминающее устройство (SDRAM), которое может поддерживать произвольный доступ. Памяти могут выбираться так, чтобы обеспечивать требуемую емкость памяти и возможность доступа, и чтобы она была максимально экономичной.
Когда включается питание беспроводного устройства, все программные коды могут загружаться из энергонезависимой памяти большого объема в более быструю энергозависимую память. Когда все программные коды будут загружены, беспроводному устройству может быть разрешено принимать пользовательские вводы и выполнять выбранные пользователем функции. Количество программных кодов для загрузки при включении питания может быть большое, и время начальной загрузки может быть относительно продолжительным. Следовательно, пользователю может потребоваться продолжительный период времени ожидания перед тем как беспроводное устройство будет работающим.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В одном аспекте устройство включает в себя процессор, выполненный с возможностью программирования первого и второго образа кода в устройство памяти, используемое для беспроводного устройства, причем первый образ кода загружается из устройства памяти для начальной загрузки беспроводного устройства и для обеспечения работоспособности беспроводного устройства, второй образ кода загружается из устройства памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте способ включает в себя программирование первого образа кода в устройство памяти, используемое для беспроводного устройства, причем первый образ кода загружается из устройства памяти для начальной загрузки беспроводного устройства и обеспечения работоспособности беспроводного устройства. Способ дополнительно включает в себя программирование второго образа кода в устройство памяти, причем второй образ кода загружается из устройства памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте устройство включает в себя средство программирования первого образа кода в устройство памяти, используемое для беспроводного устройства, причем первый образ кода загружается из устройства памяти для начальной загрузки беспроводного устройства и обеспечения работоспособности беспроводного устройства, и средство программирования второго образа кода в устройство памяти, причем второй образ кода загружается из устройства памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте устройство включает в себя контроллер памяти, выполненный с возможностью загрузки первого образа кода из устройства памяти для начальной загрузки беспроводного устройства, и главный контроллер, выполненный с возможностью обеспечения работоспособности беспроводного устройства после загрузки первого образа кода, и в котором контроллер памяти дополнительно выполнен с возможностью загрузки второго образа кода из внешней памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте способ включает в себя загрузку первого образа кода из внешней памяти для начальной загрузки беспроводного устройства, обеспечение работоспособности беспроводного устройства после загрузки первого образа кода и загрузку второго образа кода из внешней памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте устройство включает в себя средство загрузки первого образа кода из внешней памяти для начальной загрузки беспроводного устройства, средство обеспечения работоспособности беспроводного устройства после загрузки первого образа кода и средство загрузки второго образа кода из внешней памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте компьютерный программный продукт включает в себя машиночитаемый носитель, содержащий код, вызывающий загрузку компьютером первого образа кода из внешней памяти для начальной загрузки беспроводного устройства, код, вызывающий обеспечение работоспособности компьютером беспроводного устройства после загрузки первого образа кода, и код, вызывающий загрузку компьютером второго образа кода из внешней памяти, когда беспроводное устройство является работающим, для дополнительной начальной загрузки беспроводного устройства.
В другом аспекте устройство включает в себя контроллер памяти, выполненный с возможностью извлечения множества страниц образа кода из внешней памяти, причем множество страниц ассоциируется с отдельной информацией безопасности, и аутентификации каждой страницы, извлеченной из внешней памяти, на основе информации безопасности для страницы.
В другом аспекте способ включает в себя извлечение множества страниц образа кода из внешней памяти, причем множество страниц ассоциируется с отдельной информацией безопасности, и аутентификацию каждой страницы, извлеченной из внешней памяти, на основе информации безопасности для страницы.
В другом аспекте устройство включает в себя средство извлечения множества страниц образа кода из внешней памяти, причем множество страниц ассоциируется с отдельной информацией безопасности, и средство аутентификации каждой страницы, извлеченной из внешней памяти, на основе информации безопасности для страницы.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 изображает блок-схему устройства беспроводной связи.
Фиг.2 изображает программирование сегментов без страничной организации и со страничной организацией флэш-памяти типа NAND.
Фиг.3 изображает второй образ кода и таблицу хеш-дайджестов.
Фиг.4 изображает загрузку и аутентификацию первого и второго образа кода.
Фиг.5 изображает модули в первом образе кода.
Фиг.6 изображает SDRAM в беспроводном устройстве.
Фиг.7 изображает 2-уровневую структуру, используемую для отслеживания состояния загрузки страниц второго образа кода.
Фиг.8 изображает процесс программирования устройства памяти.
Фиг.9 изображает процесс прогрессивной начальной загрузки беспроводного устройства при включении питания.
Фиг.10 изображает процесс аутентификации второго образа кода.
Фиг.11 изображает программирующую станцию.
ПОДРОБНОЕ ОПИСАНИЕ
Методы начальной загрузки, описанные в данном документе, могут использоваться для различных электронных устройств, таких как устройства беспроводной связи, карманные устройства, игровые устройства, вычислительные устройства, устройства бытовой электроники, компьютеры и т.д. Для ясности, методы описаны ниже для устройства беспроводной связи, имеющего память, такую как флэш-память типа NAND и SDRAM.
Фиг.1 изображает блок-схему устройства 100 беспроводной связи согласно аспекту изобретения, которым может быть сотовый телефон, персональный цифровой помощник (PDA), микротелефонная трубка, карманное устройство, беспроводный модуль, терминал, модем и т.д. Беспроводное устройство 100 может быть способно обеспечивать двустороннюю связь с одной или несколькими системами беспроводной связи по тракту передачи и тракту приема. В тракте передачи цифровая секция 120 может обеспечивать данные, подлежащие передаче беспроводным устройством 100. Передатчик (TMTR) 114 может обрабатывать данные для генерирования радиочастотного (РЧ) выходного сигнала, который может передаваться через антенну 112 на базовые станции. В тракте приема сигналы, передаваемые базовыми станциями, могут приниматься антенной 112 и подаваться на приемник (RCVR) 116. Приемник 116 может приводить в определенное состояние и оцифровывать принятый сигнал и подавать отсчеты на цифровую секцию 120 для дальнейшей обработки.
Цифровая секция 120 может включать в себя различные блоки обработки, интерфейса и памяти, которые поддерживают цифровую обработку для беспроводного устройства 100. В разработке, показанной на фиг.1, цифровая секция 120 включает в себя процессор 122 модема, центральный блок обработки (CPU)/компьютер 124 с сокращенным набором команд (RISC), главный контроллер 130, статическое оперативное запоминающее устройство (SRAM) 132, постоянное запоминающее устройство (ROM) 134, контроллер 140 флэш-памяти типа NAND и контроллер 142 SDRAM, все из которых могут обмениваться данными друг с другом по одной или нескольким шинам 160. Процессор 122 модема может выполнять обработку для передачи и приема данных, например, кодирование, модуляцию, демодуляцию, декодирование и т.д. CPU/RISC 124 может выполнять обработку общего назначения для беспроводного устройства 100, например, обработку для аудио, видео, графики и/или других приложений. Главный контроллер 130 может управлять работой различных блоков в цифровой секции 120. SRAM 132 может хранить программные коды и данные, используемые контроллерами и процессорами в цифровой секции 120. ROM 134 может хранить код 136 начальной загрузки и корневой открытый ключ 138. Код 136 начальной загрузки может выполнять первоначальную часть начальной загрузки при включении питания и может запускать загрузку программных кодов из флэш-памяти 150 типа NAND, когда включается питание беспроводного устройства 100. Корневой открытый ключ 138 может использоваться для функций обеспечения безопасности, например, для аутентификации программных кодов, загружаемых из флэш-памяти 150 типа NAND.
Контроллер 140 флэш-памяти типа NAND может способствовать пересылке данных между флэш-памятью 150 типа NAND и цифровой секцией 120. Контроллер 142 SDRAM может способствовать пересылке данных между SDRAM 152 и цифровой секцией 120. Главный контроллер 130 может управлять работой контроллера 140 флэш-памяти типа NAND и/или контроллера 142 SDRAM. Например, главный контроллер 130 может управлять непосредственной загрузкой программных кодов из флэш-памяти 150 типа NAND в SDRAM 152 во время начальной загрузки, например, когда включается питания беспроводного устройства 100.
Флэш-память 150 типа NAND и SDRAM 152 могут обеспечивать массовую память для блоков обработки в цифровой секции 120. Флэш-память 150 типа NAND может обеспечивать энергонезависимое запоминающее устройство для программных кодов и данных, используемых цифровой секцией 120. Флэш-память 150 типа NAND также может быть заменена другими типами энергонезависимой памяти, например, флэш-памятью типа NOR (НЕ-ИЛИ). SDRAM 152 может обеспечивать запоминающее устройство с возможностью произвольного доступа для программных кодов и данных, используемых цифровой секцией 120. SDRAM 152 также может быть заменена другими типами энергозависимой памяти, например, SRAM, динамическое оперативное запоминающее устройство (DRAM) и т.д.
Как правило, цифровая секция 120 может включать в себя любое количество блоков обработки, интерфейса и памяти. Цифровая секция 120 также может быть реализована одним или несколькими процессорами цифровой обработки сигналов (DSP), микропроцессорами, RISC-процессорами и т.д. Цифровая секция 120 может изготавливаться на одной или нескольких специализированных интегральных схемах (специализированных ИС) и/или интегральных схемах (ИС) некоторого другого типа.
Как показано на фиг.1, беспроводное устройство 100 может использовать архитектуру памяти с различными типами памяти. SDRAM 152 представляет собой энергозависимую память, которая теряет свои данные, если отключается питание. К SDRAM 152 обращение может выполняться произвольным образом, и оно обычно используется в качестве главной динамически выделяемой памяти. Флэш-память 150 типа NAND представляет собой энергонезависимую память, которая может хранить свои данные даже после отключения питания. Флэш-память 150 типа NAND имеет большую емкость, хорошее быстродействие для продолжительного доступа к памяти и низкую стоимость. Однако флэш-память 150 типа NAND имеет плохие рабочие характеристики для произвольного доступа к памяти, и обращение к ней обычно выполняется блоками страниц, постранично, причем каждая страница имеет определенный размер (например, 4 KB).
Архитектура памяти на фиг.1 включает в себя как флэш-память 150 типа NAND, так и SDRAM 152 и способна обеспечивать большую емкость памяти с произвольным доступом при уменьшенной стоимости. Для этой архитектуры памяти программные коды могут постоянно храниться в флэш-памяти 150 типа NAND. Программные коды могут управлять аппаратными средствами в беспроводном устройстве 100, а также поддерживать различные разработанные функции и особенности. При включении питания беспроводное устройство 100 может выполнять начальную загрузку, которая может вызывать пересылку программных кодов из флэш-памяти 150 типа NAND в SDRAM 152. Флэш-память 150 типа NAND может хранить большое количество программных кодов. Следовательно, количество времени для загрузки всех программных кодов из флэш-памяти 150 типа NAND в SDRAM 152 при включении питания может быть относительно большим.
В одном аспекте программные коды, подлежащие хранению в флэш-памяти 150 типа NAND, могут разделяться на множество образов кода, которые могут храниться в разных сегментах флэш-памяти 150 типа NAND. Сегмент также может упоминаться как раздел, секция и т.д. В одной разработке программные коды могут разделяться на первый и второй образы кода. Первый образ кода может включать в себя программные коды, используемые для поддержки базовой функциональной возможности беспроводного устройства 100, и может храниться в сегменте без страничной организации флэш-памяти 150 типа NAND. Второй образ кода может включать в себя остальные программные коды и может храниться в сегменте со страничной организацией флэш-памяти 150 типа NAND. Для прогрессивной начальной загрузки при включении питания сначала может загружаться первый образ кода из сегмента без страничной организации флэш-памяти 150 типа NAND в SDRAM 152. Когда первый образ кода будет загружен, беспроводное устройство 100 может быть включенным и может производить впечатление работающего для пользователя. Когда беспроводное устройство 100 является работающим, второй образ кода может загружаться из сегмента со страничной организацией флэш-памяти 150 типа NAND в SDRAM 152, например, в качестве фоновой задачи и/или по запросу, когда необходимо. Прогрессивная начальная загрузка может уменьшать количество времени для включения беспроводного устройства 100 при включении питания, что может улучшать опыт взаимодействия пользователя и обеспечивать другие преимущества.
Программные коды, хранимые в флэш-памяти 150 типа NAND, могут включать в себя коды, которые управляют работой беспроводного устройства 100, приложениями более высоких уровней, которые поддерживают различные разработанные особенности и функции, коды заводского испытания и/или другие типы кодов. Может быть желательным или необходимым удостовериться, авторизованы ли или нет для использования программные коды, хранимые в флэш-памяти 150 типа NAND, допуская исполнение программных кодов, которые авторизованы, и предотвращая исполнение программных кодов, которые не авторизованы. Кроме того, может быть желательным обеспечить безопасность эффективным образом для многочисленных образов кода, используемых для прогрессивной начальной загрузки.
В другом аспекте безопасность может эффективно обеспечиваться для прогрессивной начальной загрузки посредством выполнения аутентификации для всего первого образа кода и также для каждой страницы второго образа кода. Сначала может полностью загружаться первый образ кода из флэш-памяти 150 типа NAND при включении питания и может аутентифицироваться при загрузке. Второй образ кода может разделяться на страницы и загружаться постранично из флэш-памяти 150 типа NAND. Страницы второго образа кода могут загружаться в различных порядках, в зависимости от обращений к памяти. Каждая страница второго образа кода может аутентифицироваться индивидуально, позволяя выполнять загрузку и использование страницы безотносительно других страниц второго образа кода.
Фиг.2 изображает разработку флэш-памяти 150 типа NAND, которая включает в себя сегмент 210 без страничной организации и сегмент 220 со страничной организацией, согласно аспекту изобретения. В данной разработке сегмент 210 без страничной организации хранит первый образ 212 кода, таблицу 214 хеш-дайджестов, сертификат 216 и цифровую подпись 218. Сертификат 216 может включать в себя криптографическую информацию, используемую для аутентификации сегмента 210 без страничной организации и сегмента 220 со страничной организацией. Цифровая подпись 218 может генерироваться как по первому образу 212 кода, так и по хеш-таблице 214 и может использоваться для аутентификации этих двух частей. Первый образ 212 кода может включать в себя программные коды и/или данные, подлежащие загрузке из флэш-памяти 150 типа NAND до включения беспроводного устройства 100, например, коды для драйверов, пользовательского интерфейса (UI), модема и т.д. Таблица 214 может включать в себя криптографические хеш-дайджесты для индивидуальных страниц второго образа 222 кода. Второй образ 222 кода может включать в себя программные коды и/или данные, подлежащие загрузке из флэш-памяти 150 типа NAND после включения беспроводного устройства 100, например, коды для приложений более высоких уровней. Как правило, образ кода может включать в себя программные коды, данные и т.д.
x
x
r
r
r
x
r
r
x
x
Фиг.2 также изображает разработку процесса 200 для программирования сегмента 210 без страничной организации и сегмента 220 со страничной организацией флэш-памяти 150 типа NAND. Процесс 200 может выполняться во время производства флэш-памяти 150 типа NAND, подготовки к работе беспроводного устройства 100 и т.д. Разработка по фиг.2 использует два набора криптографических ключей: (1) набор секретного и открытого ключей для подписи и аутентификации сегмента 210 без страничной организации, которые упоминаются как секретный ключ  и открытый ключ , и (2) набор секретного и открытого ключей для аутентификации исходного объекта, которые упоминаются как корневой секретный ключ  и корневой открытый ключ . Корневой секретный ключ  и секретный ключ  представляют собой секрет и известны только исходному объекту, которым может быть поставщик исходного кода, производитель и т.д. Корневой открытый ключ  сделан доступным беспроводному устройству 100 и используется для верификации цифровых подписей, генерируемых при помощи корневого секретного ключа . Открытый ключ  используется для верификации цифровых подписей, сгенерированных при помощи секретного ключа , и может посылаться в сертификате 216.
x
r
cx
cx
x
r
Функция 232 подписи может генерировать цифровую подпись по открытому ключу  и, возможно, другой информации, используя корневой секретный ключ . Эта цифровая подпись может упоминаться как подпись  и может использоваться для аутентификации исходного объекта. Функция 232 подписи может реализовать алгоритм RSA (Райвеста, Шамира и Адлемана), алгоритм цифровой подписи (DSA) или некоторый другой криптографический алгоритм (цифровой подписи или шифрования). Генератор 234 сертификата может формировать сертификат, содержащий подпись , открытый ключ  и, возможно, другую информацию, такую как идентификатор исходного объекта, криптографический алгоритм, выбранный для использования, дата истечения срока действия сертификата и т.д. Этот сертификат может храниться в флэш-памяти 150 типа NAND в виде сертификата X.509 или в некотором другом формате, известном в технике. Корневой открытый ключ  может быть сделан доступным для беспроводного устройства 100 любым образом и может безопасно храниться в ROM 134 в беспроводном устройстве 100 на фиг.1.
В разработке, показанной на фиг.2, второй образ 222 кода может обрабатываться и сохраняться первым, а первый образ 212 кода может обрабатываться и сохраняться следующим. Блок 252 разделения на страницы может принимать и разделять второй образ 222 кода на страницы определенного размера (например, 4 KB) и может обеспечивать постраничную передачу на функцию 254 безопасного хеша и также на флэш-память 150 типа NAND. Функция 254 может хешировать каждую страницу от блока 252 посредством алгоритма безопасного хеша и обеспечивать хеш-дайджест для этой страницы. Функция 254 может реализовать SHA-1 (алгоритм безопасного хеша), SHA-2 (который включает в себя SHA-224, SHA-256, SHA-384 и SHA512), MD-4 (дайджест сообщений), MD-5 или некоторый другой алгоритм безопасного хеша, известный в технике. Алгоритм безопасного хеша имеет криптографические свойства, так что функция между входным сообщением и его дайджестом (который представляет собой псевдослучайную битовую строку) является необратимой, и очень мала вероятность отображения двух входных сообщений на одинаковый дайджест. Алгоритм безопасного хеша может принимать входное сообщение любой длины и может обеспечивать хеш-дайджест фиксированной длины. Генератор 256 таблиц может генерировать таблицу хеш-дайджестов для всех страниц второго образа 222 кода и может сохранять эту таблицу в виде таблицы 214 хеш-дайджестов в флэш-памяти 150 типа NAND.
x
x
x
Первый образ 212 кода может подаваться на мультиплексор (Mux) 242 и также сохраняться в флэш-памяти 150 типа NAND. Мультиплексор 242 также может принимать таблицу 214 хеш-дайджестов от генератора 256 и может последовательно подавать первый образ 212 кода и таблицу 214 хеш-дайджестов на функцию 244 безопасного хеша. Функция 244 может хешировать как первый образ 212 кода, так и таблицу 214 хеш-дайджестов посредством алгоритма безопасного хеша и может обеспечивать хеш-дайджест, который может называться дайджест . Функция 244 может реализовать SHA-1, SHA-2, MD-5 или некоторый другой алгоритм безопасного хеша. Функция 246 подписи может генерировать цифровую подпись по дайджесту , используя секретный ключ . Эта цифровая подпись может сохраняться в качестве цифровой подписи 218 в флэш-памяти 150 типа NAND. Функция 246 подписи может реализовать RSA, DSA или некоторый другой криптографический алгоритм. Функции 232 и 246 подписи могут реализовать эти же или другие криптографические алгоритмы.
Фиг.3 изображает разработку второго образа 222 кода и таблицы 214 хеш-дайджестов в флэш-памяти 150 типа NAND. В данной разработке второй образ 222 кода может разделяться на N страниц 0 - N-1, где N может представлять собой любое целое значение. Каждая страница кодов может хешироваться посредством алгоритма безопасного хеша (Хеш) для генерирования соответствующего хеш-дайджеста. Таблица 214 хеш-дайджестов может хранить N хеш-дайджестов для N страниц кодов.
r
cx
x
cx
r
x
cx
x
cx
Фиг.4 изображает разработку процесса 400 для загрузки и аутентификации сегмента 210 без страничной организации и сегмента 220 со страничной организацией флэш-памяти 150 типа NAND, согласно аспекту изобретения. Процесс 400 может выполняться при включении питания беспроводного устройства 100 и т.д. Функция 432 верификации может принимать сертификат 216 от флэш-памяти 150 типа NAND и корневой открытый ключ  от ROM 134 в беспроводном устройстве 100 на фиг.1. Функция 432 верификации может извлекать подпись  и открытый ключ  из сертификата 216, верифицировать подпись  посредством корневого открытого ключа  и обеспечивать открытый ключ , если подпись  верифицирована. Любая подделка сертификата  третьей стороной легко может обнаруживаться отсутствием верификации подписи .
x'
x'
x
x
x
x'
x
r
Мультиплексор 442 может принимать первый образ 212 кода и таблицу 214 хеш-дайджестов и может последовательно подавать обе части на функцию 444 безопасного хеша. Функция 444 может хешировать как первый образ 212 кода, так и таблицу 214 хеш-дайджестов и может обеспечивать хеш-дайджест, который может называться дайджест . Функция 444 может реализовать этот же алгоритм безопасного хеша, что и используемый функцией 244 безопасного хеша на фиг.2. Функция 446 верификации может принимать дайджест  от функции 444 безопасного хеша, цифровую подпись  от флэш-памяти 150 типа NAND и открытый ключ  от функции 432 верификации. Функция 446 верификации может верифицировать цифровую подпись 218 посредством открытого ключа  и дайджеста  и может указывать, верифицирована ли или нет цифровая подпись 218. Открытый ключ  аутентифицируется корневым открытым ключом . Следовательно, любая подделка цифровой подписи 218, первого образа 212 кода и/или таблицы 214 хеш-дайджестов третьей стороной легко может обнаруживаться отсутствием верификации цифровой подписи 218.
Если цифровая подпись 218 верифицирована, тогда первый образ 212 кода может предоставляться для использования, и таблица 214 хеш-дайджестов может сохраняться в таблице 456. Беспроводное устройство 100 может быть включено, если первый образ 212 кода был загружен из флэш-памяти 150 типа NAND в SDRAM 152. Если цифровая подпись 218 не верифицирована, тогда процесс загрузки может быть прерван, и может предоставляться сообщение с ошибкой.
y'
y'
y
y'
y
r
y
После включения беспроводного устройства 100 второй образ 222 кода может постранично загружаться из флэш-памяти 150 типа NAND в SDRAM 152 в виде фоновой задачи и/или по запросу, когда необходимо. Функция 454 безопасного хеша может хешировать страницу, извлеченную из флэш-памяти 150 типа NAND, и может обеспечивать хеш-дайджест  для извлеченной страницы. Функция 454 может реализовать такой же алгоритм безопасного хеша, что и используемый функцией 254 безопасного хеша на фиг.2. Функция 458 верификации может принимать хеш-дайджест  от функции 454 безопасного хеша и аутентифицированный хеш-дайджест  для извлеченной страницы из таблицы 456. Функция 458 верификации может сравнивать два хеш-дайджеста  и  и объявлять извлеченную страницу аутентифицированной, если совпадают два дайджеста. Таблица 214 хеш-дайджестов может аутентифицироваться посредством корневого открытого ключа . Криптографические свойства алгоритма безопасного хеша гарантируют, что очень мала вероятность отображения другой страницы на такой же хеш-дайджест . Следовательно, любая подделка страницы третьей стороной легко может обнаруживаться по несовпадению двух хеш-дайджестов. Извлеченная страница может предоставляться для использования, если совпадают хеш-дайджесты. Процесс загрузки может быть прерван, и может предоставляться сообщение с ошибкой, если хеш-дайджесты не совпадают.
Фиг.2-4 изображают одну разработку флэш-памяти 150 типа NAND, которая поддерживает прогрессивную начальную загрузку сегмента 210 без страничной организации и сегмента 220 со страничной организацией и дополнительно поддерживает аутентификацию образов кода, хранимых в сегментах 210 и 220. Как правило, флэш-память 150 типа NAND может хранить P образов кода в P сегментах со страничной организацией и Q образов кода в Q сегментах без страничной организации, где P и Q, каждый, может представлять собой любое целое значение, один или более. Образы кода из Q сегментов без страничной организации могут загружаться из флэш-памяти 150 типа NAND до включения беспроводного устройства 100. Образы кода из P сегментов со страничной организацией могут загружаться из флэш-памяти 150 типа NAND после включения беспроводного устройства 100.
Безопасность для образов кода, хранимых в сегментах без страничной организации и со страничной организацией, может осуществляться различным образом. Как правило, информация безопасности, используемая для аутентификации, может содержать один или несколько сертификатов, цифровых подписей, хеш-дайджестов и т.д. Информация безопасности, используемая для аутентификации образа кода из сегмента без страничной организации (или просто, образ кода без страничной организации), может храниться в этом сегменте без страничной организации, в обозначенном сегменте без страничной организации и т.д. Информация безопасности, используемая для аутентификации образа кода из сегмента со страничной организацией (или просто, образ кода со страничной организацией), может храниться в этом сегменте со страничной организацией, в другом сегменте со страничной организацией, в сегменте без страничной организации и т.д. Информация безопасности может обеспечиваться для каждой страницы образа кода со страничной организацией, позволяя отдельно выполнять загрузку и аутентификацию каждой страницы. Информация безопасности также может обеспечиваться для всего образа кода со страничной организацией. В одной разработке один сегмент без страничной организации может хранить информацию безопасности для всех сегментов без страничной организации и со страничной организацией, как описано выше. В другой разработке аутентификация может выполняться гирляндным образом, причем каждый сегмент хранит информацию безопасности для следующего сегмента, подлежащего загрузке. Аутентификация образов кода без страничной организации и со страничной организацией также может выполняться другими способами.
Для ясности, нижеследующее описание предполагает использование конструкции, показанной на фиг.2-4, и что флэш-память 150 типа NAND включает в себя сегмент 210 без страничной организации и сегмент 220 со страничной организацией. Сегмент 210 без страничной организации может включать в себя программные коды, которые поддерживают базовую функциональную возможность беспроводного устройства 100, коды для поддержки прогрессивной начальной загрузки и т.д. Сегмент 220 со страничной организацией может включать в себя остальные программные коды для беспроводного устройства 100.
Фиг.5 изображает разработку первого образа 212 кода, хранимого в сегменте 210 без страничной организации флэш-памяти 150 типа NAND. В этой разработке первый образ 212 кода включает в себя модули 510, которые поддерживают прогрессивную начальную загрузку, драйверы 530, коды 540 пользовательского интерфейса (UI) и коды 550 модема.
В модулях 510 заголовок 512 может включать в себя соответствующую информацию для флэш-памяти 150 типа NAND, такую как количество сегментов со страничной организацией и без страничной организации, начальный адрес и размер каждого сегмента, расположение заголовка каждого сегмента и т.д. Начальный загрузчик 514 может управлять загрузкой сегмента 210 без страничной организации из флэш-памяти 150 типа NAND в SDRAM 152. Драйвер 516 NAND может извлекать страницы из флэш-памяти 150 типа NAND и копировать эти страницы в SDRAM 152. Менеджер 518 памяти может управлять загрузкой сегмента 220 со страничной организацией из флэш-памяти 150 типа NAND в SDRAM 152 и может отслеживать, какие страницы второго образа 222 кода были загружены. Обработчик 520 аварийных завершений может обрабатывать ошибки из-за отсутствия страницы вследствие обращений к памяти к страницам второго образа 222 кода, которые не были загружены из флэш-памяти 150 типа NAND. Когда происходит ошибка из-за отсутствия страницы, обработчик 520 аварийных завершений может сохранить контекст текущей задачи и затем запросить обработчик 522 постраничного вывода на загрузку одной или нескольких страниц, включающих запрашиваемую страницу. Обработчик 522 постраничного вывода может обрабатывать фоновую страничную подкачку и страничную подкачку по запросу запрашиваемых страниц второго образа 222 кода из флэш-памяти 150 типа NAND. Начальный загрузчик 514 и обработчик 522 постраничного вывода могут запросить драйвер 516 NAND на извлечение заданных страниц из флэш-памяти 150 типа NAND и копирование этих страниц в SDRAM 152.
Драйверы 530 могут поддерживать устройства ввода/вывода (I/O), такие как жидкокристаллический дисплей (LCD), клавиатура, микрофон, громкоговоритель и т.д. Коды 540 UI могут поддерживать различные функции UI, такие как отображение анимации при включении питания, прием вводов с клавиатуры, отображение нажатых знаков на LCD и т.д. Коды 540 UI могут обеспечивать указание срока службы на беспроводном устройстве 100 и могут принимать пользовательские вводы, так что беспроводное устройство может восприниматься как работающее для пользователя. Коды 550 модема могут выполнять различные функции для поддержки радиосвязи, например, инициализация передатчика 114 и приемника 116, поиск беспроводных систем, инициирование и прием вызовов, выполнение обработки (например, кодирование и декодирование) для вызовов и т.д.
Фиг.5 изображает одну разработку сегмента 210 без страничной организации. Сегмент 210 без страничной организации также может включать в себя разные и/или другие модули, не показанные на фиг.5. Например, сегмент 210 без страничной организации может включать в себя коды заводского испытания, коды среды исполнения приложений (AEE) двоичной среды исполнения для беспроводных устройств (BREW) и т.д.
Фиг.6 изображает разработку SDRAM 152 на беспроводном устройстве 100 на фиг.1. Первый образ 212 кода может извлекаться из флэш-памяти 150 типа NAND и сохраняться в SDRAM 152 в течение первой части прогрессивной начальной загрузки. Страницы 0 - N-1 второго образа 222 кода могут извлекаться в любом порядке из флэш-памяти 150 типа NAND и сохраняться в надлежащем расположении SDRAM 152 в течение второй части прогрессивной начальной загрузки.
Фоновая загрузка второго образа 222 кода может начинаться после того, как первый образ 212 кода будет загружен в SDRAM 152. Для фоновой загрузки N страниц второго образа 222 кода могут извлекаться постранично и в последовательном порядке из флэш-памяти 150 типа NAND, аутентифицироваться и сохраняться в соответствующем месте SDRAM 152. Весь второй образ 222 кода может полностью загружаться в SDRAM 152 за определенное количество времени, которое может упоминаться как время вторичной загрузки. Фоновой загрузке может быть присвоен более низкий приоритет, чем другим задачам, выполняемым беспроводным устройством 100. Следовательно, время вторичной загрузки может быть переменным и может зависеть от различных факторов, таких как размер второго образа 222 кода, скорость пересылки между флэш-памятью 150 типа NAND и SDRAM 152, величина активности на беспроводном устройстве 100 и т.д.
Во время выполнения фоновой загрузки может выполняться обращение к странице второго образа 222 кода, которая еще не была загружена, и может иметь место ошибка из-за отсутствия страницы. Запрашиваемая страница может быть загружена по запросу из флэш-памяти 150 типа NAND и может предоставляться для использования. В одной разработке только запрашиваемая страница загружается из флэш-памяти 150 типа NAND. В другой разработке запрашиваемая страница и одна или несколько близлежащих страниц могут загружаться из флэш-памяти 150 типа NAND. Эта разработка может исключать повторные ошибки из-за отсутствия страницы и, следовательно, улучшать рабочие характеристики. После завершения подкачки по запросу запрашиваемой страницы может возобновляться фоновая загрузка остальных страниц второго образа 222 кода.
Менеджер 518 памяти может отслеживать, какие страницы второго образа 222 кода были загружены из флэш-памяти 150 типа NAND. Эта информация может использоваться для определения, хранится ли запрашиваемая страница в SDRAM 152 или должна извлекаться из флэш-памяти 150 типа NAND. Состояние загрузки страниц второго образа 222 кода может сохраняться различными способами.
Фиг.7 изображает разработку 2-уровневой структуры 700, которая может использоваться для определения, хранится ли данная страница второго образа 222 кода в SDRAM 152. В этой разработке 32-битовый адрес 702 памяти может включать в себя биты 0-31 и может иметь диапазон адресов 0-4 гигабайта (GB). Диапазон адресов может быть разделен на 4096 секций, причем каждая секция адресов охватывает один мегабайт (MB). Каждая секция адресов может охватывать 256 страниц, и каждая страница может составлять 4 KB.
Структура 700 может включать в себя одну главную таблицу 710 с 4096 элементами для 4096 секций адресов, один элемент для каждой секции адресов. Структура 700 дополнительно может включать в себя одну таблицу 720 страниц для каждой секции адресов. Каждая таблица страниц может включать в себя 256 элементов для 256 страниц, один элемент для каждой страницы.
В одной разработке главная таблица и таблицы страниц для всего второго образа 222 кода могут создаваться и инициализироваться перед загрузкой любой страницы второго образа 222 кода. Например, одна главная таблица и 64 таблицы страниц могут создаваться в SDRAM 152 для поддержки 64 MB виртуальной памяти для подкачки. Каждый элемент в главной таблице может включать в себя указатель на начало таблицы страниц, соответствующей этому элементу главной таблицы. 256 элементов каждой таблицы страниц могут инициализироваться заданным значением для указания, что 256 страниц, охватываемых этими элементами, не были загружены в SDRAM 152 (или отсутствие разрешения доступа к этим 256 страницам). Когда страница загружается из флэш-памяти 150 типа NAND в SDRAM 152, может устанавливаться таблица страниц, охватывающая эта страницу, и элемент для этой страницы может обновляться для указания, что страница была загружена в SDRAM 152.
Когда второй образ 222 кода загружается из флэш-памяти 150 типа NAND, может проверяться каждое обращение к памяти в SDRAM 152 для определения, хранится ли запрашиваемая страница в SDRAM 152. 12 старших битов (MSB) адреса памяти для обращения к памяти могут использоваться для обращения к элементу в главной таблице. Указатель из этого элемента главной таблицы может использоваться для определения начала таблицы страниц для секции адресов, охватывающей адрес памяти. 8 следующих MSB адресов памяти могут использоваться для определения элемента таблицы страниц для страницы, к которой происходит обращение. Этот элемент таблицы страниц может проверяться для определения, была ли загружена в SDRAM 152 страница, к которой происходит обращение. Если страница была загружена, тогда к SDRAM 152 можно обращаться для получения запрашиваемого программного кода или данных. Если страница не была загружена, тогда может уведомляться обработчик 520 аварийных завершений, и запрашиваемая страница может загружаться в SDRAM 152.
Главная таблица и таблицы страниц могут использоваться для определения, были ли загружены в SDRAM 152 индивидуальные страницы второго образа 222 кода. Может использоваться индикатор для указания, были ли загружены в SDRAM 152 все N страниц второго образа 222 кода. Этот индикатор может инициализироваться в одно значение (например, 0) и может устанавливаться на другое значение (например, 1), если все страницы второго образа 222 кода были загружены в SDRAM 152. Главная таблица и таблицы страниц могут удаляться после того, как будет загружен весь второй образ 222 кода.
Фиг.7 изображает одну разработку структуры 700 для определения, были ли загружены страницы второго образа 222 кода в SDRAM 152. Структура 700 может быть аналогична структуре, используемой для защиты памяти для отслеживания, какие страницы доступны. Структура 700, таким образом, может реализоваться и обновляться аналогичным образом, что и структура, используемая для защиты памяти.
Также могут использоваться различные другие структуры для отслеживания, какие страницы второго образа 222 кода были загружены в SDRAM 152. Например, может использоваться битовая карта, содержащая один бит для каждой страницы. Бит для каждой страницы может устанавливаться в одно значение (например, 0), если страница не была загружена в SDRAM 152, или в другое значение (например, 1), если страница была загружена.
Фиг.8 изображает разработку процесса 800 для программирования устройства памяти, например, во время фазы производства или подготовки к работе, согласно аспекту изобретения. Первая информация безопасности может генерироваться на основе первого образа кода и, возможно, другой информации (блок 812). Вторая информация безопасности может генерироваться на основе второго образа кода (блок 814). Первый образ кода может программироваться в устройство памяти, используемое для беспроводного устройства (блок 816). Первый образ кода может загружаться из устройства памяти для начальной загрузки беспроводного устройства и обеспечения работоспособности беспроводного устройства. Второй образ кода может программироваться в устройство памяти (блок 818). Второй образ кода может загружаться из устройства памяти, когда беспроводное устройство является работающим, для дальнейшей или полной начальной загрузки беспроводного устройства. Первая и вторая информация безопасности может программироваться в устройство памяти и может использоваться для аутентификации первого и второго образов кода, соответственно (блок 820).
В отношении блока 814, второй образ кода может разделяться на множество страниц, и каждая страница может хешироваться посредством алгоритма безопасного хеша для получения хеш-дайджеста для этой страницы. Таблица хеш-дайджестов для множества страниц может генерироваться и программироваться в устройство памяти в блоке 820. В отношении блока 812, цифровая подпись может генерироваться на основе первого образа кода, секретного ключа и таблицы хеш-дайджестов для второго образа кода. Может генерироваться сертификат, содержащий открытый ключ, соответствующий секретному ключу. Сертификат и цифровая подпись могут программироваться в устройство памяти в блоке 820.
Фиг.9 изображает разработку процесса 900 для выполнения прогрессивной начальной загрузки беспроводного устройства при включении питания согласно аспекту изобретения. Первый образ кода может загружаться из внешней памяти для начальной загрузки беспроводного устройства, например загружаться из флэш-памяти типа NAND в SDRAM (блок 912). Первая информация безопасности для первого образа кода может быть получена из внешней памяти (блок 914). Первый образ кода может аутентифицироваться на основе первой информации безопасности (блок 916). Беспроводное устройство может быть работоспособным после загрузки и аутентификации первого образа кода (блок 918). Будучи работающим, беспроводное устройство может быть способным обрабатывать вводы с клавиатуры, устанавливать вызовы с беспроводной системой и т.д.
Второй образ кода может загружаться из внешней памяти, когда беспроводное устройство является работающим, для дальнейшей начальной загрузки беспроводного устройства (блок 920). Вторая информация безопасности для второго образа кода может быть получена из внешней памяти (блок 922). Второй образ кода может аутентифицироваться на основе второй информации безопасности (блок 924). Может разрешаться исполнение второго образа кода, если он аутентифицирован (блок 926).
В отношении блока 920, второй образ кода может загружаться в качестве фоновой задачи и/или по запросу, когда беспроводное устройство является работающим. Для загрузки по запросу может приниматься обращение к памяти для страницы второго образа кода. Заданное количество страниц второго образа кода, включая страницу, к которой происходит обращение, может загружаться из внешней памяти в ответ на обращение к памяти.
Второй образ кода может содержать множество страниц, которые могут загружаться постранично из внешней памяти. Может выполняться ведение по меньшей мере одной таблицы для отслеживания страниц второго образа кода, которые были загружены, и страниц второго образа кода, которые не были загружены. Например, может выполняться ведение главной таблицы с многочисленными элементами для многочисленных диапазонов адресов. Также может выполняться ведение многочисленных таблиц страниц для многочисленных диапазонов адресов, одна таблица страниц для каждого диапазона адресов, причем каждая таблица страниц включает в себя многочисленные элементы для многочисленных страниц в диапазоне адресов для этой таблицы страниц. Каждый элемент главной таблицы может включать в себя указатель на соответствующую таблицу страниц. Каждый элемент соответствующей таблицы страниц может указывать, является ли ассоциированная таблица загруженной и доступной. Таблица(ы) может создаваться перед загрузкой второго образа кода и может удаляться после загрузки второго образа кода.
В отношении блока 916, первая информация безопасности может содержать сертификат и цифровую подпись. Сертификат может аутентифицироваться на основе корневого открытого ключа, который может безопасно храниться на беспроводном устройстве. Первый образ кода может аутентифицироваться на основе цифровой подписи и открытого ключа из сертификата. В отношении блока 924, вторая информация безопасности может содержать по меньшей мере один хеш-дайджест, который может аутентифицироваться на основе первой информации безопасности. Второй образ кода затем может аутентифицироваться на основе по меньшей мере одного хеш-дайджеста.
Фиг.10 изображает разработку процесса 1000 аутентификации образа кода согласно аспекту изобретения. Процесс 1000 может использоваться для блоков 920-924 на фиг.9. Множество страниц образа кода может извлекаться из внешней памяти, причем множество страниц ассоциируется с отдельной информацией безопасности (блок 1012). Множество страниц может извлекаться постранично или в заданном порядке (например, для фоновой загрузки), или в случайном порядке, определенном на основе обращений к памяти для страниц образа кода (например, для загрузки по запросу). Каждая страница, извлекаемая из внешней памяти, может аутентифицироваться на основе информации безопасности для этой страницы (блок 1014). В одной разработке таблица хеш-дайджестов для множества страниц может извлекаться из внешней памяти и аутентифицироваться. Каждая извлекаемая страница может хешироваться на основе алгоритма безопасного хеша для получения сгенерированного хеш-дайджеста для этой страницы. Извлекаемая страница может объявляться аутентифицированной, если сгенерированный хеш-дайджест совпадает с аутентифицированным хеш-дайджестом для страницы, который может быть из таблицы хеш-дайджестов.
Фиг.11 изображает блок-схему разработки программирующей станции 1100 для флэш-памяти 150 типа NAND согласно аспекту изобретения. Программирующая станция 1100 включает в себя контроллер/процессор 1110, память 1112, программирующие инструментальные средства 1114 и базу 1116 данных. Контроллер/процессор 1110 может выполнять безопасную обработку, показанную на фиг.2, и может дополнительно управлять работой программирующей станции 1100. Память 1112 может хранить данные и коды, используемые контроллером/процессором 1110. Программирующие инструментальные средства 1114 могут программировать флэш-память 150 типа NAND, например, как показано на фиг.2. База 1116 данных может хранить образы кода, подлежащие программированию в флэш-память 150 типа NAND, криптографические ключи и т.д. Программирующая станция 1100 может выполнять процесс 800 на фиг.8 и/или другие процессы для программирования памяти.
Для ясности, методы начальной загрузки были описаны для конфигурации памяти с флэш-памятью типа NAND и SDRAM. Методы начальной загрузки также могут использоваться для других конфигураций памяти и других типов памяти. Методы начальной загрузки дополнительно могут использоваться для любого количества образов кода без страничной организации и со страничной организацией, любого количества сегментов без страничной организации и со страничной организацией, любого размера страниц и т.д.
Методы начальной загрузки, описанные в данном документе, могут обеспечивать некоторые преимущества. Более короткое воспринимаемое время начальной загрузки может достигаться для загрузки памяти при включении питания. Это может приводить к более короткому времени заводского испытания, так как коды заводского испытания могут храниться в сегменте без страничной организации и могут загружаться первыми. Коды заводского испытания могут полагаться на ранней загрузке этих кодов и могут обладать взаимодействием испытательного оборудования с беспроводным устройством вскоре после включения питания, даже если беспроводное устройство не закончило процесс загрузки. Более короткое воспринимаемое время начальной загрузки может уменьшить количество времени, которое пользователь ожидает после включения питания, и может, таким образом, улучшить опыт взаимодействия пользователя.
Специалист в данной области техники понимает, что информация и сигналы могут представляться с использованием любой из многочисленных различных технологий и методов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и чипы, которые могут упоминаться в вышеупомянутом описании, могут представляться напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами или любой их комбинацией.
Специалист в данной области техники дополнительно оценит, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритма, описанные в связи с раскрытием в данном документе, могут быть реализованы в виде электронных аппаратных средств, компьютерных программных средств или их комбинацией. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных и программных средств, различные иллюстративные компоненты, блоки, модули, схемы и этапы были описаны выше, в основном, на языке их функциональных возможностей. Реализуется ли такая функциональная возможность в виде аппаратных средств или программных средств, зависит от конкретного применения и конструктивных ограничений, накладываемых на всю систему. Специалист в данной области техники может реализовать описанную функциональную возможность различными путями для каждого конкретного применения, но такие решения по реализации не должны интерпретироваться как вызывающие отступление от объема настоящего раскрытия.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытием в данном документе, могут быть реализованы в или выполнены посредством процессора общего назначения, процессора цифровой обработки сигналов (DSP), специализированной интегральной схемы (специализированной ИС), программируемой вентильной матрицы (FPGA) или другого программируемого логического устройства, дискретной вентильной или транзисторной логики, дискретных аппаратных компонентов или любых их комбинаций, предназначенных для выполнения функций, описанных в данном документе. Процессором общего назначения может быть микропроцессор, но, в альтернативе, процессором может быть любой обычный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может быть реализован в виде комбинации вычислительных устройств, например, комбинации DSP и микропроцессора, множества микропроцессоров, одного или нескольких микропроцессоров вместе с ядром DSP, или любой другой такой конфигурации.
Этапы способа или алгоритма, описанные в связи с раскрытием в данном документе, могут воплощаться непосредственно аппаратными средствами, программным модулем, исполняемым процессором или их комбинацией. Программный модуль может постоянно находиться в памяти оперативного запоминающего устройства (RAM), флэш-памяти, памяти ROM, памяти стираемого программируемого ROM (EPROM), памяти электрически стираемого программируемого ROM (EEPROM), регистрах, на жестком диске, съемном диске, компакт-диске или запоминающей среде любого другого вида, известного в технике. Примерная запоминающая среда связана с процессором, так что процессор может считывать информацию с запоминающей среды и записывать информацию на нее. В альтернативе, запоминающая среда может быть выполнена за одно целое с процессором. Процессор и запоминающая среда могут постоянно находиться в специализированной ИС. Специализированная ИС может постоянно находиться в пользовательском терминале. В альтернативе, процессор и запоминающая среда могут постоянно находиться в качестве дискретных компонентов в пользовательском терминале.
В одной или нескольких примерных разработках описанные функции могут быть реализованы аппаратными, программными, аппаратно-программными средствами или любой их комбинацией. Если они реализованы программными средствами, функции могут храниться или передаваться в виде одной или нескольких инструкций или кода на машиночитаемом носителе. Машиночитаемый носитель включает в себя как запоминающую среду компьютера, так и среду связи, включающую в себя любую среду, которая способствует пересылке компьютерной программы из одного места в другое. Запоминающая среда может представлять собой любую доступную среду, к которой может обращаться компьютер общего назначения или специального назначения. В качестве примера, и не ограничения, такой машиночитаемый носитель может содержать RAM, ROM, EEPROM, компакт-диск или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, или любую другую среду, которая может использоваться для переноса или хранения требуемого средства программного кода в виде инструкций или структур данных, и к которым может обращаться компьютер общего назначения или специального назначения или процессор общего назначения или специального назначения. Также любое соединение правильно называется машиночитаемым носителем. Например, если программные средства передаются с веб-сайта, сервера или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасные, радиочастотные и микроволновые, тогда коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радиочастотные и микроволновые, включаются в определение среды. Диск (disk) и диск (disc), как используется в данном документе, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой многофункциональный диск (DVD), дискету и диск Blu-ray (синелучевой диск), где диски (disk) обычно воспроизводят данные магнитным образом, тогда как диски (disc) воспроизводят данные оптическим образом при помощи лазеров. Комбинации вышеупомянутых также должны быть включены в объем машиночитаемых носителей.
Предыдущее описание раскрытия представлено для того, чтобы предоставить возможность любому специалисту в данной области техники выполнить или использовать раскрытие. Различные модификации раскрытия очевидны для специалиста в данной области техники, и обобщенные принципы, определенные в данном документе, могут быть применены к другим вариантам без отступления от объема раскрытия. Таким образом, раскрытие, как предполагается, не ограничивается примерами и разработками, показанными в данном документе, но должно соответствовать наибольшему объему, согласующемуся с принципами и новыми признаками, описанными в данном документе.