| Index: embios/trunk/tools/embios.py | 
| — | — | @@ -112,6 +112,8 @@ | 
| 113 | 113 | print "      Optional params <offset> <length>: specify the range in <file> to write" | 
| 114 | 114 | print "  writeusbconsole direct <i1> <i2> ... <iN>" | 
| 115 | 115 | print "    Writes the integers <i1> ... <iN> to the USB console." | 
|  | 116 | +  print "  writeusbconsole string <str>" | 
|  | 117 | +  print "    Writes the string <str> to the USB console." | 
| 116 | 118 | print "" | 
| 117 | 119 | print "  readdevconsole <bitmask> <size> <outtype> <file>" | 
| 118 | 120 | print "    Reads data from one or more of the device's consoles." | 
| — | — | @@ -130,6 +132,8 @@ | 
| 131 | 133 | print "  writedevconsole direct <bitmask> <i1> <i2> ... <iN>" | 
| 132 | 134 | print "    Writes the integers <i1> ... <iN> to the device consoles specified" | 
| 133 | 135 | print "                         by <bitmask>" | 
|  | 136 | +  print "  writedevconsole string <bitmask> <str>" | 
|  | 137 | +  print "    Writes the string <str> to the device consoles specified by <bitmask>" | 
| 134 | 138 | print "" | 
| 135 | 139 | print "  flushconsolebuffers <bitmask>" | 
| 136 | 140 | print "    flushes one or more of the device consoles' buffers." | 
| — | — | @@ -286,6 +290,12 @@ | 
| 287 | 291 | data += struct.pack("<I", int(argv[ptr], 16)) | 
| 288 | 292 | ptr += 1 | 
| 289 | 293 | dev.writeusbcon(data) | 
|  | 294 | + | 
|  | 295 | +    if argv[2] == "string": | 
|  | 296 | +      if len(argv) > 4: usage() | 
|  | 297 | +      dev.writeusbcon(argv[3]) | 
|  | 298 | + | 
|  | 299 | +    else: usage() | 
| 290 | 300 |  | 
| 291 | 301 | elif argv[1] == "readdevconsole": | 
| 292 | 302 | if len(argv) not in [5, 6]: usage() | 
| — | — | @@ -318,6 +328,12 @@ | 
| 319 | 329 | data += struct.pack("<I", int(argv[ptr], 16)) | 
| 320 | 330 | ptr += 1 | 
| 321 | 331 | dev.writeusbcon(int(argv[3], 16), data) | 
|  | 332 | + | 
|  | 333 | +    if argv[2] == "string": | 
|  | 334 | +      if len(argv) > 5: usage() | 
|  | 335 | +      dev.writedevcon(int(argv[3], 16), argv[4]) | 
|  | 336 | + | 
|  | 337 | +    else: usage() | 
| 322 | 338 |  | 
| 323 | 339 | elif argv[1] == "flushconsolebuffers": | 
| 324 | 340 | if len(argv) != 3: usage() | 
| Index: embios/trunk/tools/libembios.py | 
| — | — | @@ -814,15 +814,15 @@ | 
| 815 | 815 | processinfoprint = "" | 
| 816 | 816 | ptr = 0 | 
| 817 | 817 | while structver == 1 and ptr < len(procinfolist):      # Process information struct version == 1 | 
| 818 |  | -        processinfoprint += "--------------------------------------------------------------------------------"
 | 
| 819 |  | -        processinfoprint += "R0: 0x%08x,  R1: 0x%08x,  R2: 0x%08x,  R3: 0x%08x,\n\
 | 
| 820 |  | -                             R4: 0x%08x,  R5: 0x%08x,  R6: 0x%08x,  R7: 0x%08x,\n\
 | 
| 821 |  | -                             R8: 0x%08x,  R9: 0x%08x,  R10: 0x%08x, R11: 0x%08x,\n\
 | 
| 822 |  | -                             R12: 0x%08x, SP: 0x%08x,  LR: 0x%08x,  PC: 0x%08x\n" \
 | 
| 823 |  | -                             % (procinfolist[ptr]['regs'][0], procinfolist[ptr]['regs'][1], procinfolist[ptr]['regs'][2], procinfolist[ptr]['regs'][3], \
 | 
| 824 |  | -                                procinfolist[ptr]['regs'][4], procinfolist[ptr]['regs'][5], procinfolist[ptr]['regs'][6], procinfolist[ptr]['regs'][7], \
 | 
| 825 |  | -                                procinfolist[ptr]['regs'][8], procinfolist[ptr]['regs'][9], procinfolist[ptr]['regs'][10], procinfolist[ptr]['regs'][11], \
 | 
| 826 |  | -                                procinfolist[ptr]['regs'][12], procinfolist[ptr]['regs'][13], procinfolist[ptr]['regs'][14], procinfolist[ptr]['regs'][15] )
 | 
