J'écris un démon en utilisant node.js, qui s'exécute sous systemd et monitor the status of the power supply voltage on a raspberry pi 2 B ."initMboxBlock: init mbox zaps a échoué" et "Impossible de verrouiller /var/run/pigpio.id" lors de l'utilisation de la bibliothèque pigpio dans un démon
J'utilise le node.js wrapper au pigpio library
Le code que j'ai commencé avec était comme suit:
var Gpio = require('pigpio').Gpio,
gpio;
gpio = new Gpio(35);
const checkIntervalDuringBrownout = 5000;
const checkIntervalDuringGoodSupply = 100;
var timer = 100;
function startTimer() {
setTimeout(function() {
var brownoutState = isUnderVoltage();
if(brownoutState) {
console.log("Brownout - telling the syslog ...");
console.log("Brownout ... Power Supply Voltage went below 4.63 V");
timer = checkIntervalDuringBrownout;
}
else {
timer = checkIntervalDuringGoodSupply;
}
startTimer();
}, timer);
}
function isUnderVoltage() {
var ledStatus = gpio.digitalRead();
if(ledStatus === 1) {
return 0;
}
else if (ledStatus === 0) {
//console.log("brownout");
return 1;
}
else {
console.log("We got neither a 1 or a 0: ", ledStatus);
}
}
startTimer();
devenais mystérieux messages d'erreur dans le syslog:
Aug 2 00:22:10 chintu systemd[1]: Started Brownout Monitor and Logger written using node.js.
Aug 2 00:22:11 chintu brownout-monitor[5203]: 2017-08-02 00:22:11 initMboxBlock: init mbox zaps failed
Aug 2 00:22:11 chintu brownout-monitor[5203]: /home/pi/sandbox/raspi2-power-monitor/node_modules/pigpio/pigpio.js:11
Aug 2 00:22:11 chintu brownout-monitor[5203]: pigpio.gpioInitialise();
Aug 2 00:22:11 chintu brownout-monitor[5203]:^
Aug 2 00:22:11 chintu brownout-monitor[5203]: Error: pigpio error -1 in gpioInitialise
Aug 2 00:22:11 chintu brownout-monitor[5203]: at Error (native)
Aug 2 00:22:11 chintu brownout-monitor[5203]: at initializePigpio (/home/pi/sandbox/raspi2-power-monitor/node_modules/pigpio/pigpio.js:11:12)
Aug 2 00:22:11 chintu brownout-monitor[5203]: at new Gpio (/home/pi/sandbox/raspi2-power-monitor/node_modules/pigpio/pigpio.js:25:3)
et
Aug 2 00:17:11 chintu systemd[1]: Starting Brownout Monitor and Logger written using node.js...
Aug 2 00:17:11 chintu systemd[1]: Started Brownout Monitor and Logger written using node.js.
Aug 2 00:17:12 chintu brownout-monitor[4555]: 2017-08-02 00:17:12 initInitialise: Can't lock /var/run/pigpio.pid
Aug 2 00:17:12 chintu brownout-monitor[4555]: /home/pi/sandbox/raspi2-power-monitor/node_modules/pigpio/pigpio.js:11
Aug 2 00:17:12 chintu brownout-monitor[4555]: pigpio.gpioInitialise();
Aug 2 00:17:12 chintu brownout-monitor[4555]:^
Aug 2 00:17:12 chintu brownout-monitor[4555]: Error: pigpio error -1 in gpioInitialise
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Error (native)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at initializePigpio (/home/pi/sandbox/raspi2-power-monitor/node_modules/pigpio/pigpio.js:11:12)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at new Gpio (/home/pi/sandbox/raspi2-power-monitor/node_modules/pigpio/pigpio.js:25:3)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Object.<anonymous> (/home/pi/sandbox/raspi2-power-monitor/index.js:7:8)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Module._compile (module.js:570:32)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Object.Module._extensions..js (module.js:579:10)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Module.load (module.js:487:32)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at tryModuleLoad (module.js:446:12)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Function.Module._load (module.js:438:3)
Aug 2 00:17:12 chintu brownout-monitor[4555]: at Module.runMain (module.js:604:10)
Aug 2 00:17:12 chintu systemd[1]: brownout-monitor.service: main process exited, code=exited, status=1/FAILURE
Aug 2 00:17:12 chintu systemd[1]: Unit brownout-monitor.service entered failed state.
Vous cherchez ces erreurs led me to a page où la solution a dit -
Je vais devoir vérifier le code, mais du haut de ma tête le plus probable est que le GPU (qui alloue de la mémoire mbox DMA) n'a pas mémoire de secours.
Comment est-ce que cela peut être fixé?