123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- #include <stdint.h>
- #include "fsl_device_registers.h"
- #include "fsl_common.h"
- #include "fsl_clock.h"
- #include "fsl_debug_console.h"
- #include "fsl_hashcrypt.h"
- #include "fsl_power.h"
- #include "fsl_iocon.h"
- #include "lpc55s6x_hal.h"
- extern uint32_t SystemCoreClock;
- void platform_init(void)
- {
-
- SysTick->CTRL = 0;
-
- SYSCON->CLKOUTSEL = 0;
- SYSCON->CLKOUTDIV = 0;
-
-
- CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
- BOARD_InitPins();
-
- BOARD_InitBootClocks();
-
- RNG_Init(RNG);
- }
- void init_uart(void)
- {
- BOARD_InitDebugConsole();
- }
- void putch(char c)
- {
- DbgConsole_Putchar(c);
- }
- char getch()
- {
- return DbgConsole_Getchar();
- }
- void BOARD_InitDebugConsole(void)
- {
- RESET_ClearPeripheralReset(BOARD_DEBUG_UART_RST);
- uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ;
- DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq);
- }
- void BOARD_InitDebugConsole_Core1(void)
- {
- RESET_ClearPeripheralReset(BOARD_DEBUG_UART_RST_CORE1);
- uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ_CORE1;
- DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE_CORE1, BOARD_DEBUG_UART_BAUDRATE_CORE1, BOARD_DEBUG_UART_TYPE_CORE1,
- uartClkSrcFreq);
- }
- void BOARD_InitBootClocks(void)
- {
- #ifndef SDK_SECONDARY_CORE
-
-
- POWER_DisablePD(kPDRUNCFG_PD_FRO192M);
- CLOCK_SetupFROClocking(12000000U);
- CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);
- CLOCK_SetupFROClocking(96000000U);
- POWER_DisablePD(kPDRUNCFG_PD_XTAL32M);
- POWER_DisablePD(kPDRUNCFG_PD_LDOXO32M);
- CLOCK_SetupExtClocking(16000000U);
- SYSCON->CLOCK_CTRL |= SYSCON_CLOCK_CTRL_CLKIN_ENA_MASK;
- ANACTRL->XO32M_CTRL |= ANACTRL_XO32M_CTRL_ENABLE_SYSTEM_CLK_OUT_MASK;
- while((ANACTRL->XO32M_STATUS & ANACTRL_XO32M_STATUS_XO_READY_MASK) == 0);
- CLOCK_SetFLASHAccessCyclesForFreq(16000000U);
-
- CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false);
-
- CLOCK_AttachClk(kEXT_CLK_to_MAIN_CLK);
-
- SystemCoreClock = 16000000U;
- #endif
- }
- void BOARD_BootClockFRO12M(void)
- {
- #ifndef SDK_SECONDARY_CORE
-
-
- POWER_DisablePD(kPDRUNCFG_PD_FRO192M);
- CLOCK_SetupFROClocking(12000000U);
- CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);
- CLOCK_SetupFROClocking(96000000U);
- CLOCK_SetFLASHAccessCyclesForFreq(12000000U);
-
- CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false);
-
- CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);
-
- SystemCoreClock = BOARD_BOOTCLOCKFRO12M_CORE_CLOCK;
- #endif
- }
- void BOARD_InitPins(void)
- {
-
- CLOCK_EnableClock(kCLOCK_Iocon);
- const uint32_t port0_pin29_config = (
- IOCON_PIO_FUNC1 |
-
- IOCON_PIO_MODE_INACT |
-
- IOCON_PIO_SLEW_STANDARD |
-
- IOCON_PIO_INV_DI |
-
- IOCON_PIO_DIGITAL_EN |
-
- IOCON_PIO_OPENDRAIN_DI);
-
- IOCON_PinMuxSet(IOCON, 0U, 29U, port0_pin29_config);
- const uint32_t port0_pin30_config = (
- IOCON_PIO_FUNC1 |
-
- IOCON_PIO_MODE_INACT |
-
- IOCON_PIO_SLEW_STANDARD |
-
- IOCON_PIO_INV_DI |
-
- IOCON_PIO_DIGITAL_EN |
-
- IOCON_PIO_OPENDRAIN_DI);
-
- IOCON_PinMuxSet(IOCON, 0U, 30U, port0_pin30_config);
-
- const uint32_t port0_pin24_config = (
-
- IOCON_PIO_SLEW_STANDARD |
-
- IOCON_PIO_INV_DI |
-
- IOCON_PIO_DIGITAL_EN |
-
- IOCON_PIO_OPENDRAIN_DI);
- IOCON_PinMuxSet(IOCON, 0U, 24U, port0_pin24_config);
- const uint32_t port1_pin27_config = (
-
- IOCON_PIO_SLEW_STANDARD |
- 0x04 |
-
- IOCON_PIO_INV_DI |
-
- IOCON_PIO_DIGITAL_EN |
-
- IOCON_PIO_OPENDRAIN_DI);
- IOCON_PinMuxSet(IOCON, 1U, 27U, port1_pin27_config);
- }
- void trigger_setup(void)
- {
- gpio_pin_config_t pinconfig = { kGPIO_DigitalOutput, 0, };
- GPIO_PinInit(GPIO, 0, 24, &pinconfig);
- }
- void trigger_low(void)
- {
- GPIO_PinWrite(GPIO, 0, 24, 0);
- }
- void trigger_high(void)
- {
- GPIO_PinWrite(GPIO, 0, 24, 1);
- }
- uint32_t get_rand(void)
- {
- uint32_t value;
- RNG_GetRandomData(RNG, &value, sizeof(value));
- return value;
- }
- void HW_AES128_Init(void)
- {
- }
- static hashcrypt_handle_t hch;
- void HW_AES128_LoadKey(uint8_t* key)
- {
- hch.keySize = kHASHCRYPT_Aes128;
- hch.keyType = kHASHCRYPT_UserKey;
- HASHCRYPT_AES_SetKey(HASHCRYPT, &hch, key, 16);
- }
- void HW_AES128_Enc_pretrigger(uint8_t* pt)
- {
- }
- void HW_AES128_Enc(uint8_t* pt)
- {
- HASHCRYPT_AES_EncryptEcb(HASHCRYPT, &hch, pt, pt, 16);
- }
- void HW_AES128_Enc_posttrigger(uint8_t* pt)
- {
- }
- void HW_AES128_Dec(uint8_t *pt)
- {
- HASHCRYPT_AES_DecryptEcb(HASHCRYPT, &hch, pt, pt, 16);
- }
|