@libs-scripts-mep/grav-fw-pvi 2.0.0 → 2.0.1
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 +30 -112
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,123 +26,41 @@ npm uninstall @libs-scripts-mep/grav-fw-pvi
|
|
|
26
26
|
| Renesas | Renesas Flash Programmer | ✔️ |
|
|
27
27
|
| Nuvoton | JLink v7.82 | ✔️ |
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## Exemplo de Utilização de Buffers
|
|
30
30
|
|
|
31
31
|
```js
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
} else {
|
|
52
|
-
callback(false, "Falha na gravação do firmware final")
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Realiza gravacao nos microcontroladores renesas atraves do PVI, via renesas flash programmer command line
|
|
59
|
-
* @param {string} dirProject Formato esperado: "I:\\\Documentos\\\Softwares\\\RENESAS\\\R5F51303ADFL\\\INV-301\\\301v06\\\301v06.rpj"
|
|
60
|
-
* @param {function} callback
|
|
61
|
-
* @param {number} timeOut
|
|
62
|
-
*/
|
|
63
|
-
static Renesas(params, callback, timeOut = 5000) {
|
|
64
|
-
|
|
65
|
-
//invoca o Renesas Flash Programmer passando os parametros informados
|
|
66
|
-
let result = pvi.runInstructionS(`RENESAS.gravafw`, [params])
|
|
67
|
-
|
|
68
|
-
//executa callback dependendo do resultado
|
|
69
|
-
if (result.includes(`Operation completed.`)) {
|
|
70
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #00EE66')
|
|
71
|
-
callback(true, result)
|
|
72
|
-
|
|
73
|
-
} else if (result.includes(`Cannot find the specified tool.`)) {
|
|
74
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #EE0033')
|
|
75
|
-
callback(null, `Gravador não respondeu`)
|
|
76
|
-
|
|
77
|
-
} else if (result.includes(`Error: No project file specifed.`)) {
|
|
78
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #EE0033')
|
|
79
|
-
callback(false, `Projeto informado é inválido`)
|
|
80
|
-
|
|
81
|
-
} else {
|
|
82
|
-
console.log(`%cLog Program:\n\n${result}`, ' color: #EE0033')
|
|
83
|
-
callback(false, `Falha na gravação do firmware final`)
|
|
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}`)
|
|
33
|
+
static async GravaFirmware(ObjParams) {
|
|
34
|
+
|
|
35
|
+
return new Promise(async (resolve) => {
|
|
36
|
+
|
|
37
|
+
if(await ExecGravacao(dirFirm, dirOpt, modelo_uC, ObjParams)){
|
|
38
|
+
console.log("GRAVOU")
|
|
39
|
+
}else{
|
|
40
|
+
console.log("NÃO GRAVOU")
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function ExecGravacao(dirFirm, dirOpt, modelo_uC, ObjParams) {
|
|
44
|
+
|
|
45
|
+
let RetornoGravacao = await GravaFW.STM8(dirFirm, dirOpt, modelo_uC, ObjParams.timeOut)
|
|
46
|
+
|
|
47
|
+
if (RetornoGravacao.sucess) {
|
|
48
|
+
|
|
49
|
+
return true
|
|
50
|
+
|
|
130
51
|
} else {
|
|
131
|
-
|
|
132
|
-
|
|
52
|
+
|
|
53
|
+
if (ObjParams.Tentativa >= ObjParams.MaxTentativas) {
|
|
54
|
+
return false
|
|
55
|
+
} else {
|
|
56
|
+
ObjParams.Tentativa++
|
|
57
|
+
return ExecGravacao(dirFirm, dirOpt, modelo_uC, ObjParams)
|
|
58
|
+
}
|
|
59
|
+
|
|
133
60
|
}
|
|
61
|
+
|
|
134
62
|
}
|
|
135
|
-
}
|
|
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
|
-
}
|
|
63
|
+
}
|
|
64
|
+
|
|
147
65
|
```
|
|
148
66
|
|