You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Каждый пример находится в директории установки комплекта разработчика Guardant (по умолчанию "Program Files\Guardant\SDK <версия>\DEMONVK\Samples\ARM"), в отдельной папке вида XX - SampleName, и состоит из двух частей:

  • Проект Visual Studio 2005 .NET в папке Win32, демонстрирующий использование Guardant API (т. е. необходимую инициализацию и запуск загруженного кода)
  • Пример загружаемого кода в папке Loadable Code, содержащий проект GCC-ARM в виде исходного кода на C и makefile. При сборке примера получаются *.bin и *.bmap файлы, которые необходимо указывать GrdUtil для генерации GCEXE-файла соответствующего алгоритма.

Структура используемого файла маски

Файл маски (Mask.nsd), используемый в примерах для ключей Guardant Code / Code Time, отличается от файла маски GrdUtil по умолчанию (default.nsd) и имеет следующую структуру, одинаковую для всех примеров:

  1. Алгоритм #0 AES128
  2. Алгоритм #01 SHA256
  3. Алгоритм #02 AES128, зависит от ID ключа
  4. Защищенная ячейка #03 – только для чтения
  5. Защищенная ячейка #04 – для чтения и записи
  6. Алгоритм #05 AES128 Demo
  7. Алгоритм #06 SHA256 Demo
  8. Защищенная ячейка #07 – Таблица лицензий
  9. Алгоритм #08 – ECC160
  10. Алгоритм #09 Загружаемый код №– Занимает 4 сектора. В него по очереди загружаются все примеры


По умолчанию файл маски Mask.nsd находится в директории "Program Files\Guardant\SDK <версия>\DEMONVK\Samples\ARM".

Важно!

Для корректной работы примеров Guardant Code необходимо записать Mask.nsd в ключ при помощи GrdUtil.

Краткая характеристика примеров

 

Важно!

Для корректной работы примеров Guardant Code необходимо записать Mask.nsd в ключ при помощи GrdUtil.

 

  1. Шаблон проекта загружаемого кода. На его основе можно разрабатывать собственные модули.
  2. Функция main(), возвращающая определенный код (демонстрация передачи параметров dwRet и dwP1).
  3. Демонстрация использования буферов ввода-вывода.
  4. Демонстрация работы необнуляемого буфера (внутренняя память). В одном вызове можно записать данные, а в следующем – считать обратно.
  5. Разделение загружаемого приложения на несколько логических частей (обработка команд).
  6. Управление индикатором. Демонстрация работы функций GcaLedOn()/GcaLedOff().
  7. Создание интерфейса к EEPROM. Обеспечивает чтение/запись участка в 512 байт EEPROM блоками по 16 байт. Блоки шифруются на AES-128 в режиме ECB, на ключе, хранящемся внутри загружаемого приложения.
  8. Демонстрация работы с защищенными ячейками. Проход по аппаратным алгоритмам и получение информации о них (сервисы времени, чтения, модификации, счетчик запусков).
  9. Модификация содержимого заданной защищенной ячейки.
  10. Демонстрация функций работы с таймером (только для Guardant Code Time). Получение текущего времени и валидности RTC. Функция установки времени отсутствует. Единственный способ установить время в электронном ключе – при помощи GrdUtil.
  11. Получение времени жизни защищенной ячейки.
  12. Функции криптографии. Демонстрация генерации ключевой пары, подписи и проверки этой подписи по ECC160 с возвратом всех буферов в PC.
  13. Использование аппаратного алгоритма для подписи.
  14. Подсчет хэша.
  15. Возврат блока случайных данных.
  16. Отличие форматов хранения чисел с плавающей точкой в GCC ARM и PC.
  17. Демонстрация использования встроенных математических функций.
  18. Пример реализации вычислительной задачи (вычисление заданной точки на кривой Безье порядка N, параметры кривой хранятся внутри загружаемой микропрограммы).
  19. Реализация целочисленной задачи. Шифрование на алгоритме Blowfish для блока данных на заданном ключе.
  20. Демонстрация использования отладочной библиотеки.Для запуска примера необходимо запустить проект Demo.sln

Пример демонстрирует, как можно использовать отладочную DLL в проектах. В подкаталоге LoadableCode содержится проект загружаемого модуля, который собирается в виде самостоятельного модуля, так и в составе проекта Demo.sln.
По умолчанию в проекте задано использование отладочной библиотеки, при этом код из файла lc.c собирается в составе VS-проекта. Если убрать опцию DEBUG_DLL и прошить в ключ маску из подпапки LoadableCode, код из файла lc.c будет выполняться уже внутри ключа. Как видно, в lc.c допустимо использование вызовов Guardant Code API.
Однако в случае исполнения в составе VS-проекта налагается ограничение на функцию GcaExit(), и она не вызовет выход из кода в lc.c.

Характеристики и вычислительные возможности Guardant Code

  1. Быстродействие 120 MIPS 32-битных операций
  2. 20 кб ОЗУ для программы пользователя
  3. Около 128 кб (с возможностью расширения до 352 кб) для программы пользователя (около 20000 строк на Си для варианта 128кб и около 60000 строк на Си для варианта 384 кб)
  4. Приблизительная скорость операций с плавающей точкой:
  • No labels