Improve speed of remote flashing?
I did a test of the remote flashing speed with the aim to see if it is possible to flash multiple cards in parallel.
I modified the existing script to measure the time of two key phases:
- Waiting for the sector erase to complete
- Writing the sector data to the EEPROM
Exact results are below, but in summary:
- Erase: ~0.2 seconds per page
- Write: ~1 second per page
Important to note that the "erase" time spent polling for the erase to complete. This does not block the VME bus, so can easily be parallelised on the CPU with multiple threads.
However, the "write" time is the actual VME write time which blocks the bus. ~1 second to write 16k words seems unreasonably slow, so the writes must be going directly to the EEPROM and blocking the VME. Maybe it would be beneficial to introduce an intermediate buffer? Then we could do:
- Write to buffer
- Trigger buffer copy to EEPROM
- Poll for copy complete
The write should be significantly faster and does not block the VME bus, so multiple threads could flash in parallel.
To be investigated...
Programming EEPROM:
Erasing sector 0x000 of 0x080... 0.05
Writing sector 0x000 of 0x080... 0.25
Erasing sector 0x001 of 0x080... 1.05
Writing sector 0x001 of 0x080... 1.25
Erasing sector 0x002 of 0x080... 2.18
Writing sector 0x002 of 0x080... 2.38
Erasing sector 0x003 of 0x080... 3.34
Writing sector 0x003 of 0x080... 3.54
Erasing sector 0x004 of 0x080... 4.51
Writing sector 0x004 of 0x080... 4.71
Erasing sector 0x005 of 0x080... 5.67
Writing sector 0x005 of 0x080... 5.87
Erasing sector 0x006 of 0x080... 6.84
Writing sector 0x006 of 0x080... 7.04
Erasing sector 0x007 of 0x080... 8.00
Writing sector 0x007 of 0x080... 8.20
Erasing sector 0x008 of 0x080... 9.16
Writing sector 0x008 of 0x080... 9.36
Erasing sector 0x009 of 0x080... 10.32
Writing sector 0x009 of 0x080... 10.52
Erasing sector 0x00A of 0x080... 11.48
Writing sector 0x00A of 0x080... 11.68
Erasing sector 0x00B of 0x080... 12.64
Writing sector 0x00B of 0x080... 12.84
Erasing sector 0x00C of 0x080... 13.80
Writing sector 0x00C of 0x080... 13.90
Erasing sector 0x00D of 0x080... 14.87
Writing sector 0x00D of 0x080... 15.07
Erasing sector 0x00E of 0x080... 16.03
Writing sector 0x00E of 0x080... 16.23
Erasing sector 0x00F of 0x080... 17.19
Writing sector 0x00F of 0x080... 17.39
Erasing sector 0x010 of 0x080... 18.35
Writing sector 0x010 of 0x080... 18.55
Erasing sector 0x011 of 0x080... 19.51
Writing sector 0x011 of 0x080... 19.71
Erasing sector 0x012 of 0x080... 20.68
Writing sector 0x012 of 0x080... 20.88
Erasing sector 0x013 of 0x080... 21.84
Writing sector 0x013 of 0x080... 22.04
Erasing sector 0x014 of 0x080... 23.00
Writing sector 0x014 of 0x080... 23.20
Erasing sector 0x015 of 0x080... 24.16
Writing sector 0x015 of 0x080... 24.36
Erasing sector 0x016 of 0x080... 25.32
Writing sector 0x016 of 0x080... 25.52
Erasing sector 0x017 of 0x080... 26.49
Writing sector 0x017 of 0x080... 26.69
Erasing sector 0x018 of 0x080... 27.65
Writing sector 0x018 of 0x080... 27.85
Erasing sector 0x019 of 0x080... 28.81
Writing sector 0x019 of 0x080... 29.01
Erasing sector 0x01A of 0x080... 29.97
Writing sector 0x01A of 0x080... 30.17
Erasing sector 0x01B of 0x080... 31.14
Writing sector 0x01B of 0x080... 31.34
Erasing sector 0x01C of 0x080... 32.30
Writing sector 0x01C of 0x080... 32.50
Erasing sector 0x01D of 0x080... 33.46
Writing sector 0x01D of 0x080... 33.66
Erasing sector 0x01E of 0x080... 34.62
Writing sector 0x01E of 0x080... 34.82
Erasing sector 0x01F of 0x080... 35.78
Writing sector 0x01F of 0x080... 35.98
Erasing sector 0x020 of 0x080... 36.95
Writing sector 0x020 of 0x080... 37.15
Erasing sector 0x021 of 0x080... 38.11
Writing sector 0x021 of 0x080... 38.31
Erasing sector 0x022 of 0x080... 39.27
Writing sector 0x022 of 0x080... 39.47
Erasing sector 0x023 of 0x080... 40.43
Writing sector 0x023 of 0x080... 40.63
Erasing sector 0x024 of 0x080... 41.60
Writing sector 0x024 of 0x080... 41.80
Erasing sector 0x025 of 0x080... 42.76
Writing sector 0x025 of 0x080... 42.96
Erasing sector 0x026 of 0x080... 43.92
Writing sector 0x026 of 0x080... 44.12
Erasing sector 0x027 of 0x080... 45.08
Writing sector 0x027 of 0x080... 45.28
Erasing sector 0x028 of 0x080... 46.24
Writing sector 0x028 of 0x080... 46.44
Erasing sector 0x029 of 0x080... 47.40
Writing sector 0x029 of 0x080... 47.60
Erasing sector 0x02A of 0x080... 48.56
Writing sector 0x02A of 0x080... 48.76
Erasing sector 0x02B of 0x080... 49.72
Writing sector 0x02B of 0x080... 49.92
Erasing sector 0x02C of 0x080... 50.88
Writing sector 0x02C of 0x080... 51.08
Erasing sector 0x02D of 0x080... 52.05
Writing sector 0x02D of 0x080... 52.25
Erasing sector 0x02E of 0x080... 53.21
Writing sector 0x02E of 0x080... 53.41
Erasing sector 0x02F of 0x080... 54.37
Writing sector 0x02F of 0x080... 54.57
Erasing sector 0x030 of 0x080... 55.53
Writing sector 0x030 of 0x080... 55.73
Erasing sector 0x031 of 0x080... 56.69
Writing sector 0x031 of 0x080... 56.89
Erasing sector 0x032 of 0x080... 57.86
Writing sector 0x032 of 0x080... 58.06
Erasing sector 0x033 of 0x080... 59.02
Writing sector 0x033 of 0x080... 59.22
Erasing sector 0x034 of 0x080... 60.18
Writing sector 0x034 of 0x080... 60.38
Erasing sector 0x035 of 0x080... 61.34
Writing sector 0x035 of 0x080... 61.54
Erasing sector 0x036 of 0x080... 62.50
Writing sector 0x036 of 0x080... 62.70
Erasing sector 0x037 of 0x080... 63.66
Writing sector 0x037 of 0x080... 63.86
Erasing sector 0x038 of 0x080... 64.83
Writing sector 0x038 of 0x080... 65.03
Erasing sector 0x039 of 0x080... 65.99
Writing sector 0x039 of 0x080... 66.19
Erasing sector 0x03A of 0x080... 67.15
Writing sector 0x03A of 0x080... 67.35
Erasing sector 0x03B of 0x080... 68.31
Writing sector 0x03B of 0x080... 68.51
Erasing sector 0x03C of 0x080... 69.47
Writing sector 0x03C of 0x080... 69.68
Erasing sector 0x03D of 0x080... 70.64
Writing sector 0x03D of 0x080... 70.84
Erasing sector 0x03E of 0x080... 71.79
Writing sector 0x03E of 0x080... 71.99
Erasing sector 0x03F of 0x080... 72.95
Writing sector 0x03F of 0x080... 73.16
Erasing sector 0x040 of 0x080... 74.12
Writing sector 0x040 of 0x080... 74.32
Erasing sector 0x041 of 0x080... 75.28
Writing sector 0x041 of 0x080... 75.48
Erasing sector 0x042 of 0x080... 76.44
Writing sector 0x042 of 0x080... 76.65
Erasing sector 0x043 of 0x080... 77.60
Writing sector 0x043 of 0x080... 77.80
Erasing sector 0x044 of 0x080... 78.76
Writing sector 0x044 of 0x080... 78.97
Erasing sector 0x045 of 0x080... 79.93
Writing sector 0x045 of 0x080... 80.13
Erasing sector 0x046 of 0x080... 81.09
Writing sector 0x046 of 0x080... 81.29
Erasing sector 0x047 of 0x080... 82.26
Writing sector 0x047 of 0x080... 82.46
Erasing sector 0x048 of 0x080... 83.41
Writing sector 0x048 of 0x080... 83.61
Erasing sector 0x049 of 0x080... 84.57
Writing sector 0x049 of 0x080... 84.77
Erasing sector 0x04A of 0x080... 85.74
Writing sector 0x04A of 0x080... 85.94
Erasing sector 0x04B of 0x080... 86.90
Writing sector 0x04B of 0x080... 87.10
Erasing sector 0x04C of 0x080... 88.06
Writing sector 0x04C of 0x080... 88.26
Erasing sector 0x04D of 0x080... 89.22
Writing sector 0x04D of 0x080... 89.42
Erasing sector 0x04E of 0x080... 90.38
Writing sector 0x04E of 0x080... 90.58
Erasing sector 0x04F of 0x080... 91.54
Writing sector 0x04F of 0x080... 91.74
Erasing sector 0x050 of 0x080... 92.70
Writing sector 0x050 of 0x080... 92.90
Erasing sector 0x051 of 0x080... 93.87
Writing sector 0x051 of 0x080... 94.07
Erasing sector 0x052 of 0x080... 95.03
Writing sector 0x052 of 0x080... 95.23
Erasing sector 0x053 of 0x080... 96.19
Writing sector 0x053 of 0x080... 96.39
Erasing sector 0x054 of 0x080... 97.35
Writing sector 0x054 of 0x080... 97.55
Erasing sector 0x055 of 0x080... 98.52
Writing sector 0x055 of 0x080... 98.72
Erasing sector 0x056 of 0x080... 99.68
Writing sector 0x056 of 0x080... 99.88
Erasing sector 0x057 of 0x080... 100.84
Writing sector 0x057 of 0x080... 101.04
Erasing sector 0x058 of 0x080... 102.00
Writing sector 0x058 of 0x080... 102.20
Erasing sector 0x059 of 0x080... 103.16
Writing sector 0x059 of 0x080... 103.36
Erasing sector 0x05A of 0x080... 104.32
Writing sector 0x05A of 0x080... 104.52
Erasing sector 0x05B of 0x080... 105.49
Writing sector 0x05B of 0x080... 105.69
Erasing sector 0x05C of 0x080... 106.65
Writing sector 0x05C of 0x080... 106.85
Erasing sector 0x05D of 0x080... 107.81
Writing sector 0x05D of 0x080... 108.01
Erasing sector 0x05E of 0x080... 108.97
Writing sector 0x05E of 0x080... 109.17
Erasing sector 0x05F of 0x080... 110.13
Writing sector 0x05F of 0x080... 110.33
Erasing sector 0x060 of 0x080... 111.29
Writing sector 0x060 of 0x080... 111.49
Erasing sector 0x061 of 0x080... 112.45
Writing sector 0x061 of 0x080... 112.65
Erasing sector 0x062 of 0x080... 113.61
Writing sector 0x062 of 0x080... 113.81
Erasing sector 0x063 of 0x080... 114.78
Writing sector 0x063 of 0x080... 114.98
Erasing sector 0x064 of 0x080... 115.94
Writing sector 0x064 of 0x080... 116.14
Erasing sector 0x065 of 0x080... 117.10
Writing sector 0x065 of 0x080... 117.30
Erasing sector 0x066 of 0x080... 118.15
Writing sector 0x066 of 0x080... 118.25
Erasing sector 0x067 of 0x080... 119.05
Writing sector 0x067 of 0x080... 119.15
Erasing sector 0x068 of 0x080... 119.94
Writing sector 0x068 of 0x080... 120.04
Erasing sector 0x069 of 0x080... 120.84
Writing sector 0x069 of 0x080... 120.94
Erasing sector 0x06A of 0x080... 121.73
Writing sector 0x06A of 0x080... 121.83
Erasing sector 0x06B of 0x080... 122.63
Writing sector 0x06B of 0x080... 122.73
Erasing sector 0x06C of 0x080... 123.53
Writing sector 0x06C of 0x080... 123.63
Erasing sector 0x06D of 0x080... 124.42
Writing sector 0x06D of 0x080... 124.53
Erasing sector 0x06E of 0x080... 125.32
Writing sector 0x06E of 0x080... 125.42
Erasing sector 0x06F of 0x080... 126.22
Writing sector 0x06F of 0x080... 126.32
Erasing sector 0x070 of 0x080... 127.11
Writing sector 0x070 of 0x080... 127.22
Erasing sector 0x071 of 0x080... 128.01
Writing sector 0x071 of 0x080... 128.11
Erasing sector 0x072 of 0x080... 128.91
Writing sector 0x072 of 0x080... 129.01
Erasing sector 0x073 of 0x080... 129.80
Writing sector 0x073 of 0x080... 129.90
Erasing sector 0x074 of 0x080... 130.70
Writing sector 0x074 of 0x080... 130.80
Erasing sector 0x075 of 0x080... 131.60
Writing sector 0x075 of 0x080... 131.70
Erasing sector 0x076 of 0x080... 132.49
Writing sector 0x076 of 0x080... 132.59
Erasing sector 0x077 of 0x080... 133.39
Writing sector 0x077 of 0x080... 133.49
Erasing sector 0x078 of 0x080... 134.29
Writing sector 0x078 of 0x080... 134.39
Erasing sector 0x079 of 0x080... 135.18
Writing sector 0x079 of 0x080... 135.28
Erasing sector 0x07A of 0x080... 136.08
Writing sector 0x07A of 0x080... 136.18
Erasing sector 0x07B of 0x080... 136.98
Writing sector 0x07B of 0x080... 137.08
Erasing sector 0x07C of 0x080... 137.87
Writing sector 0x07C of 0x080... 137.97
Erasing sector 0x07D of 0x080... 138.77
Writing sector 0x07D of 0x080... 138.87
Erasing sector 0x07E of 0x080... 139.67
Writing sector 0x07E of 0x080... 139.77
Erasing sector 0x07F of 0x080... 140.56
Writing sector 0x07F of 0x080... 140.66
Erasing sector 0x080 of 0x080... 141.46
Writing sector 0x080 of 0x080... 141.66
ERASE TIME: 23.14
WRITE TIME: 112.72