1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 import sys
33 import os
34 import usb
35 import time
36
37
38
39 BULK_IN_EP = 0x82
40 BULK_OUT_EP = 0x01
41
42
43 ERASE_FLASH_CMD=0
44 WRITE_FLASH_CMD=1
45 LEER_FLASH_CMD=2
46 VALID_APPLICATION_CMD=3
47 RESET_CMD=4
48 SECTION_DESCRIPTOR_CMD=5
49
50 vendor=int("0x04D8",16)
51 product=int("0xFEAA",16)
53 leerbyte0=ERASE_FLASH_CMD
54 adresse="%06X"%adresse
55 leerbyte1=int(adresse[4:6],16)
56 leerbyte2=int(adresse[2:4],16)
57 leerbyte3=int(adresse[0:2],16)
58 manejador.bulkWrite(BULK_OUT_EP,chr(leerbyte0)+chr(leerbyte1)+chr(leerbyte2)+chr(leerbyte3),200)
59
61 data=[]
62 oldadd=0
63 maxadd=0
64 fichero=open(file,'r')
65 lines=fichero.readlines()
66 fichero.close()
67 for line in lines:
68 nb=int(line[1:3],16)
69 add=int(line[3:7],16)
70 if (add>oldadd) and (add<0x8000):
71 maxadd=add+nb
72 oldadd=add
73 maxadd=maxadd+64-(maxadd%64)
74 for i in range(maxadd):
75 data.append(0xFF)
76 for line in lines:
77 nb=int(line[1:3],16)
78 add=int(line[3:7],16)
79 if add>=0x2000 and add<0x8000:
80 for i in range(0,nb):
81 data[add+i]=int(line[9+(2*i):11+(2*i)],16)
82 index=0
83 frame=[]
84 for i in range(0x2000,maxadd):
85 if i%64==0:
86 borrar(i,manejador)
87 if i%32==0:
88 index=0
89 if frame!=[]:
90 EscribeUSB(i-32,frame,manejador)
91 frame=[]
92 if data[i]!=[]:
93 frame.append(data[i])
94 index+=1
95 print "el archivo fue cargado con exito"
97 leerbyte0=WRITE_FLASH_CMD
98 adresse="%06X"%adresse
99 leerbyte1=int(adresse[4:6],16)
100 leerbyte2=int(adresse[2:4],16)
101 leerbyte3=int(adresse[0:2],16)
102 frame=chr(leerbyte0)+chr(leerbyte1)+chr(leerbyte2)+chr(leerbyte3)
103 for i in range(32):
104 frame=frame+chr(bloc[i])
105 manejador.bulkWrite(BULK_OUT_EP,frame,200)
106
108 np05=None
109 buses=usb.busses()
110 for bus in buses:
111 for device in bus.devices:
112 if device.idVendor==vendor and device.idProduct==product:
113 np05= device
114 if np05==None:
115 print "no esta el pic"
116 return 1
117 try:
118 manejador=np05.open()
119 manejador.setConfiguration(2)
120 manejador.claimInterface(0)
121 except Exception, ex:
122 print "error al leer el pic"
123 return 2
124 try:
125
126 CargaArchivo(archivo,manejador)
127 manejador.releaseInterface()
128 except Exception, ex:
129 return 3
130
131 return 0
132