A NodeJS alternative to nrfjprog
This is a NodeJS driver for the Segger JLink command line tool, jlinkexe
,
including conveniences found in nrfjprog
(Nordic's commandline tool for the NRF series of micro-controllers).
Calls the jlinkexe cli tool for maximum compatibility. Tested on Windows, MacOS and Raspberry Pi.
First, install the nRF Command line Tools,
including the jlink cli, Jlinkexe
Then install node-jlink
npm install -g @connectedyard/node-jlink
Test you installation
node-jlink -t
Usage: node-jlink [options] <commands>
All args after options will be sent to the jlink exe as commands, followed by exit
All commands return promises.
var jlink = require("node-jlink");
jlink.reset(); // resets the device attached to the jlink programmer
var readMyMemCommands = ["h", "mem 0x10001004, 0x20"];
jlink.executeCommands( readMyMemCommands )
.then( function( results ){
console.log( result.stdout );
});
The following nrfjprog commands are implemented as follows.
These commands return a Promise, resolve( true ) on success, reject( error ) on failure.
jlink.reset(); // nrfjprog --reset
jlink.pinReset(); // nrfjprog --pinreset
jlink.eraseAll(); // nrfjprog --eraseAll
jlink.program( firmwareFilePath ); // nrfjprog --program <firmwareFilePath>
Flash memory is returned in a buffer.
jlink.readmem( address, numBytes) // nrfjprog --memrd <address> --w 32 --n <numBytes>
.then( function( buffer ){
})
.catch( function( error ){
});
Arbitrary JLinkEXE scripts can be executed by passing an array of commands into jlink.executeCommands( commands )
. An Promise is returned, and on resolve the Result be as follows:
{
stdout: String, captured from jlinkexe stdout stream, or empty string
stderr: String, captured from jlinkexe stdout stream, or empty string
code: Integer, captured from jlinkexe exit code, or 0
error: Error, from jlinkexe or internal error, or null
}
A complete list of JLinkEXE commands are available at https://www.segger.com/admin/uploads/productDocs/UM08001_JLink.pdf
By default, the JLinkEXE command is expected to be found on the path as jlinkexe
.
The default commandline options to jlinkexe are "-device nrf51822 -if swd -speed 4000"
.
These options will be sent with every command unless options
are passed to executeCommands
To change these values, set jlink.JLinkExe
and jlink.JLinkExeOptions
.
To test your executable path, call jlink.isJLinkEXEInstalled()
or run
node-jlink -t