Пример #1
0
def main():
 hf1 = HexFile(None)
 hf1.from_str(open(sys.argv[1]).read())

 hf2 = HexFile(None)
 hf2.from_str(open(sys.argv[2]).read())

 if (hf1.addr!=hf2.addr):
     print >> sys.stderr, "addr mismatch", hf1.addr, hf2.addr

 if len(hf1.bytes) != len(hf2.bytes):
     print >> sys.stderr, "len mismatch", len(hf1.bytes), len(hf2.bytes)

 minlen=min(len(hf1.bytes), len(hf2.bytes))

 for i in range(0, hf1.addr):
     hf1.bytes = [0] + hf1.bytes

 for i in range(0, hf2.addr):
     hf2.bytes = [0] + hf2.bytes

 start = max(hf1.addr, hf2.addr)
 for i in range( start, start + minlen ):
     if hf1.bytes[i] != hf2.bytes[i]:
         print >> sys.stderr, "mismatch %04X %02X %02X" % (i, hf1.bytes[i], hf2.bytes[i])
Пример #2
0
def main():
  hf1 = HexFile(None)
  hf1.from_str(open(sys.argv[1]).read())

  for arg in sys.argv[2:]:
      hfm = HexFile(None)
      hfm.from_str(open(arg).read())
      hf1.merge(hfm)

  sys.stdout.write(hf1.to_str())
Пример #3
0
def main():
    hf1 = HexFile(None)
    hf1.from_str(open(sys.argv[1]).read())

    if "x" in sys.argv[2]:
        newStart = int(sys.argv[2], 16)
    else:
        newStart = int(sys.argv[2])

    hf1.addr = newStart
    sys.stdout.write(hf1.to_str())
Пример #4
0
def main():
 hf1 = HexFile(None)
 hf1.from_str(open(sys.argv[1]).read())

 if "x" in sys.argv[2]:
      newStart = int(sys.argv[2], 16)
 else:
     newStart = int(sys.argv[2])

 hf1.addr = newStart
 sys.stdout.write(hf1.to_str())
Пример #5
0
def main():
 hf1 = HexFile(None)
 hf1.from_str(open(sys.argv[1]).read())

 csum=0
 sys.stdout.write("U0\n")
 sys.stdout.write(":")
 for b in hf1.bytes:
     sys.stdout.write("%02X" % b)
     csum = csum + b
 sys.stdout.write(">")
 sys.stdout.write("%02X" % (len(hf1.bytes) & 0xFF))
 sys.stdout.write("%02X" % (csum & 0xFF))
 sys.stdout.write("\n")
Пример #6
0
def main():
    hf1 = HexFile(None)
    hf1.from_str(open(sys.argv[1]).read())

    csum = 0
    sys.stdout.write("U0\n")
    sys.stdout.write(":")
    for b in hf1.bytes:
        sys.stdout.write("%02X" % b)
        csum = csum + b
    sys.stdout.write(">")
    sys.stdout.write("%02X" % (len(hf1.bytes) & 0xFF))
    sys.stdout.write("%02X" % (csum & 0xFF))
    sys.stdout.write("\n")
