Add some GM stuff

pull/172/head
Dmitry Ermakov 2022-02-08 23:45:52 +03:00
parent a3f658df00
commit 180a5fd5cf
12 changed files with 1981 additions and 5 deletions

View File

@ -13,8 +13,8 @@ source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libogg-openipc/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libsrt-openipc/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libwebsockets-openipc/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/linux-firmware-openipc/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic-fonts/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic/Config.in"
#source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic-fonts/Config.in"
#source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/mbedtls-openipc/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/microbe-web/Config.in"
source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/motors/Config.in"

View File

@ -0,0 +1,2 @@
MEM_START_ADDR=0x40000000
KERNEL_UPLOAD_ADDR=0x41000000

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,65 @@
#ifndef __LINUX_COMPILER_H
#error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead."
#endif
#define __used __attribute__((__used__))
#define __must_check __attribute__((warn_unused_result))
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
/* Mark functions as cold. gcc will assume any path leading to a call
to them will be unlikely. This means a lot of manual unlikely()s
are unnecessary now for any paths leading to the usual suspects
like BUG(), printk(), panic() etc. [but let's keep them for now for
older compilers]
Early snapshots of gcc 4.3 don't support this and we can't detect this
in the preprocessor, but we can live with this because they're unreleased.
Maketime probing would be overkill here.
gcc also has a __attribute__((__hot__)) to move hot functions into
a special section, but I don't see any sense in this right now in
the kernel context */
#define __cold __attribute__((__cold__))
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
#ifndef __CHECKER__
# define __compiletime_warning(message) __attribute__((warning(message)))
# define __compiletime_error(message) __attribute__((error(message)))
#endif /* __CHECKER__ */
/*
* Mark a position in code as unreachable. This can be used to
* suppress control flow warnings after asm blocks that transfer
* control elsewhere.
*
* Early snapshots of gcc 4.5 don't support this and we can't detect
* this in the preprocessor, but we can live with this because they're
* unreleased. Really, we need to have autoconf for the kernel.
*/
#define unreachable() __builtin_unreachable()
/* Mark a function definition as prohibited from being cloned. */
#define __noclone __attribute__((__noclone__))
/*
* Tell the optimizer that something else uses this function or variable.
*/
#define __visible __attribute__((externally_visible))
/*
* GCC 'asm goto' miscompiles certain code sequences:
*
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
*
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
*
* (asm goto is automatically volatile - the naming reflects this.)
*/
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
#define __HAVE_BUILTIN_BSWAP32__
#define __HAVE_BUILTIN_BSWAP64__
#define __HAVE_BUILTIN_BSWAP16__
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */

View File

@ -0,0 +1,62 @@
--- linux-3.0.101/arch/arm/boot/Makefile 2013-10-22 11:58:59.000000000 +0400
+++ linux-3.0.101/arch/arm/boot/Makefile 2021-12-15 10:51:15.956535987 +0300
@@ -59,15 +59,19 @@
endif
-quiet_cmd_uimage = UIMAGE $@
- cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
- -C none -a $(LOADADDR) -e $(STARTADDR) \
- -n 'Linux-$(KERNELRELEASE)' -d $< $@
+#quiet_cmd_uimage = UIMAGE $@
+# cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
+# -C none -a $(LOADADDR) -e $(STARTADDR) \
+# -n 'Linux-$(KERNELRELEASE)' -d $< $@
-ifeq ($(CONFIG_ZBOOT_ROM),y)
-$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
+ifneq ($(LOADADDR),)
+ UIMAGE_LOADADDR=$(LOADADDR)
else
-$(obj)/uImage: LOADADDR=$(ZRELADDR)
+ ifeq ($(CONFIG_ZBOOT_ROM),y)
+ UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
+ else
+ UIMAGE_LOADADDR=$(ZRELADDR)
+ endif
endif
$(obj)/uImage: STARTADDR=$(LOADADDR)
--- linux-3.0.101/scripts/Makefile.lib 2013-10-22 11:58:59.000000000 +0400
+++ linux-3.0.101/scripts/Makefile.lib 2021-12-15 10:53:24.551357718 +0300
@@ -262,6 +262,30 @@
lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
(rm -f $@ ; false)
+# U-Boot mkimage
+# ---------------------------------------------------------------------------
+
+MKIMAGE := $(srctree)/scripts/mkuboot.sh
+
+# SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
+# the number of overrides in arch makefiles
+UIMAGE_ARCH ?= $(SRCARCH)
+UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
+UIMAGE_OPTS-y ?=
+UIMAGE_TYPE ?= kernel
+UIMAGE_LOADADDR ?= arch_must_set_this
+UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
+UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
+UIMAGE_IN ?= $<
+UIMAGE_OUT ?= $@
+
+quiet_cmd_uimage = UIMAGE $(UIMAGE_OUT)
+ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
+ -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
+ -T $(UIMAGE_TYPE) \
+ -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
+ -n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)
+
# XZ
# ---------------------------------------------------------------------------
# Use xzkern to compress the kernel image and xzmisc to compress other things.

