Руководство пользователя Allwinner H616


  Описание      Система      Графика    Память    Ethernet    Видео    Аудио    Интерфейсы    Безопасность  

3. Система (System)

3.1. Отображение памяти

3.10. Контроллер термодатчика

3.11. Подключение периферийной системы PSI

3.12. Модуль управления памятью ввода-вывода IOMMU

3.13. Часы реального времени RTC

3.2. Конфигурация CPUX

3.3. Контроллер синхрогенератора

  3.4. Загрузочное ПЗУ (BROM)  

3.5. Конфигурация системы

3.6. Таймер

3.7. Таймер высокой скорости

3.8. Универсальный контроллер прерываний

3.9. Прямой доступ к памяти



Глава 3. Система - System
Раздел 3.4. Загрузочное ПЗУ (BROM) - BROM System

3.4. Системный загрузчик (BROM)


3.4.1. Обзор

У системы BROM есть несколько способов загрузки. Он имеет встроенное загрузочное ПЗУ (BROM), которое можно рассматривать как основной загрузчик программ. В процессе запуска SoC начинает получать первую инструкцию с адреса 0x0, где находится BROM.

Система BROM делится на две части: Firmware Exchange Launch (FEL) и Media Boot. Задача FEL - записать внешние данные в локальную энергонезависимую память (NVM), задача Media Boot - загрузить эффективный и законный BOOT0 из энергонезависимой памяти Non-Volatile Memory (NVM) и запустить его.

