Add Ambarella S3L

pull/208/head
Dmitry Ermakov 2022-03-06 21:49:30 +03:00
parent 46dbb359fd
commit cb40a2e473
46 changed files with 140446 additions and 9 deletions

View File

@ -0,0 +1,141 @@
name: "Ambarella-S3L"
on:
push:
branches:
- production
tags:
- "v*"
# schedule:
# - cron: "00 03 * * *"
workflow_dispatch:
jobs:
build_core:
name: OpenIPC firmware for Ambarella-s3l
runs-on: ubuntu-latest
steps:
- name: Checkout
id: checkout
uses: actions/checkout@v2
- name: Install build dependencies
id: install
run: |
make install-deps
mkdir -p tmp
- name: Free disk space
id: freshing
run: |
sudo swapoff -a
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker image ls -aq)
df -h
- name: Prepare buildroot
id: prepare
run: |
HEAD_TAG=$(git tag --points-at HEAD)
GIT_HASH=$(git rev-parse --short $GITHUB_SHA)
BRANCH_NAME=$(echo $GITHUB_REF | cut -d'/' -f 3)
if [ -z "$HEAD_TAG" ]; then
TAG_NAME="latest"
RELEASE_NAME="Development Build"
PRERELEASE=true
else
TAG_NAME=${{ github.ref }}
RELEASE_NAME="Release ${{ github.ref }}"
PRERELEASE=false
fi
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE
make prepare
- name: Build Ambarella-s3l firmware
id: build-ambarella-s3l-firmware
continue-on-error: true
run: |
ARCHIVE_FW="${GITHUB_WORKSPACE}/output/images/openipc.ambarella-s3l-br.tgz"
echo "ARCHIVE_FW=$ARCHIVE_FW" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE
make PLATFORM=ambarella BOARD=unknown_unknown_s3l_openipc all
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) -gt 2097152 ]] && echo "TG_NOTIFY=Warning, kernel size exceeded : $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) vs 2097152... AMBARELLA-S3L" >> $GITHUB_ENV && exit 1
# [[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) -gt 5242880 ]] && echo "TG_NOTIFY=Warning, rootfs size exceeded - $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) vs 5242880... AMBARELLA-S3L" >> $GITHUB_ENV && exit 1
cd ${GITHUB_WORKSPACE}/output/images
mv uImage uImage.s3l
mv rootfs.squashfs rootfs.squashfs.s3l
mv rootfs.ubi rootfs.ubi.s3l
md5sum rootfs.squashfs.s3l > rootfs.squashfs.s3l.md5sum
md5sum rootfs.ubi.s3l > rootfs.ubi.s3l.md5sum
md5sum uImage.s3l > uImage.s3l.md5sum
tar -cvzf $ARCHIVE_FW *s3l*
- name: Build Ambarella S3L SDK
id: build-ambarella-s3l-sdk
continue-on-error: true
run: |
ARCHIVE_SDK="${GITHUB_WORKSPACE}/output/images/arm-openipc-linux-musleabi_sdk-buildroot.tar.gz"
echo "ARCHIVE_SDK=$ARCHIVE_SDK" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE/output
make sdk
- name: Send warning message to telegram channel
env:
TG_TOKEN: ${{ secrets.TELEGRAM_TOKEN_BOT_OPENIPC }}
TG_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL_OPENIPC_DEV }}
if: steps.build-ambarella-s3l-firmware.outcome != 'success' || steps.build-ambarella-s3l-sdk.outcome != 'success'
run: |
TG_OPTIONS="-s --connect-timeout 30 --max-time 30"
TG_NOTIFY="${TG_NOTIFY:=Warning, Buildroot compiling error... AMBARELLA-S3L}"
TG_HEADER=$(echo -e "\r\n$TG_NOTIFY \r\n\r\nCommit: $GIT_HASH \r\nBranch: $BRANCH_NAME \r\nTag: $TAG_NAME \r\n\r\n\xE2\x9A\xA0 GitHub Actions")
curl $TG_OPTIONS -H "Content-Type: multipart/form-data" -X POST https://api.telegram.org/bot$TG_TOKEN/sendMessage \
-F chat_id=$TG_CHANNEL -F text="$TG_HEADER"
- name: Create release
uses: actions/create-release@v1
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.TAG_NAME }}
release_name: ${{ env.RELEASE_NAME }}
draft: false
prerelease: ${{ env.PRERELEASE }}
- name: Upload FW to release
uses: svenstaro/upload-release-action@v2
continue-on-error: true
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.ARCHIVE_FW }}
asset_name: "openipc.ambarella-s3l-br.tgz"
tag: ${{ env.TAG_NAME }}
overwrite: true
- name: Upload SDK to release
uses: svenstaro/upload-release-action@v2
continue-on-error: true
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.ARCHIVE_SDK }}
asset_name: "arm-openipc-ambarella-s3l-linux-musleabi_sdk-buildroot.tar.gz"
tag: ${{ env.TAG_NAME }}
overwrite: true
- name: Send binary file to telegram channel
env:
TG_TOKEN: ${{ secrets.TELEGRAM_TOKEN_BOT_OPENIPC }}
TG_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL_OPENIPC_DEV }}
run: |
TG_OPTIONS="-s --connect-timeout 30 --max-time 30"
TG_HEADER=$(echo -e "\r\nCommit: $GIT_HASH \r\nBranch: $BRANCH_NAME \r\nTag: $TAG_NAME \r\n\r\n\xE2\x9C\x85 GitHub Actions")
curl $TG_OPTIONS -H "Content-Type: multipart/form-data" -X POST https://api.telegram.org/bot$TG_TOKEN/sendDocument \
-F chat_id=$TG_CHANNEL -F document="@$ARCHIVE_FW" -F caption="$TG_HEADER"

