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..."
+}
\ No newline at end of file