|
|
#from PyQt4 import QtGui
|
|
|
#from PyQt4 import QtCore
|
|
|
#from PyQt4 import Qt
|
|
|
import sys
|
|
|
def elfSize(FileName,section):
|
|
|
bashCommand = "/usr/bin/size "+ FileName
|
|
|
import subprocess
|
|
|
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
|
|
|
result = process.communicate()[0].split("\n")
|
|
|
header = result[0].lstrip()
|
|
|
line1 = result[1].lstrip()
|
|
|
hcolumns=header.split()
|
|
|
columns=line1.split()
|
|
|
for i in range(0,len(hcolumns)):
|
|
|
if(hcolumns[i].find(section) != -1):
|
|
|
return int(columns[i])
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
def elfAddress(FileName,section):
|
|
|
bashCommand = "readelf -S " + FileName
|
|
|
import subprocess
|
|
|
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
|
|
|
result = process.communicate()[0].split()
|
|
|
for i in range(0,len(result)):
|
|
|
if(result[i].find('.'+section) != -1):
|
|
|
return int("0x"+result[i+2],16)
|
|
|
return 0;
|
|
|
|
|
|
def compare(data1,data2):
|
|
|
if len(data1)!=len(data2):
|
|
|
return [-1,-1]
|
|
|
for i in range(len(data1)):
|
|
|
if data1[i]!=data2[i]:
|
|
|
return [-1,i]
|
|
|
return [1,-1]
|
|
|
|
|
|
def cycles(rootPlugin,textAddress,textSize,orgiData,count):
|
|
|
for i in range(count):
|
|
|
rootPlugin.dumpMemory(textAddress,textSize/4,"/opt/dump"+str(i)+".srec","srec")
|
|
|
data = rootPlugin.Read(textAddress,textSize/4)
|
|
|
result = compare(data,orgiData)
|
|
|
if(result[0]==1):
|
|
|
print("test number "+str(i)+" = success")
|
|
|
else:
|
|
|
print("test number "+str(i)+" = error @0x" + hex(textAddress + result[1]))
|
|
|
|
|
|
|
|
|
#app = QtGui.QApplication(sys.argv)
|
|
|
fileName = QtGui.QFileDialog.getOpenFileName()
|
|
|
|
|
|
if PySocExplorer.ElfFile.isElf(fileName):
|
|
|
proxy.loadSysDriver("SpwPlugin","SpwPlugin0")
|
|
|
SpwPlugin0.selectBridge("STAR-Dundee Spw USB Brick")
|
|
|
|
|
|
proxy.loadSysDriverToParent("dsu3plugin","SpwPlugin0")
|
|
|
proxy.loadSysDriverToParent("LFRControlPlugin","SpwPlugin0")
|
|
|
SpwPlugin0.TCPServerConnect()
|
|
|
LFRControlPlugin0.TCPServerConnect()
|
|
|
proxy.loadSysDriverToParent("APB_UART_PLUGIN","SpwPlugin0")
|
|
|
availableBrickCount = SpwPlugin0.StarDundeeGetAvailableBrickCount()
|
|
|
print(str(availableBrickCount) + " SpaceWire brick(s) found")
|
|
|
|
|
|
SpwPlugin0.StarDundeeSelectBrick(1)
|
|
|
SpwPlugin0.StarDundeeSetBrickAsARouter(1)
|
|
|
SpwPlugin0.connectBridge()
|
|
|
APB_UART_PLUGIN0.setUARTPortNane("/dev/ttyUSB1")
|
|
|
APB_UART_PLUGIN0.setUARTPortSpeed(38400)
|
|
|
APB_UART_PLUGIN0.openUart()
|
|
|
textSize= elfSize(fileName,"text")
|
|
|
textAddress= elfAddress(fileName,"text")
|
|
|
print "Found text section@" + hex(textAddress)+ " of " + str(textSize) +" bytes"
|
|
|
print "loading software"
|
|
|
dsu3plugin0.openFile(fileName)
|
|
|
dsu3plugin0.loadFile()
|
|
|
SpwPlugin0.dumpMemory(textAddress,textSize/4,"/opt/dumpOrig.srec","srec")
|
|
|
dsu3plugin0.run()
|
|
|
orgiData = SpwPlugin0.Read(textAddress,textSize/4)
|
|
|
orgiData = SpwPlugin0.Read(textAddress,textSize/4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|