Опубликован: 04.08.2025 | Доступ: свободный | Студентов: 5 / 0 | Длительность: 01:52:00
Лекция 10:

Разработка и запуск программного обеспечения

< Лекция 9 || Лекция 10 || Лекция 11 >
Аннотация: Тема занятия: разработка простейшего программного обеспечения на базе имеющихся шаблонов кода.

Среда разработки и шаблон кода

В качестве среды разработки и шаблона кода удобно воспользоваться материалами разработчика ядра, размещенными по адресу http://syntacore.com/tools/development-tools

Алгоритм программы проверки для демонстрационного примера

Простейшая программа проверки для демонстрационного примера должна включать следующие шаги.

При разработке тестирующего ПО удобно воспользоваться контрольными примерами из [3, 4].

  1. Очистить ключи и начальные значения

    begin code example #define APB_BASE_ADDR 0x00010000
    #define CONTROL_REG_ADDR (APB_BASE_ADDR + 0x00) #define STATUS_REG_ADDR (APB_BASE_ADDR + 0x04) #define KEYPORT_ADDR (APB_BASE_ADDR + 0x08) #define IVPORT_ADDR (APB_BASE_ADDR + 0x0C) #define CTRPORT_ADDR (APB_BASE_ADDR + 0x10) #define RESERVED_ADDR (APB_BASE_ADDR + 0x14)
    
    void write_register(uint32_t addr, uint32_t data)
    {
    *(volatile uint32_t *)addr = data;
    }
    
    void reset_ip()
    {
    write_register(CONTROL_REG_ADDR, 0x13);
    }
    
    Reser_ip();
    end code example
    
  2. Записать ключ

    begin code example
    #define AES_KEY_SIZE 256 // Размер ключа 256 бит void write_key(uint32_t *key)
    {
    for (int i = 0; i < AES_KEY_SIZE / 32; i++)
    {
    write_register(KEYPORT_ADDR, *(uint32_t *)(key + i));
    }
    }
    uint8_t key[32] = {
    0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
    0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};
    write_key(key);
    
    end code example
    
  3. Дождаться прерывания по линии IRQ14 - завершение генерации ключа.
  4. Определить режим криптопреобразования через регистр управления
  5. Тип операции (зашифрование/расшифрование):

    • Если зашифрование, по адресу x"FF001000" записать x"XXXXXX0X".
    • Если расшифрование, по адресу x"FF001000" записать x"XXXXXX1X".
  6. Записать IV
  7. По адресу x"00030000" записать блок данных, открытых или зашифрованных в зависимости от типа операции.
  8. По адресу x"00030000" прочитать блок обработанных данных.
  9. Для обработки следующего блока перейти к п.4.
< Лекция 9 || Лекция 10 || Лекция 11 >