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 [2024/12/27 04:30] (current) hyphop [Read for reference] |
||
---|---|---|---|
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> | ||