View File

@ -1,4 +1,5 @@
source "$BR2_EXTERNAL_AMBARELLA_PATH/linux/Config.ext.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/ambarella-osdrv-s3l/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/ambarella_patcher/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/aura-httpd/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/dropbear-openipc/Config.in"
@ -15,7 +16,7 @@ source "$BR2_EXTERNAL_AMBARELLA_PATH/package/libsrt-openipc/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/libwebsockets-openipc/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/linux-firmware-openipc/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/majestic-fonts/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/majestic/Config.in"
#source "$BR2_EXTERNAL_AMBARELLA_PATH/package/majestic/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/mbedtls-openipc/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/microbe-web/Config.in"
source "$BR2_EXTERNAL_AMBARELLA_PATH/package/motors/Config.in"

File diff suppressed because it is too large Load Diff

View File

@ -34,15 +34,16 @@ BR2_LINUX_KERNEL_EXT_AMBARELLA_PATCHER_LIST="$(BR2_EXTERNAL_AMBARELLA_PATH)/boar
# Filesystem
# BR2_TARGET_TZ_INFO is not set
BR2_TARGET_ROOTFS_CPIO=y
# BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
BR2_TARGET_ROOTFS_UBI=y
BR2_ROOTFS_OVERLAY="$(TOPDIR)/../general/overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(TOPDIR)/../scripts/executing_commands_for_$(BR2_TOOLCHAIN_BUILDROOT_LIBC).sh"
# OpenIPC configuration
BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc"
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC v2.1"
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC v2.2"
BR2_TARGET_GENERIC_HOSTNAME="openipc-s3l"
BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches"
@ -51,7 +52,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
# BR2_PACKAGE_AMBARELLA_OSDRV_S3L is not set
BR2_PACKAGE_AMBARELLA_OSDRV_S3L=y
BR2_PACKAGE_HASERL=y
BR2_PACKAGE_HISI_GPIO=y
BR2_PACKAGE_IPCTOOL=y
@ -95,5 +96,5 @@ BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U=y
# BR2_PACKAGE_RTL8188EU is not set
# WIREGUARD
BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
# BR2_PACKAGE_WIREGUARD_TOOLS=y

View File

@ -1,4 +1,5 @@
include $(BR2_EXTERNAL_AMBARELLA_PATH)/linux/linux-ext-ambarella_patcher.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/ambarella-osdrv-s3l.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella_patcher/ambarella_patcher.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/aura-httpd/aura-httpd.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/dropbear-openipc/dropbear-openipc.mk
@ -15,7 +16,7 @@ include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/libsrt-openipc/libsrt-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/libwebsockets-openipc/libwebsockets-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/majestic-fonts/majestic-fonts.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/majestic/majestic.mk
#include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/majestic/majestic.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/microbe-web/microbe-web.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/motors/motors.mk
@ -24,4 +25,4 @@ include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/opus-openipc/opus-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/rtl8188fu-openipc/rtl8188fu-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/uacme-openipc/uacme-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/vtund-openipc/vtund-openipc.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/yaml-cli/yaml-cli.mk
include $(BR2_EXTERNAL_AMBARELLA_PATH)/package/yaml-cli/yaml-cli.mk

View File

@ -0,0 +1 @@
../../general/package/ambarella-osdrv-s3l

View File

@ -0,0 +1 @@
../../general/package/ambarella_patcher

View File

