@libs-scripts-mep/grav-fw-pvi 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/grav-fw-pvi.js +73 -31
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ npm uninstall @libs-scripts-mep/grav-fw-pvi
|
|
|
24
24
|
| ---------- | ------------------------ | ------- |
|
|
25
25
|
| ST | STVP | ✔️ |
|
|
26
26
|
| Renesas | Renesas Flash Programmer | ✔️ |
|
|
27
|
+
| Nuvoton | JLink v7.82 | ✔️ |
|
|
27
28
|
|
|
28
29
|
## Resumo da Classe
|
|
29
30
|
|
|
@@ -82,5 +83,66 @@ static Renesas(params, callback, timeOut = 5000) {
|
|
|
82
83
|
callback(false, `Falha na gravação do firmware final`)
|
|
83
84
|
}
|
|
84
85
|
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Realiza gravacao nos microcontroladores Nuvoton atraves do PVI, via Jlink v7 command line
|
|
89
|
+
* @param {string} dirProject Formato esperado: "C:\\Users\\eduardo.rezzadori\\Desktop\\Farmwar\\193M3PL3v01_3.02.hex"
|
|
90
|
+
* @param {string} commandFile Arquivo de comandos JLink, pseudo-script de gravação
|
|
91
|
+
* @param {string} device modelo do micrcontrolador
|
|
92
|
+
* @param {function} callback
|
|
93
|
+
* @param {number} timeOut
|
|
94
|
+
*/
|
|
95
|
+
static JLink_v7(dirProject = null, commandFile = null, device, callback = () => { }, timeOut = 10000) {
|
|
96
|
+
// inicia as variaveis locais utilizadas
|
|
97
|
+
let error = null, observer = null, logGravacao = [], controleGravacao = null
|
|
98
|
+
const pathPVI = pvi.runInstructionS("GETPVIPATH", [])
|
|
99
|
+
|
|
100
|
+
// start do obsever para o retorno do cmd
|
|
101
|
+
observer = pvi.FWLink.globalDaqMessagesObservers.add((m, data) => {
|
|
102
|
+
console.log(m, data)
|
|
103
|
+
|
|
104
|
+
// monta um array para validar a gravação
|
|
105
|
+
logGravacao.push(data)
|
|
106
|
+
|
|
107
|
+
// aguarda a string final do processo de gravação
|
|
108
|
+
if (data == "Script processing completed.") {
|
|
109
|
+
pvi.FWLink.globalDaqMessagesObservers.clear()
|
|
110
|
+
pvi.daq.init()
|
|
111
|
+
logGravacao.forEach((e) => {
|
|
112
|
+
|
|
113
|
+
// mensagem que valida a gravação
|
|
114
|
+
if (e == "O.K.") {
|
|
115
|
+
observer = () => { }
|
|
116
|
+
controleGravacao = true
|
|
117
|
+
// erro conhecido
|
|
118
|
+
} else if (e == "Cannot connect to target.") {
|
|
119
|
+
error = e
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
// retorno convencional do script
|
|
124
|
+
if (controleGravacao) {
|
|
125
|
+
clearTimeout(timeOutGravacao)
|
|
126
|
+
callback(true, `Gravado com sucesso, caminho: ${dirProject}`)
|
|
127
|
+
} else if (error) {
|
|
128
|
+
clearTimeout(timeOutGravacao)
|
|
129
|
+
callback(false, `Falha na gravação, ${error}`)
|
|
130
|
+
} else {
|
|
131
|
+
clearTimeout(timeOutGravacao)
|
|
132
|
+
callback(false, `Falha na gravação, caminho: ${dirProject}`)
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, "sniffer.exec")
|
|
136
|
+
|
|
137
|
+
// execução do comando de gravação
|
|
138
|
+
pvi.runInstructionS("EXEC", [`${pathPVI}\\Plugins\\JLINK7\\JLink.exe`, `-device ${device} -CommandFile ${commandFile}`, "true", "true"])
|
|
139
|
+
|
|
140
|
+
// timeout para setar erro caso ocorra algum tipo de erro inesperado
|
|
141
|
+
let timeOutGravacao = setTimeout(() => {
|
|
142
|
+
pvi.FWLink.globalDaqMessagesObservers.clear()
|
|
143
|
+
pvi.daq.init()
|
|
144
|
+
callback(false, `Falha na gravação, verifique a conexão USB do gravador`)
|
|
145
|
+
}, timeOut)
|
|
146
|
+
}
|
|
85
147
|
```
|
|
86
148
|
|
package/grav-fw-pvi.js
CHANGED
|
@@ -139,47 +139,89 @@ class GravaFW {
|
|
|
139
139
|
static Renesas(dirProject = null, callback = () => { }, timeOut = 5000) {
|
|
140
140
|
|
|
141
141
|
if (dirProject != null) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #00EE66')
|
|
155
|
-
callback(true, result)
|
|
156
|
-
|
|
157
|
-
} else if (result.includes(`Cannot find the specified tool.`)) {
|
|
158
|
-
|
|
159
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #EE0033')
|
|
142
|
+
const eventObserverId = pvi.FWLink.globalDaqMessagesObservers.add((msg, [renesasOutLog]) => {
|
|
143
|
+
console.log(`%cLog Program: ${renesasOutLog}`, ' color: #B0E0E6')
|
|
144
|
+
|
|
145
|
+
if (renesasOutLog != undefined) {
|
|
146
|
+
if (renesasOutLog.includes(`Operation completed.`)) {
|
|
147
|
+
pvi.FWLink.globalDaqMessagesObservers.remove(eventObserverId)
|
|
148
|
+
clearTimeout(timeoutGravacao)
|
|
149
|
+
callback(true, `Gravação bem-sucedida: ${dirProject}`)
|
|
150
|
+
} else if (renesasOutLog.includes(`Cannot find the specified tool.`)) {
|
|
151
|
+
pvi.FWLink.globalDaqMessagesObservers.remove(eventObserverId)
|
|
152
|
+
clearTimeout(timeoutGravacao)
|
|
160
153
|
callback(null, `Gravador não respondeu`)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #EE0033')
|
|
154
|
+
} else if (renesasOutLog.includes(`Error: No project file specifed.`)) {
|
|
155
|
+
pvi.FWLink.globalDaqMessagesObservers.remove(eventObserverId)
|
|
156
|
+
clearTimeout(timeoutGravacao)
|
|
165
157
|
callback(false, `Projeto informado é inválido`)
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
158
|
+
} else if (renesasOutLog.includes(`The device is not responding.`)) {
|
|
159
|
+
pvi.FWLink.globalDaqMessagesObservers.remove(eventObserverId)
|
|
160
|
+
clearTimeout(timeoutGravacao)
|
|
161
|
+
callback(false, `Sem resposta do microcontrolador`)
|
|
162
|
+
} else if (renesasOutLog.includes(`A framing error occurred while receiving data`)) {
|
|
163
|
+
pvi.FWLink.globalDaqMessagesObservers.remove(eventObserverId)
|
|
164
|
+
clearTimeout(timeoutGravacao)
|
|
165
|
+
callback(false, `Falha ao receber dados do microcontrolador`)
|
|
172
166
|
}
|
|
173
167
|
}
|
|
174
|
-
},
|
|
168
|
+
}, "sniffer.exec")
|
|
175
169
|
|
|
176
|
-
let
|
|
177
|
-
|
|
170
|
+
let timeoutGravacao = setTimeout(() => {
|
|
171
|
+
pvi.FWLink.globalDaqMessagesObservers.remove(eventObserverId)
|
|
178
172
|
callback(false, `Tempo de gravação excedido`)
|
|
179
173
|
}, timeOut)
|
|
180
174
|
|
|
175
|
+
pvi.runInstructionS("EXEC", [`${pvi.runInstructionS("GETRESOURCESPATH", [])}/Renesas/RFPV3.Console.exe`, dirProject, "true", "true"])
|
|
181
176
|
} else {
|
|
182
177
|
callback(false, `Caminho do firmware não informado`)
|
|
183
178
|
}
|
|
184
179
|
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Realiza gravacao nos microcontroladores Nuvoton atraves do PVI, via JLink command line
|
|
183
|
+
* @param {string} dirProject Formato esperado: "C:\\Users\\eduardo.rezzadori\\Desktop\\Farmwar\\193M3PL3v01_3.02.hex"
|
|
184
|
+
* @param {string} commandFile Arquivo de comandos JLink, pseudo-script de gravação
|
|
185
|
+
* @param {string} device modelo do micrcontrolador
|
|
186
|
+
* @param {function} callback
|
|
187
|
+
* @param {number} timeOut
|
|
188
|
+
*/
|
|
189
|
+
static JLink_v7(dirProject = null, commandFile = null, device, callback = () => { }, timeOut = 10000) {
|
|
190
|
+
|
|
191
|
+
let error = null, observer = null, logGravacao = [], controleGravacao = null
|
|
192
|
+
const pathPVI = pvi.runInstructionS("GETPVIPATH", [])
|
|
193
|
+
|
|
194
|
+
observer = pvi.FWLink.globalDaqMessagesObservers.add((m, data) => {
|
|
195
|
+
console.log(m, data)
|
|
196
|
+
logGravacao.push(data)
|
|
197
|
+
if (data == "Script processing completed.") {
|
|
198
|
+
pvi.FWLink.globalDaqMessagesObservers.clear()
|
|
199
|
+
pvi.daq.init()
|
|
200
|
+
logGravacao.forEach((e) => {
|
|
201
|
+
if (e == "O.K.") {
|
|
202
|
+
observer = () => { }
|
|
203
|
+
controleGravacao = true
|
|
204
|
+
} else if (e == "Cannot connect to target.") {
|
|
205
|
+
error = e
|
|
206
|
+
}
|
|
207
|
+
})
|
|
208
|
+
if (controleGravacao) {
|
|
209
|
+
clearTimeout(timeOutGravacao)
|
|
210
|
+
callback(true, `Gravado com sucesso, caminho: ${dirProject}`)
|
|
211
|
+
} else if (error) {
|
|
212
|
+
clearTimeout(timeOutGravacao)
|
|
213
|
+
callback(false, `Falha na gravação, ${error}`)
|
|
214
|
+
} else {
|
|
215
|
+
clearTimeout(timeOutGravacao)
|
|
216
|
+
callback(false, `Falha na gravação, caminho: ${dirProject}`)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}, "sniffer.exec")
|
|
220
|
+
pvi.runInstructionS("EXEC", [`${pathPVI}\\Plugins\\JLINK7\\JLink.exe`, `-device ${device} -CommandFile ${commandFile}`, "true", "true"])
|
|
221
|
+
let timeOutGravacao = setTimeout(() => {
|
|
222
|
+
pvi.FWLink.globalDaqMessagesObservers.clear()
|
|
223
|
+
pvi.daq.init()
|
|
224
|
+
callback(false, `Falha na gravação, verifique a conexão USB do gravador`)
|
|
225
|
+
}, timeOut)
|
|
226
|
+
}
|
|
185
227
|
}
|