]> git.sur5r.net Git - openocd/blob - tcl/target/stm32l0.cfg
fc2751e9585081dd54e8d5179561962b96861712
[openocd] / tcl / target / stm32l0.cfg
1 #
2 # M0+ devices only have SW-DP, but swj-dp code works, just don't
3 # set any jtag related features
4 #
5
6 source [find target/swj-dp.tcl]
7
8 if { [info exists CHIPNAME] } {
9    set _CHIPNAME $CHIPNAME
10 } else {
11    set _CHIPNAME stm32l0
12 }
13
14 # Work-area is a space in RAM used for flash programming
15 # By default use 8kB (max ram on smallest part)
16 if { [info exists WORKAREASIZE] } {
17    set _WORKAREASIZE $WORKAREASIZE
18 } else {
19    set _WORKAREASIZE 0x2000
20 }
21
22 # JTAG speed should be <= F_CPU/6.
23 # F_CPU after reset is ~2MHz, so use F_JTAG max = 333kHz
24 adapter_khz 300
25
26 adapter_nsrst_delay 100
27
28 if { [info exists CPUTAPID] } {
29     set _CPUTAPID $CPUTAPID
30 } else {
31     # Arm, m0+, non-multidrop.
32     # http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16088.html
33     set _CPUTAPID 0x0bc11477
34 }
35
36 swj_newdap $_CHIPNAME cpu -expected-id $_CPUTAPID
37
38 set _TARGETNAME $_CHIPNAME.cpu
39 target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME
40
41 $_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
42
43 # flash size will be probed
44 set _FLASHNAME $_CHIPNAME.flash
45 flash bank $_FLASHNAME stm32lx 0x08000000 0 0 0 $_TARGETNAME
46
47 if {![using_hla]} {
48    # if srst is not fitted use SYSRESETREQ to
49    # perform a soft reset
50    cortex_m reset_config sysresetreq
51 }
52
53 proc stm32l0_enable_HSI16 {} {
54         # Enable HSI16 as clock source
55         echo "STM32L0: Enabling HSI16"
56
57         # Set HSI16ON in RCC_CR (leave MSI enabled)
58         mww 0x40021000 0x00000101
59
60         # Set HSI16 as SYSCLK (RCC_CFGR)
61         mww 0x4002100c 0x00000001
62
63         # Increase speed
64         adapter_khz 2500
65 }
66
67 $_TARGETNAME configure -event reset-init {
68         stm32l0_enable_HSI16
69 }
70
71 $_TARGETNAME configure -event reset-start {
72         adapter_khz 300
73 }