Прогрессивная начальная загрузка для беспроводного устройства

Иллюстрации

Показать все

Изобретение относится к области начальной загрузки беспроводного устройства при включении питания. Техническим результатом является уменьшение времени начальной загрузки для беспроводного устройства. Программные коды, подлежащие сохранению в энергонезависимой памяти большого объема, могут разделяться на множество образов кода. Первый образ кода может включать в себя программные коды, используемые для поддержки базовых функциональных возможностей беспроводного устройства. Второй образ кода может включать в себя остальные программные коды. Для прогрессивной начальной загрузки первый образ кода может загружаться первым из энергонезависимой памяти большого объема. Когда первый образ кода будет загружен, беспроводное устройство может быть работоспособным и может выглядеть функционирующим для пользователя. Когда беспроводное устройство является работающим, второй образ кода может загружаться из энергонезависимой памяти большого объема в качестве фоновой задачи и/или по запросу, когда необходимо. 8 н. и 36 з.п. ф-лы, 11 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

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, например, коды для приложений более высоких уровней. Как правило, образ кода может включать в себя программные коды, данные и т.д.

Фиг.2 также изображает разработку процесса 200 для программирования сегмента 210 без страничной организации и сегмента 220 со страничной организацией флэш-памяти 150 типа NAND. Процесс 200 может выполняться во время производства флэш-памяти 150 типа NAND, подготовки к работе беспроводного устройства 100 и т.д. Разработка по фиг.2 использует два набора криптографических ключей: (1) набор секретного и открытого ключей для подписи и аутентификации сегмента 210 без страничной организации, которые упоминаются как секретный ключ x и открытый ключ x, и (2) набор секретного и открытого ключей для аутентификации исходного объекта, которые упоминаются как корневой секретный ключ r и корневой открытый ключ r. Корневой секретный ключ r и секретный ключ x представляют собой секрет и известны только исходному объекту, которым может быть поставщик исходного кода, производитель и т.д. Корневой открытый ключ r сделан доступным беспроводному устройству 100 и используется для верификации цифровых подписей, генерируемых при помощи корневого секретного ключа r. Открытый ключ x используется для верификации цифровых подписей, сгенерированных при помощи секретного ключа x, и может посылаться в сертификате 216.

Функция 232 подписи может генерировать цифровую подпись по открытому ключу x и, возможно, другой информации, используя корневой секретный ключ r. Эта цифровая подпись может упоминаться как подпись cx и может использоваться для аутентификации исходного объекта. Функция 232 подписи может реализовать алгоритм RSA (Райвеста, Шамира и Адлемана), алгоритм цифровой подписи (DSA) или некоторый другой криптографический алгоритм (цифровой подписи или шифрования). Генератор 234 сертификата может формировать сертификат, содержащий подпись cx, открытый ключ x и, возможно, другую информацию, такую как идентификатор исходного объекта, криптографический алгоритм, выбранный для использования, дата истечения срока действия сертификата и т.д. Этот сертификат может храниться в флэш-памяти 150 типа NAND в виде сертификата X.509 или в некотором другом формате, известном в технике. Корневой открытый ключ r может быть сделан доступным для беспроводного устройства 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.

Первый образ 212 кода может подаваться на мультиплексор (Mux) 242 и также сохраняться в флэш-памяти 150 типа NAND. Мультиплексор 242 также может принимать таблицу 214 хеш-дайджестов от генератора 256 и может последовательно подавать первый образ 212 кода и таблицу 214 хеш-дайджестов на функцию 244 безопасного хеша. Функция 244 может хешировать как первый образ 212 кода, так и таблицу 214 хеш-дайджестов посредством алгоритма безопасного хеша и может обеспечивать хеш-дайджест, который может называться дайджест x. Функция 244 может реализовать SHA-1, SHA-2, MD-5 или некоторый другой алгоритм безопасного хеша. Функция 246 подписи может генерировать цифровую подпись по дайджесту x, используя секретный ключ x. Эта цифровая подпись может сохраняться в качестве цифровой подписи 218 в флэш-памяти 150 типа NAND. Функция 246 подписи может реализовать RSA, DSA или некоторый другой криптографический алгоритм. Функции 232 и 246 подписи могут реализовать эти же или другие криптографические алгоритмы.

