|
|
@@ -22,32 +22,75 @@ arm7_9 dcc_downloads enable |
|
|
|
|
|
|
|
flash bank ecosflash 0x01000000 0x200000 2 2 0 ecos/at91eb40a.elf |
|
|
|
[new_target_name] configure -event reset-init { |
|
|
|
# Set up chip selects & timings |
|
|
|
mww 0xFFE00000 0x0100273D |
|
|
|
mww 0xFFE00004 0x08002125 |
|
|
|
mww 0xFFEe0008 0x02002125 |
|
|
|
mww 0xFFE0000c 0x03002125 |
|
|
|
mww 0xFFE00010 0x40000000 |
|
|
|
mww 0xFFE00014 0x50000000 |
|
|
|
mww 0xFFE00018 0x60000000 |
|
|
|
mww 0xFFE0001c 0x70000000 |
|
|
|
mww 0xFFE00020 0x00000001 |
|
|
|
mww 0xFFE00024 0x00000000 |
|
|
|
|
|
|
|
# remap |
|
|
|
mww 0xFFFFF124 0xFFFFFFFF |
|
|
|
mww 0xffff0010 0x100 |
|
|
|
mww 0xffff0034 0x100 |
|
|
|
|
|
|
|
#disable 16x5x UART interrupts |
|
|
|
mww 0x08020004 0 |
|
|
|
} |
|
|
|
|
|
|
|
# Set up chip selects & timings |
|
|
|
mww 0xFFE00000 0x0100273D |
|
|
|
mww 0xFFE00004 0x08002125 |
|
|
|
mww 0xFFEe0008 0x02002125 |
|
|
|
mww 0xFFE0000c 0x03002125 |
|
|
|
mww 0xFFE00010 0x40000000 |
|
|
|
mww 0xFFE00014 0x50000000 |
|
|
|
mww 0xFFE00018 0x60000000 |
|
|
|
mww 0xFFE0001c 0x70000000 |
|
|
|
mww 0xFFE00020 0x00000001 |
|
|
|
mww 0xFFE00024 0x00000000 |
|
|
|
# required for usable performance. Used for lots of |
|
|
|
# other things than flash programming. |
|
|
|
working_area 0 0x00030000 0x20000 nobackup |
|
|
|
|
|
|
|
# remap |
|
|
|
mww 0xFFFFF124 0xFFFFFFFF |
|
|
|
mww 0xffff0010 0x100 |
|
|
|
mww 0xffff0034 0x100 |
|
|
|
jtag_khz 16000 |
|
|
|
|
|
|
|
#disable 16x5x UART interrupts |
|
|
|
mww 0x08020004 0 |
|
|
|
|
|
|
|
proc production_info {} { |
|
|
|
return "Serial number is official MAC number" |
|
|
|
} |
|
|
|
|
|
|
|
proc production_help {} { |
|
|
|
return "Serial number is MAC number. Format XXXXXXXXXXXXXX" |
|
|
|
} |
|
|
|
|
|
|
|
# required for usable performance. Used for lots of |
|
|
|
# other things than flash programming. |
|
|
|
working_area 0 0x00000000 0x20000 nobackup |
|
|
|
# There is no return value from this procedure. If it is |
|
|
|
# successful it does not throw an exception |
|
|
|
# |
|
|
|
# Progress messages are output via puts |
|
|
|
proc production {firmwarefile serialnumber} { |
|
|
|
if {[string length $serialnumber]!=12} { |
|
|
|
puts "Invalid serial number" |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
jtag_khz 16000 |
|
|
|
puts "Power cycling target" |
|
|
|
power off |
|
|
|
sleep 3000 |
|
|
|
power on |
|
|
|
sleep 1000 |
|
|
|
reset init |
|
|
|
flash write_image erase $firmwarefile 0x1000000 bin |
|
|
|
verify_image $firmwarefile 0x1000000 bin |
|
|
|
|
|
|
|
# Big endian... weee!!!! |
|
|
|
puts "Setting MAC number to $serialnumber" |
|
|
|
flash fillw [expr 0x1030000-0x8] "0x[string range $serialnumber 2 3][string range $serialnumber 0 1]0000" 1 |
|
|
|
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 |
|
|
|
puts "Production successful" |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
proc production_test {} { |
|
|
|
power on |
|
|
|
sleep 1000 |
|
|
|
target_request debugmsgs enable |
|
|
|
reset run |
|
|
|
sleep 20000 |
|
|
|
target_request debugmsgs disable |
|
|
|
return "See IP address above..." |
|
|
|
} |