-
-
Save rvalles/20b485abb07ba3af4ae6be1046d93bfb to your computer and use it in GitHub Desktop.
torture test for verifiedreadmem/verifiedwritemem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import serial | |
import time | |
import random | |
import struct | |
from Crc import Crc | |
from RomWack import RomWack | |
from SAD import SAD | |
from ExecLibrary import ExecLibrary | |
from AmigaSnippets import AmigaSnippets | |
def transfertest(snip, addr, size): | |
count = 0 | |
while True: | |
data = random.randbytes(size) | |
start = time.monotonic() | |
snip.verifiedwritemem(addr, data) | |
end = time.monotonic() | |
print(f'->A count: {count} diff: {end-start}s') | |
start = time.monotonic() | |
rdata = snip.verifiedreadmem(addr, size) | |
end = time.monotonic() | |
print(f'<-A count: {count} diff: {end-start}s') | |
if data != rdata: | |
print("Data mismatch (?!)") | |
exit(1) | |
count += 1 | |
def main(): | |
serialdev = "/dev/ttyUSB0" | |
scratchsize = 0x10000 | |
ser = serial.Serial(serialdev, 9600, timeout=None) | |
print("Serial device opened.") | |
amiga = RomWack(serial=ser, Debug=False) | |
#amiga = SAD(serial=ser, Debug=False) | |
if amiga.debugger == "SAD": | |
print(f'In SAD debugger. Bugged: {amiga.sadbug}. Entry: {amiga.entry}.') | |
else: | |
print("In debugger.") | |
execlib = ExecLibrary(amiga) | |
print(f'Exec v{execlib.version}.{execlib.revision}.') | |
if amiga.debugger == "SAD": | |
execlib.enterdebugloop() | |
execlib.Disable() #romwack unreliable at wire speed if interrupts on, on 000/010 7MHz. | |
print("Disable.") | |
snip = AmigaSnippets( | |
#dbpath="amigasnips.db", | |
debugger=amiga, | |
serial=ser, | |
execlib=execlib, | |
allocmem=execlib.AllocMem, | |
verifyupload=True, | |
verifyuse=False, | |
debug=False, | |
serper=6, | |
baudrate=506699, | |
# readmemserper=3, | |
# readmembaudrate=886723, | |
readmemserper=6, | |
readmembaudrate=506699, | |
writememserper=6, | |
writemembaudrate=506699 | |
#serper=29, | |
#baudrate=115200, | |
#readmemserper=29, | |
#readmembaudrate=115200, | |
#writememserper=29, | |
#writemembaudrate=115200 | |
#readmemserper=368, | |
#readmembaudrate=9600, | |
#writememserper=368, | |
#writemembaudrate=9600 | |
) | |
if snip.reusing: | |
print("Reusing snippets.") | |
else: | |
print("Bootstrapped snippets.") | |
execlib.availdump() | |
scratch = execlib.AllocMem(scratchsize, 0) | |
print(f'Scratch allocated at {hex(scratch)}.') | |
transfertest(snip, scratch, scratchsize) | |
if amiga.debugger == "SAD": | |
execlib.exitdebugloop() | |
amiga.setreg('d0', 0) | |
amiga.resume() | |
exit(0) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment