1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
source [find interface/stlink.cfg]
transport select hla_swd
set CHIPNAME STM32H7B0VBT6
if {![info exists OCTOSPI1]} { set OCTOSPI1 1 set OCTOSPI2 0 }
source [find target/stm32h7x.cfg]
reset_config none separate
proc octospi_init { octo } { global a b mmw 0x58024540 0x000006FF 0 ;# RCC_AHB4ENR |= GPIOAEN-GPIOKEN (enable clocks) mmw 0x58024534 0x00284000 0 ;# RCC_AHB3ENR |= IOMNGREN, OSPI2EN, OSPI1EN (enable clocks) sleep 1 ;# Wait for clock startup
mww 0x5200B404 0x03010111 ;# OCTOSPIM_P1CR: assign Port 1 to OCTOSPI1 mww 0x5200B408 0x00000000 ;# OCTOSPIM_P2CR: disable Port 2
mmw 0x58020400 0x00002020 0x00001010 ;# MODER mmw 0x58020408 0x00003030 0x00000000 ;# OSPEEDR mmw 0x5802040C 0x00000000 0x00003030 ;# PUPDR mmw 0x58020420 0x0A000900 0x05000600 ;# AFRL mmw 0x58020C00 0x0A800000 0x05400000 ;# MODER mmw 0x58020C08 0x0FC00000 0x00000000 ;# OSPEEDR mmw 0x58020C0C 0x00000000 0x0FC00000 ;# PUPDR mmw 0x58020C24 0x00999000 0x00666000 ;# AFRH mmw 0x58021000 0x00000020 0x00000010 ;# MODER mmw 0x58021008 0x00000030 0x00000000 ;# OSPEEDR mmw 0x5802100C 0x00000000 0x00000030 ;# PUPDR mmw 0x58021020 0x00000900 0x00000600 ;# AFRL
mww 0x52005000 0x3040000B ;# OCTOSPI_CR: FMODE=01, APMS=1, FTHRES=0, FSEL=0, DQM=0, TCEN=0 mww 0x52005008 0x00160100 ;# OCTOSPI_DCR1: MTYP=0x0, FSIZE=0x16=22=2^(22+1), CSHT=01, CKMODE=0, DLYBYP=0 mww 0x5200500C 0x00000001 ;# OCTOSPI_DCR2: WRAPSIZE=0, PRESCALER=0+1
mww 0x52005100 0x01002101 ;# OCTOSPI_CCR: SIOO=0, DMODE=001, ABSIZE=00, ABMODE=000, ADSIZE=10, ADMODE=001, ISIZE=0x0, IMODE=001 mww 0x52005108 0x00000000 ;# OCTOSPI_TCR: SSHIFT=0, DHQC=0, DCYC=0x0 mww 0x52005110 0x00000003 ;# OCTOSPI_IR: INSTR=ReadData, 0x03
sleep 1
flash probe $a ;# load configuration from CR, TCR, CCR, IR register values }
$_CHIPNAME.cpu0 configure -event reset-init { global OCTOSPI1 global OCTOSPI2
mmw 0x52002000 0x00000004 0x0000000B ;# FLASH_ACR: 4 WS for 64MHZ HCLK
mmw 0x58024400 0x00000001 0x00000018 ;# RCC_CR: HSIDIV=1, HSI on mww 0x58024418 0x00000040 ;# RCC_CDCFGR1: CDCPRE=1, CDPPRE=2, HPRE=1 mww 0x5802441C 0x00000440 ;# RCC_CDCFGR2: CDPPRE2=2, CDPPRE1=2 mww 0x58024420 0x00000040 ;# RCC_SRDCFGR: SRDPPRE=2 mww 0x58024428 0x00404040 ;# RCC_PLLCKSELR: DIVM3=4, DIVM2=4, DIVM1=4, PLLSRC=HSI mww 0x5802442C 0x01ff0ccc ;# RCC_PLLCFGR: PLLxRGE=8MHz to 16MHz, PLLxVCOSEL=wide mww 0x58024430 0x01010207 ;# RCC_PLL1DIVR: 64MHz: DIVR1=2, DIVQ1=2, DIVP1=2, DIVN1=8 mww 0x58024438 0x01010207 ;# RCC_PLL2DIVR: 64MHz: DIVR2=2, DIVQ2=2, DIVP2=2, DIVN2=8 mww 0x58024440 0x01010207 ;# RCC_PLL3DIVR: 64MHz: DIVR3=2, DIVQ3=2, DIVP3=2, DIVN3=8 mmw 0x58024400 0x01000000 0 ;# RCC_CR: PLL1ON=1 sleep 1 mmw 0x58024410 0x00000003 0 ;# RCC_CFGR: PLL1 as system clock sleep 1
adapter speed 4000
if { $OCTOSPI1 } { octospi_init 0 } }
|