Skip to content

Commit

Permalink
v1.1.0
Browse files Browse the repository at this point in the history
BSP
* Trusted firmware and secure boot
* BIST includes additional testing for ISP/DSP/encoder
* perf-stat includes PMU
* SDIO support high-speed tunning for both SD and EMMC
* SDR 104 (200Mhz SD clock)
* SPI – LSB support
* I2S acceleration by SCU/M4
* M4 and A53 watchdog

Imaging sub-system
* Support 15 fps with imx334
* Support for new sensor imx678
* Improvements for noisy/dark frames (2DNR mode)
* New v4l2 interface for controlling 3A and other IQ features

DSP
* API optimization for speed
* Blur support in NV12 frames
* Libhailodsp supports spdlog
* New API for image format conversions (NV12 to/from RGB)
* DSP API changes to comply with v4l2 naming

Introducing Media Llibrary – new set of API for image correction and encoder
New repository added to release, supports the following functionality:
* Lens distortion correction (LDC) and digital image stabilization (DIS) for 4K input
* (based on VSM from ISP)
* Digital zoom (bilinear, bicubic)
* Multiple rescale kernel (optimized), with additional rotation and flip features
* Encoder C++ API for HEVC and H264
* Known Issue:
* Currently performance is under development and does not reach 30 fps.
* Full video pipeline (LDC + multi-rescale, no digital zoom magnification, without OSD)
* 4 outputs (4K, FHD, HD, SD) @ 30 fps: 24.7 fps
* Additional 4K frame @ 15 fps: 22.5 fps
  • Loading branch information
HailoRT-Automation committed Oct 10, 2023
1 parent 8b065a5 commit 7a847cc
Show file tree
Hide file tree
Showing 137 changed files with 8,422 additions and 1 deletion.
49 changes: 48 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,48 @@
# meta-hailo-soc
# Meta-Hailo-Soc #


## Introduction

This repository contains the Hailo layers for OpenEmbedded.

- **meta-hailo-bsp**
- This layer contains machines and Board Support Package recipes for the Vision Processor Unit architecture.
- **meta-hailo-bsp-examples**
- This layer contains example recipes for the Vision Processor Unit.
- **meta-hailo-dsp**
- This layer contains recipes for the Digital Processing Unit such as firmware, driver and user space applications.
- **meta-hailo-imaging**
- This layer contains recipes for the Image Signal Processing and the Encoder such as firmware, driver and user space applications.
- **meta-hailo-linux**
- This layer contains recipes for the user space such as system configurations and general applications.
- **meta-hailo-media-library**
- This layer contains recipes for the Media Library API such as LDC API, Encoder OSD API and more.

## Usage
### Prerequisites

