This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
products:sbc:common:development:kbi [2022/07/05 21:39] nick |
products:sbc:common:development:kbi [2025/05/14 22:43] (current) nick |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== KBI (Khadas Bootloader Instructions) ====== | + | ====== KBI - Khadas Bootloader Instructions |
| + | |||
| + | This page introduces about KBI. You will learn how to manage the status of Khadas SBC through KBI. | ||
| + | |||
| + | <WRAP important > | ||
| + | Khadas Bootloader Instructions(KBI) can be used to: | ||
| + | * Manage the programmable MCU | ||
| + | * Carry out low level hardware management | ||
| + | * Let developers utilise all the features of Khadas SBCs. | ||
| + | </ | ||
| + | |||
| + | <WRAP info > | ||
| + | This page takes VIM2 as an example. | ||
| + | </ | ||
| + | |||
| + | ===== Uboot usage ===== | ||
| + | |||
| + | To get started, make sure you have booted into U-Boot: | ||
| + | |||
| + | ```shell | ||
| + | normal power off | ||
| + | boot wol: enable | ||
| + | Hit Enter or space or Ctrl+C key to stop autoboot -- : 0 | ||
| + | kvim2# _ | ||
| + | ``` | ||
| + | |||
| + | ==== Help information ===== | ||
| + | |||
| + | You can get help information by typing '' | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi | ||
| + | kbi - Khadas Bootloader Instructions sub-system | ||
| + | |||
| + | Usage: | ||
| + | kbi [function] [mode] [write|read] < | ||
| + | |||
| + | kbi version - read version information | ||
| + | kbi usid - read usid information | ||
| + | kbi adc - read adc value | ||
| + | kbi powerstate - read power on state | ||
| + | kbi poweroff - power off device | ||
| + | kbi ethmac - read ethernet mac address | ||
| + | |||
| + | kbi led [systemoff|systemon] w < | ||
| + | kbi led [systemoff|systemon] r - read blue led mode | ||
| + | |||
| + | kbi bootmode w < | ||
| + | kbi bootmode r - read current bootmode | ||
| + | |||
| + | kbi trigger [wol|rtc|ir|dcin|key|gpio] w <0|1> - disable/ | ||
| + | kbi trigger [wol|rtc|ir|dcin|key|gpio] r - read mode of a boot trigger | ||
| + | ``` | ||
| + | |||
| + | ==== MCU Verison ==== | ||
| + | |||
| + | Get the MCU firmware version: | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi version | ||
| + | version: 03 | ||
| + | ``` | ||
| + | |||
| + | ==== Initialize ==== | ||
| + | |||
| + | Initialize the KBI: | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi init | ||
| + | ``` | ||
| + | |||
| + | ==== Serial number ==== | ||
| + | |||
| + | Get the device serial number: | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi usid | ||
| + | usid: 000000 | ||
| + | ``` | ||
| + | |||
| + | ==== ADC ==== | ||
| + | |||
| + | Get ADC value: | ||
| + | ```shell | ||
| + | kvim2# kbi adc | ||
| + | adc: 0x236 | ||
| + | ``` | ||
| + | |||
| + | The ADC value can distinguish between hardware modules. | ||
| + | |||
| + | ==== Power Off ==== | ||
| + | |||
| + | Power off the device: | ||
| + | ```shell | ||
| + | kvim2# kbi poweroff | ||
| + | ``` | ||
| + | |||
| + | ==== MAC Address ==== | ||
| + | |||
| + | Get the Ethernet MAC address: | ||
| + | ```shell | ||
| + | kvim2# kbi ethmac | ||
| + | mac address: 98: | ||
| + | ``` | ||
| + | |||
| + | ==== LED Control ==== | ||
| + | |||
| + | Setup the blue LED: | ||
| + | |||
| + | The blue LED has 4 working modes: '' | ||
| + | |||
| + | The MCU,in charge of system power management, controls the blue LED. The CPU controls the white LED. | ||
| + | In this case, the blue LED still work even VIM2 was powered off. | ||
| + | |||
| + | The KBI can be used to program the blue LED for two working modes: | ||
| + | |||
| + | * system off / idle: power off status, the CPU is in power-down mode. | ||
| + | * system on / working: power on status, the CPU is in working mode. | ||
| + | |||
| + | For example: | ||
| + | |||
| + | To check the blue LED’s setting for '' | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi led systemoff r | ||
| + | led mode: breathe | ||
| + | ``` | ||
| + | |||
| + | To check the blue LED’s setting for '' | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi led systemon r | ||
| + | led mode: off [systemon] | ||
| + | ``` | ||
| + | When VIM2 is powered on,the blue LED is '' | ||
| + | |||
| + | You can also reset it to '' | ||
| + | ```shell | ||
| + | kvim2# kbi led systemon w breathe | ||
| + | ``` | ||
| + | |||
| + | You can also change the setting for '' | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi led systemon w Heartbeat | ||
| + | ``` | ||
| + | |||
| + | ==== Boot Mode ==== | ||
| + | |||
| + | You can flash the images to SPI or eMMC storage in VIM2, and setup one of them as the default boot media by KBI. | ||
| + | |||
| + | Set the default boot media as the SPI: | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi bootmode w spi | ||
| + | ``` | ||
| + | |||
| + | Set default boot media as eMMC storage: | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi bootmode w emmc | ||
| + | ``` | ||
| + | |||
| + | You can take a review on the default boot media by running: | ||
| + | |||
| + | ```shell | ||
| + | kvim2# kbi bootmode r | ||
| + | bootmode: emmc | ||
| + | ``` | ||
| + | |||
| + | ==== Boot Trigger Events ==== | ||
| + | |||
| + | VIM2 supports different events for triggering boot-up: | ||
| + | * WOL: Wake on Lan | ||
| + | * RTC: RTC timer | ||
| + | * IR: IR remote controller | ||
| + | * DCIN: Plug in the DC adapter | ||
| + | * Key: Power Key/ | ||
| + | * GPIO: External GPIO events | ||
| + | It means any of the above events can trigger VIM2 to power-on after that trigger event has been set to the '' | ||
| + | |||
| + | For example: | ||
| + | |||
| + | * Get the status of the WOL trigger event: \\ ```shell | ||
| + | kvim2# kbi trigger wol r | ||
| + | boot wol: disable | ||
| + | ``` | ||
| + | * WOL is disabled for the pre-installed ROM by default, you can enable it by writing a new value: \\ ```shell | ||
| + | kvim2# kbi trigger wol w 1 | ||
| + | set_wol: 1 | ||
| + | ``` | ||
| + | * In general, you will disable the WOL for security reasons. : \\ ```shell | ||
| + | kvim2# kbi trigger wol w 0 | ||
| + | set_wol: 0 | ||
| + | ``` | ||
| + | |||
| + | ====== Read for reference | ||
| + | |||
| + | * [[dl> | ||
| + | * [[dl> | ||
| + | * [[dl> | ||