| Index: embios/trunk/tools/embios.py |
| — | — | @@ -172,6 +172,18 @@ |
| 173 | 173 | print " Executes the emBIOS executable image at <offset>."
|
| 174 | 174 | print ""
|
| 175 | 175 | print ""
|
| | 176 | + print " readrawbootflash <addr_bootflsh> <addr_mem> <size>"
|
| | 177 | + print " Reads <size> bytes from bootflash to memory."
|
| | 178 | + print " <addr_bootflsh>: the address in bootflash to read from"
|
| | 179 | + print " <addr_mem>: the address in memory to copy the data to"
|
| | 180 | + print ""
|
| | 181 | + print " writerawbootflash <addr_mem> <addr_bootflsh> <size>"
|
| | 182 | + print " Writes <size> bytes from memory to bootflash."
|
| | 183 | + print " Don't call this unless you really know what you're doing."
|
| | 184 | + print " <addr_mem>: the address in memory to copy the data from"
|
| | 185 | + print " <addr_bootflsh>: the address in bootflash to write to"
|
| | 186 | + print ""
|
| | 187 | + print ""
|
| 176 | 188 | print " flushcaches"
|
| 177 | 189 | print " Flushes the CPUs data and instruction caches."
|
| 178 | 190 | print ""
|
| — | — | @@ -342,10 +354,18 @@ |
| 343 | 355 | dev.createthread(int(argv[2], 16), int(argv[3], 16), int(argv[4], 16), int(argv[5], 16), int(argv[6], 16), int(argv[7], 16), int(argv[8], 16))
|
| 344 | 356 |
|
| 345 | 357 | elif argv[1] == "execimage":
|
| 346 | | - if len(argv) != 3: usage
|
| | 358 | + if len(argv) != 3: usage()
|
| 347 | 359 | dev.execimage(int(argv[2], 16))
|
| 348 | 360 |
|
| 349 | 361 |
|
| | 362 | + elif argv[1] == "readrawbootflash":
|
| | 363 | + if len(argv) != 5: usage()
|
| | 364 | + dev.readrawbootflash(int(argv[2]), int(argv[3]), int(argv[4]))
|
| | 365 | +
|
| | 366 | + elif argv[1] == "writerawbootflash":
|
| | 367 | + if len(argv) != 5: usage()
|
| | 368 | + dev.writerawbootflash(int(argv[2]), int(argv[3]), int(argv[4]))
|
| | 369 | +
|
| 350 | 370 | elif argv[1] == "flushcaches":
|
| 351 | 371 | if len(argv) != 2: usage()
|
| 352 | 372 | dev.flushcaches()
|
| Index: embios/trunk/tools/libembios.py |
| — | — | @@ -21,7 +21,7 @@ |
| 22 | 22 | #
|
| 23 | 23 | #
|
| 24 | 24 |
|
| 25 | | -# note: handles commands 1 to 20
|
| | 25 | +# note: handles commands 1 to 21
|
| 26 | 26 |
|
| 27 | 27 | import sys
|
| 28 | 28 | import math
|
| — | — | @@ -1011,7 +1011,7 @@ |
| 1012 | 1012 | return out
|
| 1013 | 1013 |
|
| 1014 | 1014 |
|
| 1015 | | - def execimage(self, offset):
|
| | 1015 | + def execimage(self, offset, silent = 0):
|
| 1016 | 1016 | self.__myprint("Executing emBIOS executable image at 0x%08x..." % offset, silent)
|
| 1017 | 1017 |
|
| 1018 | 1018 | self.handle.bulkWrite(self.__coutep, struct.pack("<IIII", 18, threadid, 0, 0))
|
| — | — | @@ -1025,6 +1025,29 @@ |
| 1026 | 1026 |
|
| 1027 | 1027 | #=====================================================================================
|
| 1028 | 1028 |
|
| | 1029 | +
|
| | 1030 | + def readrawbootflash(self, addr_bootflsh, addr_mem, size, silent = 0):
|
| | 1031 | + self.__myprint("Reading 0x%x bytes from 0x%08x at bootflash to 0x%08x..." % (size, addr_bootflsh, addr_mem), silent)
|
| | 1032 | +
|
| | 1033 | + self.handle.bulkWrite(self.__coutep, struct.pack("<IIII", 22, addr_mem, addr_bootflsh, size))
|
| | 1034 | + response = self.__getbulk(self.handle, self.__cinep, 0x10)
|
| | 1035 | + self.__checkstatus(response)
|
| | 1036 | +
|
| | 1037 | + self.__myprint(" done\n", silent)
|
| | 1038 | +
|
| | 1039 | +
|
| | 1040 | + def writerawbootflash(self, addr_mem, addr_bootflsh, size, silent = 0):
|
| | 1041 | + self.__myprint("Writing 0x%x bytes from 0x%08x to bootflash at 0x%08x..." % (size, addr_fmem, addr_bootflsh), silent)
|
| | 1042 | +
|
| | 1043 | + self.handle.bulkWrite(self.__coutep, struct.pack("<IIII", 23, addr_mem, addr_bootflsh, size))
|
| | 1044 | + response = self.__getbulk(self.handle, self.__cinep, 0x10)
|
| | 1045 | + self.__checkstatus(response)
|
| | 1046 | +
|
| | 1047 | + self.__myprint(" done\n", silent)
|
| | 1048 | +
|
| | 1049 | +
|
| | 1050 | +#=====================================================================================
|
| | 1051 | +
|
| 1029 | 1052 |
|
| 1030 | 1053 | def flushcaches(self, silent = 0):
|
| 1031 | 1054 | self.__myprint("Flushing caches...", silent)
|