Система BROM включает в себя следующие функции:
  • Процесс загрузки CPU0
  • Обязательный процесс обновления через SMHC0, USB
  • Поддержка вывода GPIO или eFuse для выбора типа загрузочного носителя для загрузки
  • Поддерживает нормальную загрузку и безопасную загрузку
  • Поддерживает загрузку только сертифицированной прошивки
  • Гарантирует, что безопасная загрузка является надежной средой


    3.4.2. Операции и функциональные описания


    3.4.2.1

    Выбор загрузочного носителя

    Система BROM поддерживает следующие загрузочные носители:
  • SD / eMMC
  • Nand Flash
  • SPI NOR Flash
  • SPI NAND Flash

    Существует два способа выбора загрузки:

  • выбор контакта GPIO
  • выбор электронного предохранителя eFuse. При запуске BROM будет считывать состояние BOOT_MODE в соответствии с состоянием BOOT_MODE, чтобы решить, какой тип загрузочного носителя для загрузки использовать - вывод GPIO или eFuse.

    BOOT_MODE на самом деле совпадает с нулевым битом идентификатора безопасности (SID) т.е. BROM_CONFIG[0]

    В таблице показан параметр BOOT_MODE (BROM_CONFIG[0] at SID).


  • BOOT_MODE = 0 Boot Select Type = GPIO pin select
  • BOOT_MODE = 1 Boot Select Type = eFuse select


    3.4.2.1

    1. Выбор контакта GPIO

    Если состояние BOOT_MODE равно 0, то нужно выбрать вывод GPIO. В режиме вывода GPIO есть 5 бит для выбора загрузочного носителя для загрузки.

    Таблица 3-4. Конфигурация выбора загрузочного носителя по контакту GPIO

    Pin_Boot_Select [4: 0] (в 0x03000024 [13: 9]) | Загрузочный носитель | Примечание


  • 01111 SMHC0-> SPI_NAND
  • 10111 SMHC0-> SPI_NOR
  • 11011 SMHC0-> EMMC_BOOT-> EMMC_USER
  • 11101 SMHC0-> EMMC_USER-> EMMC_BOOT
  • 11110 SMHC0-> SLC_NAND Не поддерживается
  • 11111 SMHC0-> MLC_NAND

    Примечание

    Для микропроцессора H616 Boot_Select[0] зафиксирован на 1, поэтому носитель SLC_NAND Не поддерживается (For H616 package, Boot_Select[0] is fixed at 1, so the SLC_NAND media is not supported).

    2. Выбор электронного предохранителя (eFuse Select)

    Если состояние BOOT_MODE равно 1, то нужно выбрать тип eFuse. Тип eFuse имеет одну 12-битную конфигурацию eFuse_Boot_Select_Cfg[11:0] (at BROM_TRY[11:0] of SID module), при этом каждые 3 бита разделены на группу Boot Select, поэтому есть четыре группы boot_select.

    Таблица 3-5. Конфигурация выбора загрузки с помощью eFuse


  • eFuse_Boot_Select [2:0] - eFuse_Boot_Select_1
  • eFuse_Boot_Select [5:3] - eFuse_Boot_Select_2
  • eFuse_Boot_Select [8:6] - eFuse_Boot_Select_3
  • eFuse_Boot_Select [11:9] - eFuse_Boot_Select_4

    Таблица 3-6 описывает каждую группу настроек выбора загрузки eFuse. От первой группы до третьей группы те же настройки, но с четвертой группой нужно быть осторожным. Если для eFuse_Boot_Select_7 установлено значение 111, это означает, что это способ Try (Пробный). По пути Try идут SMHC0, SMHC2, Nand Flash, SPI NOR Flash, SPI NAND Flash.

    Таблица 3-6. Настройка выбора загрузки eFuse


  • eFuse_Boot_Select_n =000 Boot Media = Try (Пробный)
  • eFuse_Boot_Select_n =001 Boot Media = SLC NAND Flash
  • eFuse_Boot_Select_n =010 Boot Media = SMHC2
  • eFuse_Boot_Select_n =011 Boot Media = SPI NOR Flash
  • eFuse_Boot_Select_n =100 Boot Media = SPI NAND Flash
  • eFuse_Boot_Select_n =101 Boot Media = MLC NAND Flash
  • eFuse_Boot_Select_n =110 Boot Media = Reserved
  • eFuse_Boot_Select_n =111 Boot Media = Следующая группа eFuse_Boot_Select, но когда n равно 7, это будет способ Try.


    3.4.2.2

    BROM процесс

    В режиме нормальной загрузки загрузка системы начнется с CPU0. BROM прочитает регистр флага Hotplug в соответствии с флагом, следует ли выполнить соответствующий процесс.

    Наконец, BROM считывает состояние вывода FEL, если обнаруживается, что сигнал вывода FEL достигает высокого уровня, тогда система перейдет к процессу Try Media Boot или перейдет к процессу обязательного обновления.

    На рисунке 3-6 показан процесс BROM.

    Рисунок 3-6. Диаграмма процесса загрузки


    3.4.2.3

    Безопасный процесс BROM

    Secure (безопасная) BROM поддерживает следующие функции:
  • Поддерживает сертификат X509
  • Поддерживает криптографические алгоритмы: AES-128, SHA-256, RSA-2048, DES
  • Поддерживает OTP / eFuse

    Перед запуском безопасной загрузки программное обеспечение должно проверить, был ли он изменен или заменен, чтобы система проверила и проверила целостность сертификата, поскольку сертификат использовал подпись алгоритма RSA.

    В системе также используется аппаратный модуль Crypto Engine (CE) для ускорения шифрования и дешифрования. Использование стандартной криптографии гарантирует, что образам микропрограмм можно доверять, поэтому Secure BROM обеспечивает ожидаемое состояние безопасности системы.

    В режиме загрузки Security, по сравнению с обычным BROM, после завершения процесса Try Media Boot система перейдет к запуску программного обеспечения Security BROM.

    На рис. 3-7 показан процесс Secure BROM.

    Рисунок 3-7. Схема процесса безопасной загрузки BROM


    3.4.2.4

    Описание процесса BROM

    1. Обязательный процесс обновления

    Когда система выбирает, следует ли запускать процесс обязательного обновления, если обнаруживается, что сигнал FEL понижается до низкого уровня, то система переходит к процессу обязательного обновления.

    На рис. 3-8 показан процесс обязательного обновления.

    Рисунок 3-8 Процесс обязательного обновления

    Примечание

  • Адрес FEL нормального BROM - 0x20.
  • Адрес FEL безопасного BROM - 0x64.

    2. Процесс FEL - запуск замены прошивки (Firmware Exchange Launch)

    Когда система выбирает процесс обязательного обновления, система переходит к процессу FEL.

    На рис. 3-9 показан процесс обновления FEL.

    Рисунок 3-9. Процесс USB FEL.

    3. Процесс пробной загрузки с носителя

    Когда система выбирает, входит ли процесс обязательного обновления, если обнаруживается высокий уровень сигнала вывода FEL, система переходит к процессу пробной загрузки с носителя.

    Пробный Media Boot Process будет читать состояние регистра BOOT_MODE, состояние BOOT_MODE решает, загружаться с вывода GPIO или efuse. На рис. 3-10 показан процесс выбора загрузки по контакту GPIO.

    Рисунок 3-10. Процесс выбора загрузки по контакту GPIO.

    Примечание

    SMHC0 обычно является внешней SD/TF картой.

    SMHC2 обычно является внешним eMMC.


    На рис. 3-11 показан процесс выбора загрузки efuse.

    Рисунок 3-11. eFuse Boot Select Process - процесс выбора загрузки с помощью электронных предохранителей