Фиг.3 изображает разработку второго образа 222 кода и таблицы 214 хеш-дайджестов в флэш-памяти 150 типа NAND. В данной разработке второй образ 222 кода может разделяться на N страниц 0 - N-1, где N может представлять собой любое целое значение. Каждая страница кодов может хешироваться посредством алгоритма безопасного хеша (Хеш) для генерирования соответствующего хеш-дайджеста. Таблица 214 хеш-дайджестов может хранить N хеш-дайджестов для N страниц кодов.

Фиг.4 изображает разработку процесса 400 для загрузки и аутентификации сегмента 210 без страничной организации и сегмента 220 со страничной организацией флэш-памяти 150 типа NAND, согласно аспекту изобретения. Процесс 400 может выполняться при включении питания беспроводного устройства 100 и т.д. Функция 432 верификации может принимать сертификат 216 от флэш-памяти 150 типа NAND и корневой открытый ключ r от ROM 134 в беспроводном устройстве 100 на фиг.1. Функция 432 верификации может извлекать подпись cx и открытый ключ x из сертификата 216, верифицировать подпись cx посредством корневого открытого ключа r и обеспечивать открытый ключ x, если подпись cx верифицирована. Любая подделка сертификата x третьей стороной легко может обнаруживаться отсутствием верификации подписи cx.

Мультиплексор 442 может принимать первый образ 212 кода и таблицу 214 хеш-дайджестов и может последовательно подавать обе части на функцию 444 безопасного хеша. Функция 444 может хешировать как первый образ 212 кода, так и таблицу 214 хеш-дайджестов и может обеспечивать хеш-дайджест, который может называться дайджест x'. Функция 444 может реализовать этот же алгоритм безопасного хеша, что и используемый функцией 244 безопасного хеша на фиг.2. Функция 446 верификации может принимать дайджест x' от функции 444 безопасного хеша, цифровую подпись x от флэш-памяти 150 типа NAND и открытый ключ x от функции 432 верификации. Функция 446 верификации может верифицировать цифровую подпись 218 посредством открытого ключа x и дайджеста x' и может указывать, верифицирована ли или нет цифровая подпись 218. Открытый ключ x аутентифицируется корневым открытым ключом r. Следовательно, любая подделка цифровой подписи 218, первого образа 212 кода и/или таблицы 214 хеш-дайджестов третьей стороной легко может обнаруживаться отсутствием верификации цифровой подписи 218.

Если цифровая подпись 218 верифицирована, тогда первый образ 212 кода может предоставляться для использования, и таблица 214 хеш-дайджестов может сохраняться в таблице 456. Беспроводное устройство 100 может быть включено, если первый образ 212 кода был загружен из флэш-памяти 150 типа NAND в SDRAM 152. Если цифровая подпись 218 не верифицирована, тогда процесс загрузки может быть прерван, и может предоставляться сообщение с ошибкой.

После включения беспроводного устройства 100 второй образ 222 кода может постранично загружаться из флэш-памяти 150 типа NAND в SDRAM 152 в виде фоновой задачи и/или по запросу, когда необходимо. Функция 454 безопасного хеша может хешировать страницу, извлеченную из флэш-памяти 150 типа NAND, и может обеспечивать хеш-дайджест y' для извлеченной страницы. Функция 454 может реализовать такой же алгоритм безопасного хеша, что и используемый функцией 254 безопасного хеша на фиг.2. Функция 458 верификации может принимать хеш-дайджест y' от функции 454 безопасного хеша и аутентифицированный хеш-дайджест y для извлеченной страницы из таблицы 456. Функция 458 верификации может сравнивать два хеш-дайджеста y' и y и объявлять извлеченную страницу аутентифицированной, если совпадают два дайджеста. Таблица 214 хеш-дайджестов может аутентифицироваться посредством корневого открытого ключа r. Криптографические свойства алгоритма безопасного хеша гарантируют, что очень мала вероятность отображения другой страницы на такой же хеш-дайджест y. Следовательно, любая подделка страницы третьей стороной легко может обнаруживаться по несовпадению двух хеш-дайджестов. Извлеченная страница может предоставляться для использования, если совпадают хеш-дайджесты. Процесс загрузки может быть прерван, и может предоставляться сообщение с ошибкой, если хеш-дайджесты не совпадают.

Фиг.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 се