Опубликован: 04.08.2025 | Доступ: свободный | Студентов: 5 / 0 | Длительность: 01:52:00
Тема: Программирование
Лекция 10:
Разработка и запуск программного обеспечения
< Лекция 9 || Лекция 10 || Лекция 11 >
Аннотация: Тема занятия: разработка простейшего программного обеспечения на базе имеющихся шаблонов кода.
Среда разработки и шаблон кода
В качестве среды разработки и шаблона кода удобно воспользоваться материалами разработчика ядра, размещенными по адресу http://syntacore.com/tools/development-tools
Алгоритм программы проверки для демонстрационного примера
Простейшая программа проверки для демонстрационного примера должна включать следующие шаги.
При разработке тестирующего ПО удобно воспользоваться контрольными примерами из [3, 4].
-
Очистить ключи и начальные значения
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
-
Записать ключ
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
- Дождаться прерывания по линии IRQ14 - завершение генерации ключа.
- Определить режим криптопреобразования через регистр управления
-
Тип операции (зашифрование/расшифрование):
- Если зашифрование, по адресу x"FF001000" записать x"XXXXXX0X".
- Если расшифрование, по адресу x"FF001000" записать x"XXXXXX1X".
- Записать IV
- По адресу x"00030000" записать блок данных, открытых или зашифрованных в зависимости от типа операции.
- По адресу x"00030000" прочитать блок обработанных данных.
- Для обработки следующего блока перейти к п.4.
< Лекция 9 || Лекция 10 || Лекция 11 >