Introduction
note: KL720 SDK v1.5.x is compatible with Kneron PLUS v1.3.x
1. Requirements
Hardware:
Board with KL720 chip, like 720 dongle, 96board, m.2 board.
(for MIPI application example) Kneron LW 3D module
(for ToF application example) ToF_ISR module
Software:
licensed software: ARM Keil MDK ARM Keil/MDK docs
licensed software: Cadence Tensilica Xtensa SDK
2. File Structure
The whole SDK package is composed of device firmware, the folder design is described below.
2.1 Basic Concept
The basic concept of FW folder structure is modularize and stratification for all source code. FW code belonged to same feature will be put to one dedicated folder and easy to include/exclude it. Refer to basic FW architecture shown below, the listed items will have corresponding folders.
Here is the example folder design for Kneron SDK.
└────firmware
├───app
├───build
│ └────solution_**
├───include
├───mdw
├───platform
│ ├───board
│ ├───dev
│ └────kl720
│ ├───common
│ └────scpu
│ ├───drv
│ ├───rtos/rtx
│ └───startup
└────utils
├───bin_gen
├───dfu
├───flash_programmer
├───JLink_programmer
└───spl_aes
2.2 Detailed explanation
firmware: Contains all device FW source/lib code, utilities, build environment
└───firmware
├───app
├───build
├───include
├───mdw
├───platform
└───utils
Basically, the firmware source_code=app+mdw+platform(+include). We hope all firmware source code will be put under these 3 folders and will not be influenced by any projects, that is, it's a source code data base. All project related code will be put under build folder.
app: All application firmware code. Every module or C file have prefix kapp_
.
build: Build environment. Include (Keil) project files, workspace, main.c, makefiles. C source files will be pulled in a project and then engineer generates a new project.
include: C header files for all source code
mdw: Middleware. It's kind of "service", "manager". We can put some useful and special purpose pure software feature here, such as file system, software timer, DFU function, memory management.
platform: It means a HW platform or a SoC for AI development. Platform consists of an SoC, a PCB, and some onboard devices(flash, eeprom...).
utils: some useful utilities, such as flash programming, calculate checksum...
└────firmware
└────build
├───example_**
├───lib
└────solution_**
There are two major components in build folder, example projects and solution projects. As the name implies, small app demo, simple peripheral drivers demo, or any features demonstration belong to example projects. The purpose is to show how to use our SDK. Solution projects is a solution for customer. It contains more features, or complex functions in a single project. Example projects will have example_ prefix and solution projects will have solution_ prefix. If you need to build a library and share with other projects, create lib projects in lib folder.
example_ : a prefix for example project. ex. example_i2c
, example_tiny_yolo
solution_ : a prefix for solution project. ex. solution_kdp2
lib: Some source files need to be hidden or need to generate library. Put the library project here
└────firmware
└────mdw
├───console
├───dfu
├───errand
├───flash
... ...
Collect independent modules to become middle ware here. It can be generic flash driver, firmware upgrade manager, file system, etc.
└───firmware
└───platform
├───board
├───dev
│ ├───eeprom
│ ├───nand
│ ├───nor
│ └───wifi
└────kl720
├───common
└────scpu
├───drv
├───rtos
└───startup
Platform = board + dev + ASIC
board: PCB information, flash size, IO mapping,
dev: device drivers, such as flash driver, eeprom driver, wifi module driver, panel driver, sensor driver
kl720: contain all peripheral drivers, real time OS, startup assembly code, and FW init code.
The whole SDK package is composed of device firmware, the folder design is described in this section.
3. Flash Management
Flash Programming by UART, JLink.
4. Create New SDK Application
Step by step to create new SDK application, please refer to the section Kneron PLUS / Customized API.
5. Secure Boot
Kneron KL720 provide secure protect with AES and SHA.
6. SoC Peripheral Drivers
The peripheral definitions and prototypes for the application programming reference.
6.1 Supported/Unsupported Peripheral Table
Image Input
Peripherals | Companion | HICO |
---|---|---|
MIPI CSI RX | x | driver/example |
DVP | x | driver/example |
UVC Host | x | specified cameras |
USB(proprietary) | O | x |
SPI Master, non-DMA, DMA | x | driver/example |
SPI Slave, non-DMA, DMA | x | driver/example |
UART | x | x |
Image/Result Output
Peripherals | Companion | HICO |
---|---|---|
MIPI DSI TX | x | x |
MIPI CSI TX | x | x |
DVP | x | O |
UVC device | x | x |
USB bulk | x | O |
USB(proprietary) | O | x |
SPI Master, non-DMA, DMA | x | driver/example |
SPI Slave, non-DMA, DMA | x | driver/example |
UART | x | O |
I2C | x | driver/example |
I2S | x | x |
INTEL 8080 | x | x |
Peripheral Driver APIs
7. Power Management
Provide functions to allow developers control the power states switching.