-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenocd.flash
More file actions
85 lines (65 loc) · 2.66 KB
/
Copy pathopenocd.flash
File metadata and controls
85 lines (65 loc) · 2.66 KB
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
#which ports to use to provide telnet and gdb services
set CHIPNAME atsame70q21
set SAME70_MAX_FLASH_SECTOR_NUMBER 17; #18 Flash Sectors: 0...17
set SAME70_EFC_FCR 0x400E0C04; #Flash Command Register
set SAME70_SET_GPNVM_BIT1 0x5a00010b;
set SAME70_RSTC_CR 0x400E1800; #Reset Controller Control Register
set SAME70_SET_PROCRST 0xa5000009;
set SAME70_WDT_MR 0x400e1854; #Watchdog Mode Register
set SAME70_WDT_WDDIS 0x00008000; #Watchdog disable
set SAME70_CKGR_MOR 0x400e0620; #PMC Clock Generator Main Oscillator Register
set SAME70_CKGR_MOSCXTEN 0x00370809; # MOSCEN + OSCOUNT = 40
set SAME70_EEFC_FMR 0x400E0C00; #Flash Mode Register
set SAME70_EEFC_FMR_FWS 0x00000100; #Wait States Flash
telnet_port 4444
gdb_port 3333
version
#interface_list
echo -n "start openocd flasher\n "
#interface configuration
interface ftdi
transport select swd
ftdi_vid_pid 0x403 0x6010
ftdi_channel 0
#ftdi_serial "FTZ70800" #funktioniert nur, wenn im FTDI chip die passende device description steht!!!
adapter_khz 1000
adapter_nsrst_delay 200
#ftdi_layout_init 0x58 0x000b
ftdi_layout_init 0x58 0x0083; # "0" input; "1" output: Bit0 = SWCLK (output); Bit1 = TDI (output); Bit2 = SWDIO (input) -> 011
ftdi_layout_signal SWD_EN -data 0
ftdi_layout_signal Prog -data 0x0080
#ftdi_layout_signal nSRST -data 0x0010
#ftdi_layout_signal nRST -data 0x0040
sleep 10
set _CHIPNAME CHIPNAME;
set _ENDIAN little;
set _WORKAREASIZE 4000;
set _CPUTAPID 0x0bd11477;
set _TARGETNAME $_CHIPNAME.cpu;
eval swd newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
$_TARGETNAME configure -work-area-phys 0x20400000 -work-area-size $_WORKAREASIZE -work-area-backup 0
cortex_m reset_config sysresetreq
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME atsamv 0x00400000 0 0 0 $_TARGETNAME
init
ftdi_set_signal Prog 0 #OPENOCD LED on
reset
halt
flash probe 0
mww $SAME70_CKGR_MOR $SAME70_CKGR_MOSCXTEN; # Initialize main oscillator
mww $SAME70_WDT_MR $SAME70_WDT_WDDIS; # disable watchdog
mww $SAME70_EEFC_FMR $SAME70_EEFC_FMR_FWS; # flash wait states
#sleep 1000
#flash erase_sector 0 0 $SAME70_MAX_FLASH_SECTOR_NUMBER
#sleep 1000
#echo -n "write flash start\n "
flash write_image erase unlock target/thumbv7em-none-eabihf/release/cortex-test.bin 0x00400000
echo -n "enable boot from flash\n "
mww $SAME70_EFC_FCR $SAME70_SET_GPNVM_BIT1; # enable boot from flash
#flash verify_bank 0 ../DEBUG/CORTEX_TEST.bin 0
echo -n "reset processor\n "
reset
echo -n "openocd flasher shutdown\n "
ftdi_set_signal Prog 1
shutdown