View File

@ -0,0 +1,96 @@
# Architecture
BR2_arm=y
BR2_cortex_a5=y
BR2_ARM_INSTRUCTIONS_THUMB2=y
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="3.3"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_3=y
# Toolchain
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_GCC_VERSION_7_X=y
# BR2_TOOLCHAIN_USES_UCLIBC is not set
# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set
# BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc"
BR2_TOOLCHAIN_USES_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_LIBC="musl"
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.3"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_GRAINMEDIA_PATH)/board/gm8136/kernel/gm8136.generic.config"
BR2_LINUX_KERNEL_UIMAGE=y
BR2_LINUX_KERNEL_XZ=y
BR2_LINUX_KERNEL_EXT_GRAINMEDIA_PATCHER=y
BR2_LINUX_KERNEL_EXT_GRAINMEDIA_PATCHER_LIST="$(BR2_EXTERNAL_GRAINMEDIA_PATH)/board/gm8136/kernel/patches/ $(BR2_EXTERNAL_GRAINMEDIA_PATH)/board/gm8136/kernel/overlay"
# Filesystem
# BR2_TARGET_TZ_INFO is not set
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=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.2"
BR2_TARGET_GENERIC_HOSTNAME="openipc-gm8136"
BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches"
# OpenIPC packages
BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
BR2_PACKAGE_HASERL=y
BR2_PACKAGE_IPCTOOL=y
BR2_PACKAGE_JSON_C=y
BR2_PACKAGE_LAME_OPENIPC=y
BR2_PACKAGE_LIBCURL_OPENIPC=y
BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y
# BR2_PACKAGE_LIBCURL_OPENIPC_VERBOSE is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set
BR2_PACKAGE_LIBCURL_OPENIPC_MBEDTLS=y
BR2_PACKAGE_LIBEVENT_OPENIPC=y
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
BR2_PACKAGE_LIBOGG_OPENIPC=y
BR2_PACKAGE_LIBWEBSOCKETS_OPENIPC=y
BR2_PACKAGE_LIBYAML=y
# BR2_PACKAGE_MAJESTIC_FONTS=y
# BR2_PACKAGE_MAJESTIC_GM8136=y
BR2_PACKAGE_MBEDTLS_OPENIPC=y
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
BR2_PACKAGE_MICROBE_WEB=y
# BR2_PACKAGE_MINI_SNMPD is not set
BR2_PACKAGE_MOTORS=y
BR2_PACKAGE_OPUS_OPENIPC=y
BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y
# BR2_PACKAGE_SSHPASS is not set
BR2_PACKAGE_UACME_OPENIPC=y
BR2_PACKAGE_VTUND_OPENIPC=y
# BR2_PACKAGE_GRAINMEDIA_OSDRV_GM8136=y
BR2_PACKAGE_YAML_CLI=y
# WiFi
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U=y
# BR2_PACKAGE_RTL8188EU is not set
# WIREGUARD
# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT is not set
# BR2_PACKAGE_WIREGUARD_TOOLS is not set

View File

@ -13,8 +13,8 @@ include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libogg-openipc/libogg-openipc.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libsrt-openipc/libsrt-openipc.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libwebsockets-openipc/libwebsockets-openipc.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic-fonts/majestic-fonts.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic/majestic.mk
#include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic-fonts/majestic-fonts.mk
#include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic/majestic.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/microbe-web/microbe-web.mk
include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/motors/motors.mk

View File

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

View File

@ -344,6 +344,12 @@ xm550() {
#################################################################################
gm8136() {
soc="gm8136"
fresh && make PLATFORM=grainmedia BOARD=unknown_unknown_${soc}_openipc all && rename
}
#################################################################################
# Build firmware
#
@ -368,7 +374,7 @@ xm550() {
# hi3516cv200 # testing..
# hi3518ev200 # testing..
# hi3518ev200_hs303v1 # OpenIPC
hi3518ev200_hs303v2 # OpenIPC
# hi3518ev200_hs303v2 # OpenIPC
# hi3518ev200_hs303v3 # OpenIPC
#
# hi3516av100 # OpenIPC
@ -429,7 +435,10 @@ hi3518ev200_hs303v2 # OpenIPC
# xm530 # OK
# xm550 # OK
#
#######
#
gm8136
#
#######
# More examples see here: https://github.com/OpenIPC/firmware/wiki/source_code
#

View File

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

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/.grainmedia-patched ]; then
log Patched already
exit
fi
apply_patches $@
touch $DST/.grainmedia-patched

View File

@ -0,0 +1,13 @@
################################################################################
#
# grainmedia_patcher
#
################################################################################
GRAINMEDIA_PATCHER_VERSION = 0.1
GRAINMEDIA_PATCHER_INSTALL_TARGET = NO
GRAINMEDIA_PATCHER_INSTALL_STAGING = NO
GRAINMEDIA_PATCHER_SITE =
GRAINMEDIA_PATCHER_SOURCE =
$(eval $(generic-package))