for glitch_setting in gc.glitch_values():
# optional: you can speed up the loop by checking if the trigger never went low
# (the target never called trigger_low();) via scope.adc.state
scope.glitch.offset = glitch_setting[1]
scope.glitch.width = glitch_setting[0]
scope.arm()
target.simpleserial_write("g", bytearray([]))
ret = scope.capture()
val = target.simpleserial_read_witherrors('r', 4, glitch_timeout=10)#For loop check
How does this speed up the loop? and why is it considered as a reset even though it was not a reset for the glitch we are looping on at the moment
It speeds up the loop because it takes longer to timeout on the capture and the serial read than it does to check if the trigger pin is high. If you want to be accurate, you should indeed record the offset/width for the previous glitch settings.
Alex
Thank you. Another question please, can the repeat substitute the ext_offset for small values, for example if my ext offset=2 and my repeat is 10, this means there will be a glitch for each cycle from cycle 2 till cycle 12?
That can be somewhat true when clock glitching. Essentially there’s a tradeoff where using a larger repeat allows you to hit more instructions, but you’ll be more likely to cause the target to crash/reset.
With voltage glitching, the Vcc rail won’t have enough time to fully recover, so repeat > 1 glitches will behave differently from repeat=1 glitches.
Alex
Okay, and also for the clock glitching, the continuous trigger mode would do the same function as changing the ext offset while glitching?
I have a loop of 100 iterations and I want to glitch every iteration. I tried 3 methods, but each produced a different rresults
The 3 methods are:
1- constant ext offset and many repeats
2- changing the offset for the range of the trigger count
3- using continuous trigger without repeats and with constant ext offset.
Which one is considered to be the optimal for my case please?
the body of the loop contains 1 instruction only
Continuous mode fires off the glitch every clock cycle. It’ll almost certainly just crash your target repeatedly. Same thing with just varying the repeat value.
I recommend varying just ext_offset. If you want, you can increase the repeat value to something like 5 or 10 and increase your ext_offset step size. If you think you’re getting too many crashes/resets, you can back the repeat value off.
Alex