|  | 818 | +        processinfoprint += "--------------------------------------------------------------------------------\n" | 
|  | 819 | +        processinfoprint += "R0: 0x%08x,  R1: 0x%08x,  R2: 0x%08x,  R3: 0x%08x,\n"\ | 
|  | 820 | +                            % (procinfolist[ptr]['regs'][0], procinfolist[ptr]['regs'][1], procinfolist[ptr]['regs'][2], procinfolist[ptr]['regs'][3])\ | 
|  | 821 | +                            + "R4: 0x%08x,  R5: 0x%08x,  R6: 0x%08x,  R7: 0x%08x,\n"\ | 
|  | 822 | +                            % (procinfolist[ptr]['regs'][4], procinfolist[ptr]['regs'][5], procinfolist[ptr]['regs'][6], procinfolist[ptr]['regs'][7])\ | 
|  | 823 | +                            + "R8: 0x%08x,  R9: 0x%08x,  R10: 0x%08x, R11: 0x%08x,\n"\ | 
|  | 824 | +                            % (procinfolist[ptr]['regs'][8], procinfolist[ptr]['regs'][9], procinfolist[ptr]['regs'][10], procinfolist[ptr]['regs'][11])\ | 
|  | 825 | +                            + "R12: 0x%08x, SP: 0x%08x,  LR: 0x%08x,  PC: 0x%08x\n" \ | 
|  | 826 | +                            % (procinfolist[ptr]['regs'][12], procinfolist[ptr]['regs'][13], procinfolist[ptr]['regs'][14], procinfolist[ptr]['regs'][15]) | 
| 827 | 827 | processinfoprint += "cpsr: 0x%08x      " %             (procinfolist[ptr]['cpsr']) | 
| 828 | 828 | states = ("THREAD_FREE", "THREAD_SUSPENDED", "THREAD_READY", "THREAD_RUNNING", "THREAD_BLOCKED", "THREAD_DEFUNCT", "THREAD_DEFUNCT_ACK") | 
| 829 | 829 | processinfoprint += "state: %s      " %                 (states[procinfolist[ptr]['state']]) | 
| — | — | @@ -835,7 +835,6 @@ | 
| 836 | 836 | processinfoprint += "blocked since: 0x%08x      " %     (procinfolist[ptr]['blocked_since']) | 
| 837 | 837 | processinfoprint += "blocked by ptr: 0x%08x\n" %        (procinfolist[ptr]['blocked_by_ptr']) | 
| 838 | 838 | processinfoprint += "err_no: 0x%08x      " %            (procinfolist[ptr]['err_no']) | 
| 839 |  | -        processinfoprint += "nameptr: 0x%08x\n" %               (procinfolist[ptr]['namepointer'])
 | 
| 840 | 839 | blocktype = ("THREAD_NOT_BLOCKED", "THREAD_BLOCK_SLEEP", "THREAD_BLOCK_MUTEX", "THREAD_BLOCK_WAKEUP", "THREAD_DEFUNCT_STKOV", "THREAD_DEFUNCT_PANIC") | 
| 841 | 840 | processinfoprint += "block type: %s\n" %                (blocktype[procinfolist[ptr]['block_type']]) | 
| 842 | 841 | threadtype = ("USER_THREAD", "SYSTEM_THREAD") | 
| — | — | @@ -842,11 +841,11 @@ | 
| 843 | 842 | processinfoprint += "thread type: %s\n" %               (threadtype[procinfolist[ptr]['thread_type']]) | 
| 844 | 843 | processinfoprint += "priority: 0x%02x      " %          (procinfolist[ptr]['priority']) | 
| 845 | 844 | processinfoprint += "cpu load: 0x%02x\n" %              (procinfolist[ptr]['cpuload']) | 
|  | 845 | + | 
|  | 846 | +        ptr += 1 | 
| 846 | 847 |  | 
| 847 |  | -        ptr += 1
 | 
| 848 |  | -      
 | 
| 849 |  | -      processinfoprint += "--------------------------------------------------------------------------------"
 | 
| 850 |  | -      
 | 
|  | 848 | +      processinfoprint += "--------------------------------------------------------------------------------\n" | 
|  | 849 | + | 
| 851 | 850 | return processinfoprint | 
| 852 | 851 |  | 
| 853 | 852 |  | 
| — | — | @@ -864,11 +863,14 @@ | 
| 865 | 864 | self.__checkstatus(response) | 
| 866 | 865 |  | 
| 867 | 866 | tablesize = struct.unpack("<I", response[8:12])[0] | 
| 868 |  | -      procinfo += response[0x10:0x10 + blocklen]
 | 
| 869 | 867 |  | 
| 870 | 868 | if tablesize <= offset + blocklen: | 
|  | 869 | +        blocklen = tablesize - offset | 
|  | 870 | +        procinfo += response[0x10:0x10 + blocklen] | 
| 871 | 871 | structversion = struct.unpack("<I", response[4:8])[0] | 
| 872 | 872 | tablesize = struct.unpack("<I", response[8:12])[0] | 
|  | 873 | +      else: | 
|  | 874 | +        procinfo += response[0x10:0x10 + blocklen] | 
| 873 | 875 |  | 
| 874 | 876 | offset += blocklen | 
| 875 | 877 |  | 
| — | — | @@ -879,12 +881,11 @@ | 
| 880 | 882 |  | 
| 881 | 883 | out = (structversion, tablesize, procinfotolist(procinfo, structversion)) | 
| 882 | 884 |  | 
| 883 |  | -    self.__myprint(" done\n\
 | 
| 884 |  | -                    Process information struct version: 0x%08x\n\
 | 
| 885 |  | -                    Total size of process information table: 0x%08x\n\
 | 
| 886 |  | -                    %s\n\n"
 | 
| 887 |  | -                  % (out[0], out[1], procinfotostring(out[2], structversion))
 | 
| 888 |  | -                  , silent)
 | 
|  | 885 | +    self.__myprint(" done\n"\ | 
|  | 886 | +                   + "Process information struct version: 0x%08x\n" % out[0]\ | 
|  | 887 | +                   + "Total size of process information table: 0x%08x\n" % out[1]\ | 
|  | 888 | +                   + procinfotostring(out[2], 1)\ | 
|  | 889 | +                   + "\n\n") | 
| 889 | 890 |  | 
| 890 | 891 | return out | 
| 891 | 892 |  |