Files
Róbert Kiss b53751b408 chore(kboot): add more logging (#1008)
* chore(kboot): add more logging

* fix: add uncaughtException handler

* fix: wait to prevent race condition

* fix: don't close device after success left keyboard connection

* revert: remove extra delay

* revert: add back the waiting

* fix: always initialize new KBoot instance when try to configure I2C

* fix: increase the wait time between 2 IC2 reconnection

* fix: timing and usb reconnection

* fix: dont close kboot device

* feat: append the WithKboot to the firmware upgrade methods

* feat: revert back the blhost functionality
2019-09-13 10:17:44 +02:00
..
2019-01-18 17:37:31 +01:00
2019-01-18 17:37:31 +01:00
2019-01-18 17:37:31 +01:00

Javascript implementation of the Kinetis Bootloader protocol

Based on the Kinetis Bootloader v2.0.0 Reference Manual

Supported communication channels/protocols

  • USB
  • I2C
  • SPI
  • CAN
  • UART

Supported Commands

We implemented only the commands that is used in UHK software. If someone needs other commands, (s)he can easily implement it based on existing.

  • GetProperty
  • SetProperty
  • FlashEraseAll
  • FlashEraseRegion
  • FlashEraseAllUnsecure
  • ReadMemory
  • WriteMemory
  • FillMemory
  • FlashSecurityDisable
  • Execute
  • Call
  • Reset
  • FlashProgramOnce
  • FlashReadOnce
  • FlashReadResource
  • ConfigureQuadSpi
  • ReliableUpdate
  • ConfigureI2c
  • ConfigureSpi
  • ConfigureCan

How to use

  // Initialize peripheral
  const usbPeripheral = new UsbPeripheral({ productId: 1, vendorId: 1 });
  // Initialize Kboot
  const kboot = new KBoot(usbPeripheral);
  // Call the command
  const version = await kboot.getBootloaderVersion();
  // ... more commands
  
  // Close the communication channel. Release resources
  kboot.close();

If you have to communicate other I2C device over USB call kboot.configureI2c(i2cId) before the command.

  const usbPeripheral = new UsbPeripheral({ productId: 1, vendorId: 1 });
  const kboot = new KBoot(usbPeripheral);
  
  // Get the bootloader version of I2C device
  await kboot.configureI2c(i2cId);
  const version = await kboot.getBootloaderVersion();

TODO

  • Improve exception handling