]> git.sur5r.net Git - openocd/blob - src/target/target/zy1000.cfg
Rick Altherr <kc8apf@kc8apf.net> - update syntax
[openocd] / src / target / target / zy1000.cfg
1 #Script for ZY1000
2
3 #Atmel ties SRST & TRST together, at which point it makes
4 #no sense to use TRST, but use TMS instead.
5 #
6 #The annoying thing with tying SRST & TRST together is that
7 #there is no way to halt the CPU *before and during* the
8 #SRST reset, which means that the CPU will run a number
9 #of cycles before it can be halted(as much as milliseconds).
10 reset_config srst_only srst_pulls_trst
11  
12 #jtag scan chain
13 #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
14 jtag_device 4 0x1 0xf 0xe
15
16 target create target0 arm7tdmi -endian little -chain-position 0 -variant arm7tdmi-s_r4
17
18 # at CPU CLK <32kHz this must be disabled
19 arm7_9 fast_memory_access enable
20 arm7_9 dcc_downloads enable
21
22 flash bank ecosflash 0x01000000 0x200000 2 2 0 ecos/at91eb40a.elf
23 [new_target_name] configure -event reset-init { 
24         # Set up chip selects & timings
25         mww 0xFFE00000 0x0100273D
26         mww 0xFFE00004 0x08002125
27         mww 0xFFEe0008 0x02002125
28         mww 0xFFE0000c 0x03002125
29         mww 0xFFE00010 0x40000000
30         mww 0xFFE00014 0x50000000
31         mww 0xFFE00018 0x60000000
32         mww 0xFFE0001c 0x70000000
33         mww 0xFFE00020 0x00000001
34         mww 0xFFE00024 0x00000000
35         
36         # remap  
37         mww 0xFFFFF124 0xFFFFFFFF  
38         mww 0xffff0010 0x100
39         mww 0xffff0034 0x100
40         
41         #disable 16x5x UART interrupts
42         mww 0x08020004 0
43 }
44
45 # required for usable performance. Used for lots of
46 # other things than flash programming.
47 [new_target_name] configure -work-area-virt 0 -work-area-phys 0x00020000 -work-area-size 0x20000 -work-area-backup 0
48
49 jtag_khz 16000
50
51
52 proc production_info {} {
53         return "Serial number is official MAC number. Format XXXXXXXXXXXX"
54 }
55
56 # There is no return value from this procedure. If it is
57 # successful it does not throw an exception
58 #
59 # Progress messages are output via puts 
60 proc production {firmwarefile serialnumber} {
61         if {[string length $serialnumber]!=12} {
62                 puts "Invalid serial number"
63                 return
64         }
65
66         puts "Power cycling target"
67         power off
68         sleep 3000
69         power on
70         sleep 1000
71         reset init
72         flash write_image erase $firmwarefile 0x1000000 bin
73         verify_image $firmwarefile 0x1000000 bin
74
75         # Big endian... weee!!!!
76         puts "Setting MAC number to $serialnumber"      
77         flash fillw [expr 0x1030000-0x8] "0x[string range $serialnumber 2 3][string range $serialnumber 0 1]0000" 1
78         flash fillw [expr 0x1030000-0x4] "0x[string range $serialnumber 10 11][string range $serialnumber 8 9][string range $serialnumber 6 7][string range $serialnumber 4 5]" 1
79         puts "Production successful"
80
81
82
83 proc production_test {} {
84         power on
85         sleep 1000
86         target_request debugmsgs enable
87         reset run
88         sleep 25000
89         target_request debugmsgs disable
90         return "See IP address above..."
91 }