@ -73,6 +73,13 @@ sdk() {
#################################################################################
ambarella-s3l() {
soc="s3l"
fresh && make PLATFORM=ambarella BOARD=unknown_unknown_${soc}_openipc all && rename
}
#################################################################################
ak3918ev200() {
soc="ak3918ev200"
fresh && make PLATFORM=anyka BOARD=unknown_unknown_${soc}_openipc all && rename
@ -419,6 +426,11 @@ xm550() {
#################################################################################
# Build firmware
#######
#
ambarella-s3l # testing..
#
#######
#
# ak3918ev200 # testing..
#

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_AMBARELLA_OSDRV_S3L
bool "ambarella-osdrv-s3l"
help
ambarella-osdrv-s3l - Ambarella kernel modules and libs
https://openipc.org

View File

@ -0,0 +1,34 @@
################################################################################
#
# ambarella-osdrv-s3l
#
################################################################################
AMBARELLA_OSDRV_S3L_VERSION =
AMBARELLA_OSDRV_S3L_SITE =
AMBARELLA_OSDRV_S3L_LICENSE = MIT
AMBARELLA_OSDRV_S3L_LICENSE_FILES = LICENSE
define AMBARELLA_OSDRV_S3L_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/files/script/S95ambarella
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors
# $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/files/sensor/config/*.cfg
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/3.10.104/ambarella
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.104/ambarella $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/files/kmod/*.ko
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/files/script/load_ambarella
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors
# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/files/sensor/*.so
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib
# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(BR2_EXTERNAL_AMBARELLA_PATH)/package/ambarella-osdrv-s3l/files/lib/xxx.so
endef
$(eval $(generic-package))

View File

@ -0,0 +1,73 @@
#!/bin/sh
DAEMON="majestic"
PIDFILE="/var/run/$DAEMON.pid"
DAEMON_ARGS="-s"
# shellcheck source=/dev/null
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
load_majestic() {
printf 'Starting %s: ' "$DAEMON"
[ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, "
# shellcheck disable=SC2086 # we need the word splitting
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \
-- $DAEMON_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
# The daemon does not create a pidfile, and use "-m" to instruct start-stop-daemon to create one.
start() {
logger -s -p daemon.info -t anyka "Check MAC for Xiongmai devices"
if [ "$(fw_printenv -n ethaddr)" = "00:00:23:34:45:66" ]; then
logger -s -p daemon.info -t anyka "The eth0 interface has a lousy MAC, let's try to change it.."
XMMAC="$(ipcinfo --xm_mac)" && [ -n "${XMMAC}" ] && fw_setenv ethaddr ${XMMAC} && reboot -f || logger -s -p daemon.info -t anyka "It is not possible to install a new MAC on the eth0 interface.."
else
logger -s -p daemon.info -t anyka "The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)"
fi
#
logger -s -p daemon.info -t anyka "Loading of kernel modules and initialization of the video system has started"
export TZ=$(cat /etc/TZ)
#load_anyka
#
#load_majestic
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
[ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, "
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
sleep 1
reload
}
reload() {
load_majestic
}
case "$1" in
start|stop|restart|reload)
"$1";;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac

View File

@ -0,0 +1,3 @@
config BR2_PACKAGE_AMBARELLA_PATCHER
bool

View File

@ -0,0 +1,13 @@
################################################################################
#
# ambarella_patcher
#
################################################################################
AMBARELLA_PATCHER_VERSION = 0.1
AMBARELLA_PATCHER_INSTALL_TARGET = NO
AMBARELLA_PATCHER_INSTALL_STAGING = NO
AMBARELLA_PATCHER_SITE =
AMBARELLA_PATCHER_SOURCE =
$(eval $(generic-package))

View File

@ -0,0 +1,44 @@
#!/bin/bash
function log() {
echo "--- $@"
}
function apply_patch() {
DST=$1
SRC=$2
if [[ -d $SRC ]]; then
if [[ ${SRC:${#SRC}-1} != '/' ]]; then
log Apply \"$SRC\" as overlay directory
cp -r $SRC/* $DST/
else
log Apply \"$SRC\" as patches directory
for P in $SRC/*.patch; do
patch -d $DST -p1 < $P
done
fi
else
log Apply \"$SRC\" as single patch
patch -d $DST -p1 < $SRC
fi
}
function apply_patches() {
log Gonna apply "$@"
while [[ $# -ge 1 ]]; do
apply_patch $DST $1
shift
done
}
DST=$1
shift
if [ -f $DST/.ambarella-patched ]; then
log Patched already
exit
fi
apply_patches $@
touch $DST/.ambarella-patched