- Install [kas](https://pypi.org/project/kas/) python package.
### Development
- kas directory contains the yml configurations used to initiate the [Bitbake](https://docs.yoctoproject.org/bitbake/) environment
- To initialize the environment and start image compilation run:
- `kas build kas/hailo15-evb.yml`
- To start working with Bitbake CLI, activate the environment by:
- `source poky/oe-init-build-env`

## Changelog

See hailo.ai developer zone - Vision Processor Unit changelog (registration required).

## Contact

Contact information and support is available at [**hailo.ai**](https://hailo.ai/contact-us/).

## About Hailo

Hailo offers breakthrough AI Inference Accelerators and AI Vision Processors uniquely designed to accelerate embedded deep learning applications on edge devices.

The Hailo AI Inference Accelerators allow edge devices to run deep learning applications at full scale more efficiently, effectively, and sustainably, with an architecture that takes advantage of the core properties of neural networks.

The Hailo AI Vision Processors (SoC) combine Hailo's patented and field proven AI inferencing capabilities with advanced computer vision engines, generating premium image quality and advanced video analytics.

For more information, please visit [**hailo.ai**](https://hailo.ai/).
3 changes: 3 additions & 0 deletions kas/hailo15-evb-security-camera-machine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
header:
version: 11
machine: hailo15-evb-security-camera
7 changes: 7 additions & 0 deletions kas/hailo15-evb.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
build_system: openembedded
header:
version: 11
includes:
- yocto-base.yml
- hailo15-vpu-base.yml
- hailo15-evb-security-camera-machine.yml
3 changes: 3 additions & 0 deletions kas/hailo15-sbc-machine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
header:
version: 11
machine: hailo15-sbc
7 changes: 7 additions & 0 deletions kas/hailo15-sbc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
build_system: openembedded
header:
version: 11
includes:
- yocto-base.yml
- hailo15-vpu-base.yml
- hailo15-sbc-machine.yml
74 changes: 74 additions & 0 deletions kas/hailo15-vpu-base.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
header:
version: 11

local_conf_header:
DSP: |
DSP_COMPILATION_MODE = "release"
DSP_FULL_IMAGING = "false"
gst-debug: |
IMAGE_INSTALL:append = " gst-instruments"
PACKAGECONFIG:append:pn-gstreamer1.0 = " gst-tracer-hooks tracer-hooks coretracers"
gstreamer: |
ADD_GSTREAMER_TO_IMAGE = "true"
hailo-integrated-nnc: |
IMAGE_INSTALL:append = " hailo-integrated-nnc"
hailo15-nnc-fw: |
IMAGE_INSTALL:append = " hailo15-nnc-fw"
imx334_enable: |
MACHINE_FEATURES:append = " imx334"
MACHINE_FEATURES:remove = " imx678"
flags: |
LICENSE_FLAGS_ACCEPTED:append = " commercial"
libgsthailo: |
IMAGE_INSTALL:append = " libgsthailo"
libhailort: |
IMAGE_INSTALL:append = " libhailort"
IMAGE_INSTALL:append = " hailortcli"
media-library: |
IMAGE_INSTALL:append = " libgstmedialib libencoderosd"
opencv: |
CORE_IMAGE_EXTRA_INSTALL:append = " opencv"
tappas: |
IMAGE_INSTALL:append = " \
libgsthailotools \
hailo-post-processes \
tappas-apps \
tappas-tracers"
thermal_debug_en: |
MACHINE_FEATURES:append = " thermal_debug_en"
tools: |
IMAGE_INSTALL:append = " \
vim \
tmux \
htop \
gdb \
perf \
"
x264: |
IMAGE_INSTALL:append = " x264 gstreamer1.0-plugins-ugly"
PACKAGECONFIG:append:pn-gstreamer1.0-plugins-ugly = " x264"
repos:
meta-hailo:
url: "https://github.com/hailo-ai/meta-hailo.git"
refspec: kirkstone
layers:
meta-hailo-libhailort:
meta-hailo-vpu:
meta-hailo-tappas:
meta-hailo-dsp:
layers:
meta-hailo-dsp:
meta-hailo-bsp:
layers:
meta-hailo-bsp:
meta-hailo-bsp-examples:
meta-hailo-imaging:
layers:
meta-hailo-imaging:
meta-hailo-linux:
layers:
meta-hailo-linux:
meta-hailo-media-library:
layers:
meta-hailo-media-library:
47 changes: 47 additions & 0 deletions kas/yocto-base.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
header:
version: 11
distro: poky

target:
- core-image-minimal
- hailo-update-image

local_conf_header:
qt5: |
IMAGE_INSTALL:append = " qtbase"
repos:
meta-openembedded:
url: "https://git.openembedded.org/meta-openembedded"
refspec: fcc7d7eae82be4c180f2e8fa3db90a8ab3be07b7
layers:
meta-filesystems:
meta-networking:
meta-oe:
meta-python:
meta-multimedia:

poky:
url: "https://git.yoctoproject.org/poky"
refspec: a5ea426b1da472fc8549459fff3c1b8c6e02f4b5
layers:
meta:
meta-poky:
meta-yocto-bsp:

meta-swupdate:
url: "https://github.com/sbabic/meta-swupdate.git"
refspec: 58878bb980877f51b607d71c3648bd479d68e2a5

meta-arm:
url: "https://git.yoctoproject.org/meta-arm"
refspec: c39bb4ce3b60b73d35c5fb06af012432e70d6b38
layers:
meta-arm-toolchain:
meta-arm:

meta-qt5:
url: "https://github.com/meta-qt5/meta-qt5.git"
refspec: kirkstone
layers:
.:
19 changes: 19 additions & 0 deletions meta-hailo-bsp-examples/COPYING.MIT
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Copyright (c) 2023 Hailo Technologies Ltd.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY kIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
17 changes: 17 additions & 0 deletions meta-hailo-bsp-examples/conf/layer.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/hailo-swupdate/recipes-*/*/*.bb \
${LAYERDIR}/hailo-swupdate/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "meta-hailo-bsp-examples"
BBFILE_PATTERN_meta-hailo-bsp-examples = "^${LAYERDIR}/"
BBFILE_PRIORITY_meta-hailo-bsp-examples = "7"

LAYERDEPENDS_meta-hailo-bsp-examples = "core meta-hailo-bsp"
LAYERSERIES_COMPAT_meta-hailo-bsp-examples = "kirkstone"

IMAGE_BOOT_FILES += "swupdate-image-${MACHINE}.ext4.gz"
WKS_FILE_DEPENDS += "swupdate-image"

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/sh
resize2fs /dev/mmcblk$1p2 2>&1
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
software =
{
version = "v0.34-build-2023-10-03";
description = "Firmware update for Hailo SoC";
hardware-compatibility: [ "1.0"];
partitions: (
{
type = "diskpart";
device = "/dev/mmcblk@@SWUPDATE_MMC_INDEX@@";
properties: {
labeltype = "gpt";
partition-1 = [ "size=64M", "start=2048",
"name=boot", "type=BC13C2FF-59E6-4262-A352-B275FD6F7172",
"fstype=fat32"];
partition-2 = ["start=133120",
"name=rootfs", "type=B921B045-1DF0-41C3-AF44-4C6F280D3FAE",
"fstype=ext4"];
}
}
);
images: (
{
filename = "core-image-minimal-@@MACHINE@@.ext4";
device = "/dev/mmcblk@@SWUPDATE_MMC_INDEX@@p2";
},
{
filename = "hailo15_scu_fw.bin";
device = "/dev/mtdblock0";
},
{
filename = "hailo_ddr_configuration.bin";
device = "/dev/mtdblock1";
},
{
filename = "u-boot-initial-env.bin";
device = "/dev/mtdblock2";
},
{
filename = "u-boot-spl.bin";
device = "/dev/mtdblock3";
},
);
files: (
{
filename = "fitImage";
path = "/fitImage";
device = "/dev/mmcblk@@SWUPDATE_MMC_INDEX@@p1";
filesystem = "vfat";
},
{
filename = "swupdate-image-@@MACHINE@@.ext4.gz";
path = "/swupdate-image-@@MACHINE@@.ext4.gz";
device = "/dev/mmcblk@@SWUPDATE_MMC_INDEX@@p1";
filesystem = "vfat";
},
{
filename = "u-boot-tfa.itb";
path = "/u-boot-tfa.itb";
device = "/dev/mmcblk@@SWUPDATE_MMC_INDEX@@p1";
filesystem = "vfat";
},
);
scripts: (
{
filename = "resize_rootfs.sh";
type = "postinstall";
data = "@@SWUPDATE_MMC_INDEX@@";
}
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
DESCRIPTION = "Recipe generating SWU image for Hailo SoC"
SECTION = ""

LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c"

SRC_URI = " \
file://sw-description \
file://resize_rootfs.sh \
"

SWUPDATE_MMC_INDEX = "0"
SWUPDATE_MMC_INDEX:hailo15-sbc = "1"

IMAGE_DEPENDS = "core-image-minimal hailo-ddr-configuration-native scu-fw u-boot-tfa-image"

# images and files that will be included in the .swu image
SWUPDATE_IMAGES += "core-image-minimal"
SWUPDATE_IMAGES += "swupdate-image"
SWUPDATE_IMAGES += "fitImage"
SWUPDATE_IMAGES += "u-boot-tfa.itb"
SWUPDATE_IMAGES += "u-boot-spl.bin"
SWUPDATE_IMAGES += "u-boot-initial-env.bin"
SWUPDATE_IMAGES += "hailo_ddr_configuration.bin"
SWUPDATE_IMAGES += "hailo15_scu_fw.bin"

SWUPDATE_IMAGES_FSTYPES[core-image-minimal] = ".ext4"
SWUPDATE_IMAGES_FSTYPES[swupdate-image] = ".ext4.gz"
SWUPDATE_IMAGES_FSTYPES[fitImage] = ""
SWUPDATE_IMAGES_NOAPPEND_MACHINE[fitImage] = "1"
SWUPDATE_IMAGES_FSTYPES[u-boot-tfa.itb] = ""
SWUPDATE_IMAGES_NOAPPEND_MACHINE[u-boot-tfa.itb] = "1"
SWUPDATE_IMAGES_FSTYPES[u-boot-spl.bin] = ""
SWUPDATE_IMAGES_NOAPPEND_MACHINE[u-boot-spl.bin] = "1"
SWUPDATE_IMAGES_FSTYPES[u-boot-initial-env.bin] = ""
SWUPDATE_IMAGES_NOAPPEND_MACHINE[u-boot-initial-env.bin] = "1"
SWUPDATE_IMAGES_FSTYPES[hailo_ddr_configuration.bin] = ""
SWUPDATE_IMAGES_NOAPPEND_MACHINE[hailo_ddr_configuration.bin] = "1"
SWUPDATE_IMAGES_FSTYPES[hailo15_scu_fw.bin] = ""
SWUPDATE_IMAGES_NOAPPEND_MACHINE[hailo15_scu_fw.bin] = "1"

inherit swupdate
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Copyright (c) 2023 Hailo Technologies Ltd.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY kIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Loading

0 comments on commit 7a847cc

Please sign in to comment.