Пример #7
0
def main():
    parser = OptionParser(usage="supervisor [options] command",
            description="Commands: ...")

    parser.add_option("-A", "--addr", dest="addr",
         help="address", metavar="ADDR", type="int", default=0)
    parser.add_option("-C", "--count", dest="count",
         help="count", metavar="ADDR", type="int", default=65536)
    parser.add_option("-V", "--value", dest="value",
         help="value", metavar="VAL", type="int", default=0)
    parser.add_option("-P", "--ascii", dest="ascii",
         help="print ascii value", action="store_true", default=False)
    parser.add_option("-R", "--rate", dest="rate",
         help="rate for slow clock", metavar="HERTZ", type="int", default=10)
    parser.add_option("-B", "--bank", dest="bank",
         help="bank number to select on ram-rom board", metavar="NUMBER", type="int", default=None)
    parser.add_option("-v", "--verbose", dest="verbose",
         help="verbose", action="store_true", default=False)
    parser.add_option("-f", "--filename", dest="filename",
         help="filename", default=None)
    parser.add_option("-r", "--reset", dest="reset_on_release",
         help="reset on release of bus", action="store_true", default=False)
    parser.add_option("-n", "--norelease", dest="norelease",
         help="do not release bus", action="store_true", default=False)

    #parser.disable_interspersed_args()

    (options, args) = parser.parse_args(sys.argv[1:])

    cmd = args[0]
    args=args[1:]

    bus = smbus.SMBus(1)
    super = Supervisor(bus, 0x20, options.verbose)

    if (cmd=="reset"):
        super.reset()

    elif (cmd=="memdump"):
        try:
            super.take_bus(setBank=options.bank)
            for i in range(options.addr,options.addr+options.count):
                val = super.mem_read(i)
                if options.ascii:
                    print "%04X %02X %s" % (i, val, hex_escape(chr(val)))
                else:
                    print "%04X %02X" % (i, val)
        finally:
            if not options.norelease:
                super.release_bus()

    elif (cmd=="savehex"):
        hexdumper = HexFile(options.addr)
        try:
            super.take_bus(setBank=options.bank)
            for i in range(options.addr,options.addr+options.count):
                val = super.mem_read(i)
                hexdumper.write(val)
        finally:
            if not options.norelease:
                super.release_bus()

        if options.filename:
            file(options.filename,"w").write(hexdumper.to_str())
        else:
            sys.stdout.write(hexdumper.to_str())

        # a little self-test ...
        h2 = HexFile(None)
        h2.from_str(hexdumper.to_str())
        print "okay?", h2.to_str() == hexdumper.to_str()


    elif (cmd=="loadhex"):
        hexloader = HexFile(None)
        if options.filename:
            hexloader.from_str(file(options.filename,"r").read())
        else:
            hexloader.from_str(sys.stdin.read())

        try:
            super.take_bus(setBank=options.bank)
            offset = hexloader.addr
            for val in hexloader.bytes:
                super.mem_write(offset, val)
                offset = offset + 1
        finally:
            if not options.norelease:
                super.release_bus(reset=options.reset_on_release)


    elif (cmd=="peek"):
        try:
            super.take_bus(setBank=options.bank)
            print "%02X" % super.mem_read(options.addr)
        finally:
            if not options.norelease:
                super.release_bus()

    elif (cmd=="poke"):
        try:
            super.take_bus(setBank=options.bank)
            super.mem_write(options.addr, options.value)
        finally:
            if not options.norelease:
                super.release_bus()

    elif (cmd=="ioread"):
        try:
            super.take_bus(setBank=options.bank)
            print "%02X" % super.io_read(options.addr)
        finally:
            if not options.norelease:
                super.release_bus()

    elif (cmd=="iowatch"):
        last=None
        try:
            super.take_bus(setBank=options.bank)
            while True:
                x=super.io_read(options.addr)
                if (x!=last):
                    print "%02X" % x
                    last=x
        finally:
            if not options.norelease:
                super.release_bus()

    elif (cmd=="iowrite"):
        try:
            super.take_bus(setBank=options.bank)
            super.io_write(options.addr, options.value)
        finally:
            if not options.norelease:
                super.release_bus()

    elif (cmd=="slowclock"):
        try:
            super.slow_clock(rate=options.rate)
        finally:
            super.normal_clock()

    elif (cmd=="singlestep"):
        try:
            from getch import getch
            super.singlestep_on()
            while True:
                print "press `s` to step, 'q' to quit",
                ch = getch()
                if ch=="s":
                    # Reading gpio will clear interrupt, but the problem is that
                    # M1 may still be low and will immediately re-interrupt.
                    bits=super.ixData.get_gpio(1)
                    while (bits & M1)==0:
                       bits = super.ixData.get_gpio(1)

                    print ""
                if ch=="q":
                    break
        finally:
            super.singlestep_off()

    elif (cmd=="singlestep"):
        try:
            from getch import getch
            super.singlestep_on()
            while True:
                print "press `s` to step, 'q' to quit",
                ch = getch()
                if ch=="s":
                    # Reading gpio will clear interrupt, but the problem is that
                    # M1 may still be low and will immediately re-interrupt. So
                    # keep reading it until we see that M1 has gone high.
                    bits=super.ixData.get_gpio(1)
                    while (bits & M1)==0:
                       bits = super.ixData.get_gpio(1)

                    print ""
                if ch=="q":
                    break
        finally:
            super.singlestep_off()

    elif (cmd=="autostep"):
        try:
            super.autostep(rate=options.rate)
        finally:
            super.normal_clock()

    elif (cmd=="showint"):
        last=None
        while True:
            v = ((super.ixData.get_gpio(1)&INT) !=0)
            if v!=last:
                print v
                last=v