# -------------------------- # PM register offset # -------------------------- PM_BASE_ADDRESS = 0x000050000 PM_Clk_AHB_Set_OFFSET = 0x0C PM_Clk_APB_M_Set_OFFSET = 0x14 PM_Clk_APB_P_Set_OFFSET = 0x1C # -------------------------- # PM register fields # -------------------------- # AHB BUS PM_CLOCK_CPU_S = 0 PM_CLOCK_CPU_M = (1 << PM_CLOCK_CPU_S) PM_CLOCK_EEPROM_S = 1 PM_CLOCK_EEPROM_M = (1 << PM_CLOCK_EEPROM_S) PM_CLOCK_RAM_S = 2 PM_CLOCK_RAM_M = (1 << PM_CLOCK_RAM_S) PM_CLOCK_SPIFI_S = 3 PM_CLOCK_SPIFI_M = (1 << PM_CLOCK_SPIFI_S) PM_CLOCK_TCB_S = 4 PM_CLOCK_TCB_M = (1 << PM_CLOCK_TCB_S) PM_CLOCK_DMA_S = 5 PM_CLOCK_DMA_M = (1 << PM_CLOCK_DMA_S) PM_CLOCK_CRYPTO_S = 6 PM_CLOCK_CRYPTO_M = (1 << PM_CLOCK_CRYPTO_S) PM_CLOCK_CRC32_S = 7 PM_CLOCK_CRC32_M = (1 << PM_CLOCK_CRC32_S) # APB M PM_CLOCK_PM_S = 0 PM_CLOCK_PM_M = (1 << PM_CLOCK_PM_S) PM_CLOCK_EPIC_S = 1 PM_CLOCK_EPIC_M = (1 << PM_CLOCK_EPIC_S) PM_CLOCK_TIMER32_0_S = 2 PM_CLOCK_TIMER32_0_M = (1 << PM_CLOCK_TIMER32_0_S) PM_CLOCK_GPIO_S = 3 PM_CLOCK_GPIO_M = (1 << PM_CLOCK_GPIO_S) PM_CLOCK_WDT_BUS_S = 4 PM_CLOCK_WDT_BUS_M = (1 << PM_CLOCK_WDT_BUS_S) PM_CLOCK_OTP_S = 5 PM_CLOCK_OTP_M = (1 << PM_CLOCK_OTP_S) PM_CLOCK_PMON_S = 6 PM_CLOCK_PMON_M = (1 << PM_CLOCK_PMON_S) PM_CLOCK_WU_S = 7 PM_CLOCK_WU_M = (1 << PM_CLOCK_WU_S) PM_CLOCK_RTC_S = 8 PM_CLOCK_RTC_M = (1 << PM_CLOCK_RTC_S) # APB_P PM_CLOCK_WDT_S = 0 PM_CLOCK_WDT_M = (1 << PM_CLOCK_WDT_S) PM_CLOCK_UART_0_S = 1 PM_CLOCK_UART_0_M = (1 << PM_CLOCK_UART_0_S) PM_CLOCK_UART_1_S = 2 PM_CLOCK_UART_1_M = (1 << PM_CLOCK_UART_1_S) PM_CLOCK_TIMER16_0_S = 3 PM_CLOCK_TIMER16_0_M = (1 << PM_CLOCK_TIMER16_0_S) PM_CLOCK_TIMER16_1_S = 4 PM_CLOCK_TIMER16_1_M = (1 << PM_CLOCK_TIMER16_1_S) PM_CLOCK_TIMER16_2_S = 5 PM_CLOCK_TIMER16_2_M = (1 << PM_CLOCK_TIMER16_2_S) PM_CLOCK_TIMER32_1_S = 6 PM_CLOCK_TIMER32_1_M = (1 << PM_CLOCK_TIMER32_1_S) PM_CLOCK_TIMER32_2_S = 7 PM_CLOCK_TIMER32_2_M = (1 << PM_CLOCK_TIMER32_2_S) PM_CLOCK_SPI_0_S = 8 PM_CLOCK_SPI_0_M = (1 << PM_CLOCK_SPI_0_S) PM_CLOCK_SPI_1_S = 9 PM_CLOCK_SPI_1_M = (1 << PM_CLOCK_SPI_1_S) PM_CLOCK_I2C_0_S = 10 PM_CLOCK_I2C_0_M = (1 << PM_CLOCK_I2C_0_S) PM_CLOCK_I2C_1_S = 11 PM_CLOCK_I2C_1_M = (1 << PM_CLOCK_I2C_1_S) PM_CLOCK_GPIO_0_S = 12 PM_CLOCK_GPIO_0_M = (1 << PM_CLOCK_GPIO_0_S) PM_CLOCK_GPIO_1_S = 13 PM_CLOCK_GPIO_1_M = (1 << PM_CLOCK_GPIO_1_S) PM_CLOCK_GPIO_2_S = 14 PM_CLOCK_GPIO_2_M = (1 << PM_CLOCK_GPIO_2_S) PM_CLOCK_ANALOG_S = 15 PM_CLOCK_ANALOG_M = (1 << PM_CLOCK_ANALOG_S) PM_CLOCK_GPIO_IRQ_S = 16 PM_CLOCK_GPIO_IRQ_M = (1 << PM_CLOCK_GPIO_IRQ_S) # -------------------------- # WU register offset # -------------------------- WU_BASE_ADDRESS = 0x00060000 WU_CLOCKS_BU_OFFSET = 0x10 # -------------------------- # WU register fields # -------------------------- # CLOCKS_BU def pm_init(): openocd.write_word(WU_BASE_ADDRESS + WU_CLOCKS_BU_OFFSET, 0x202) openocd.write_word(PM_BASE_ADDRESS + PM_Clk_APB_P_Set_OFFSET, 0xffffffff) openocd.write_word(PM_BASE_ADDRESS + PM_Clk_APB_M_Set_OFFSET, 0xffffffff) openocd.write_word(PM_BASE_ADDRESS + PM_Clk_AHB_Set_OFFSET, 0xffffffff)