mirror of
https://github.com/Fishwaldo/br_sg200x.git
synced 2025-03-15 19:31:43 +00:00
More Updates and Fixes.
This commit is contained in:
parent
f668f54d5b
commit
4884a6fa12
27 changed files with 57582 additions and 11 deletions
1227
board/sipeed/licheervnano/busybox_defconfig
Normal file
1227
board/sipeed/licheervnano/busybox_defconfig
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,6 @@
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_GENERIC_IRQ_DEBUGFS=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
|
@ -22,12 +23,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|||
# CONFIG_FHANDLE is not set
|
||||
# CONFIG_BUG is not set
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_SIGNALFD is not set
|
||||
# CONFIG_TIMERFD is not set
|
||||
# CONFIG_AIO is not set
|
||||
# CONFIG_IO_URING is not set
|
||||
# CONFIG_ADVISE_SYSCALLS is not set
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=10
|
||||
|
@ -460,14 +457,29 @@ CONFIG_PWM=y
|
|||
CONFIG_SIFIVE_PLIC=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_QUOTA=y
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_XFS_RT=y
|
||||
CONFIG_XFS_ONLINE_SCRUB=y
|
||||
CONFIG_XFS_ONLINE_REPAIR=y
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
CONFIG_BTRFS_FS_RUN_SANITY_TESTS=y
|
||||
# CONFIG_MANDATORY_FILE_LOCKING is not set
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_CUSE=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_ISO9660_FS=m
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_ZISOFS=y
|
||||
CONFIG_UDF_FS=m
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_EXFAT_FS=m
|
||||
# CONFIG_PROC_PAGE_MONITOR is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_WBUF_VERIFY=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
|
@ -476,11 +488,87 @@ CONFIG_SQUASHFS=y
|
|||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=m
|
||||
CONFIG_NFS_V4_1=y
|
||||
CONFIG_NFS_V4_2=y
|
||||
CONFIG_NFS_V4_2_READ_PLUS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_STATS2=y
|
||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
||||
CONFIG_CIFS_UPCALL=y
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
# CONFIG_CIFS_DEBUG is not set
|
||||
CONFIG_CIFS_DFS_UPCALL=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_2=y
|
||||
CONFIG_NLS_ISO8859_3=y
|
||||
CONFIG_KEY_DH_OPERATIONS=y
|
||||
CONFIG_CRYPTO_USER=m
|
||||
CONFIG_CRYPTO_CRYPTD=m
|
||||
CONFIG_CRYPTO_ECRDSA=m
|
||||
CONFIG_CRYPTO_SM2=m
|
||||
CONFIG_CRYPTO_CURVE25519=m
|
||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||
CONFIG_CRYPTO_AEGIS128=m
|
||||
CONFIG_CRYPTO_SEQIV=m
|
||||
CONFIG_CRYPTO_ECHAINIV=m
|
||||
CONFIG_CRYPTO_CBC=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_ESSIV=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
CONFIG_CRYPTO_VMAC=m
|
||||
CONFIG_CRYPTO_CRC32=m
|
||||
CONFIG_CRYPTO_BLAKE2S=m
|
||||
CONFIG_CRYPTO_CRCT10DIF=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_RMD128=m
|
||||
CONFIG_CRYPTO_RMD160=m
|
||||
CONFIG_CRYPTO_RMD256=m
|
||||
CONFIG_CRYPTO_RMD320=m
|
||||
CONFIG_CRYPTO_SHA1=m
|
||||
CONFIG_CRYPTO_SHA3=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES=m
|
||||
CONFIG_CRYPTO_AES_TI=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAMELLIA=m
|
||||
CONFIG_CRYPTO_CAST5=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
CONFIG_CRYPTO_DES=m
|
||||
CONFIG_CRYPTO_FCRYPT=m
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
CONFIG_CRYPTO_SALSA20=m
|
||||
CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_SM4=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_842=m
|
||||
CONFIG_CRYPTO_LZ4=m
|
||||
CONFIG_CRYPTO_LZ4HC=m
|
||||
CONFIG_CRYPTO_USER_API_HASH=m
|
||||
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||
CONFIG_CRYPTO_USER_API_RNG=m
|
||||
CONFIG_CRYPTO_USER_API_RNG_CAVP=y
|
||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_PKCS8_PRIVATE_KEY_PARSER=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
# CONFIG_XZ_DEC_POWERPC is not set
|
||||
# CONFIG_XZ_DEC_IA64 is not set
|
||||
|
|
62
board/sipeed/licheervnano/rootfs-overlay/etc/init.d/P99boottime
Executable file
62
board/sipeed/licheervnano/rootfs-overlay/etc/init.d/P99boottime
Executable file
|
@ -0,0 +1,62 @@
|
|||
#!/bin/sh
|
||||
${CVI_SHOPTS}
|
||||
|
||||
# from fsbl/plat/mars/include/platform_def.h
|
||||
# struct _time_records { ... }
|
||||
|
||||
fields="
|
||||
fsbl_start
|
||||
ddr_init_start
|
||||
ddr_init_end
|
||||
release_blcp_2nd
|
||||
load_loader_2nd_end
|
||||
fsbl_decomp_start
|
||||
fsbl_decomp_end
|
||||
fsbl_exit
|
||||
uboot_start
|
||||
bootcmd_start
|
||||
decompress_kernel_start
|
||||
kernel_start
|
||||
kernel_run_init_start
|
||||
NONE
|
||||
"
|
||||
|
||||
fields=$(echo $fields)
|
||||
|
||||
TIME_RECORDS_ADDR=0x0e000010
|
||||
TIME_RECORDS_SIZE=$((2 * 14))
|
||||
|
||||
OUTPUT=/tmp/boottime
|
||||
|
||||
echo > "$OUTPUT"
|
||||
|
||||
for i in $(seq 0 4 $((TIME_RECORDS_SIZE - 4))); do
|
||||
addr=$((TIME_RECORDS_ADDR + i))
|
||||
ts=$(devmem $addr 32)
|
||||
# printf "0x%08x=0x%08x\n" "$a" "$ts"
|
||||
|
||||
t0=$((ts & 0xffff))
|
||||
t1=$((ts >> 16))
|
||||
|
||||
f0="${fields%% *}"
|
||||
fields="${fields#* }"
|
||||
f1="${fields%% *}"
|
||||
fields="${fields#* }"
|
||||
|
||||
eval "${f0}=${t0}"
|
||||
eval "${f1}=${t1}"
|
||||
|
||||
{
|
||||
echo "${f0}=${t0}ms"
|
||||
echo "${f1}=${t1}ms"
|
||||
} >> "$OUTPUT"
|
||||
done
|
||||
|
||||
{
|
||||
uname -a
|
||||
echo "ROM elapsed time: ${fsbl_start} milliseconds"
|
||||
echo "DDR init elapsed time: $((ddr_init_end - ddr_init_start)) milliseconds"
|
||||
echo "C906L FreeRTOS start at: ${release_blcp_2nd} milliseconds"
|
||||
echo "Kernel uptime: $(awk '{print $1}' /proc/uptime) seconds"
|
||||
echo "Total boottime: ?"
|
||||
} >> "$OUTPUT"
|
|
@ -7,7 +7,7 @@ start() {
|
|||
return 1
|
||||
fi
|
||||
echo 'Resizing Rootfs'
|
||||
growpart /dev/mmcblk0 2
|
||||
parted -s /dev/mmcblk0 resizepart 2 100%
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "Partition Resized"
|
||||
|
|
30
board/sipeed/licheervnano/rootfs-overlay/etc/init.d/S05usbdev
Executable file
30
board/sipeed/licheervnano/rootfs-overlay/etc/init.d/S05usbdev
Executable file
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
${CVI_SHOPTS}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
if [ -e /mnt/system/ko/dwc2.ko ]
|
||||
then
|
||||
insmod /mnt/system/ko/dwc2.ko
|
||||
fi
|
||||
echo device > /proc/cviusb/otg_role
|
||||
printf "Starting usbdev: "
|
||||
/etc/run_usb.sh probe acm
|
||||
/etc/run_usb.sh probe rndis
|
||||
/etc/run_usb.sh start
|
||||
[ $? = 0 ] && echo "OK" || echo "FAIL"
|
||||
;;
|
||||
stop)
|
||||
printf "Stopping usbdev: "
|
||||
/etc/run_usb.sh stop
|
||||
echo "OK"
|
||||
sleep 1
|
||||
;;
|
||||
restart)
|
||||
printf "Restarting usbdev: "
|
||||
/etc/run_usb.sh stop
|
||||
sleep 1
|
||||
/etc/run_usb.sh start
|
||||
echo "OK"
|
||||
;;
|
||||
esac
|
49
board/sipeed/licheervnano/rootfs-overlay/etc/init.d/S30udhcpd.usb0
Executable file
49
board/sipeed/licheervnano/rootfs-overlay/etc/init.d/S30udhcpd.usb0
Executable file
|
@ -0,0 +1,49 @@
|
|||
#!/bin/sh
|
||||
|
||||
CONF=/boot/udhcpd.usb0.conf
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
printf "Starting udhcpd.usb0: "
|
||||
id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2))
|
||||
id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2))
|
||||
if [ "$id2" -ge 255 ]
|
||||
then
|
||||
id2=254
|
||||
fi
|
||||
if [ "$id3" -ge 255 ]
|
||||
then
|
||||
id3=254
|
||||
fi
|
||||
ip=10.${id2}.${id3}.1/24
|
||||
if [ ! -e ${CONF} ]
|
||||
then
|
||||
if [ ! -e /etc/udhcpd.usb0.conf ]
|
||||
then
|
||||
cp /etc/udhcpd.usb0.conf.skel /etc/udhcpd.usb0.conf
|
||||
sed -i -e s/10.100.100/10.${id2}.${id3}/g /etc/udhcpd.usb0.conf
|
||||
fi
|
||||
CONF=/etc/udhcpd.usb0.conf
|
||||
fi
|
||||
if [ -e /boot/rndis_ipv4_addr ]
|
||||
then
|
||||
ip=$(cat /boot/rndis_ipv4_addr)
|
||||
fi
|
||||
ip link set usb0 up
|
||||
ip addr add ${ip} dev usb0
|
||||
busybox udhcpd -S /etc/udhcpd.usb0.conf
|
||||
[ $? = 0 ] && echo "OK" || echo "FAIL"
|
||||
;;
|
||||
stop)
|
||||
printf "Stopping udhcpd.usb0: "
|
||||
kill $(cat /var/run/udhcpd.usb0.pid)
|
||||
echo "OK"
|
||||
sleep 1
|
||||
;;
|
||||
restart)
|
||||
printf "Restarting udhcpd.usb0: "
|
||||
stop
|
||||
start
|
||||
echo "OK"
|
||||
;;
|
||||
esac
|
41
board/sipeed/licheervnano/rootfs-overlay/etc/inittab
Normal file
41
board/sipeed/licheervnano/rootfs-overlay/etc/inittab
Normal file
|
@ -0,0 +1,41 @@
|
|||
# /etc/inittab
|
||||
#
|
||||
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
|
||||
#
|
||||
# Note: BusyBox init doesn't support runlevels. The runlevels field is
|
||||
# completely ignored by BusyBox init. If you want runlevels, use
|
||||
# sysvinit.
|
||||
#
|
||||
# Format for each entry: <id>:<runlevels>:<action>:<process>
|
||||
#
|
||||
# id == tty to run on, or empty for /dev/console
|
||||
# runlevels == ignored
|
||||
# action == one of sysinit, respawn, askfirst, wait, and once
|
||||
# process == program to run
|
||||
|
||||
# Startup the system
|
||||
::sysinit:/bin/mount -t proc proc /proc
|
||||
::sysinit:/bin/mount -o remount,rw /
|
||||
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
|
||||
::sysinit:/bin/mount -a
|
||||
::sysinit:/bin/mkdir -p /run/lock/subsys
|
||||
::sysinit:/sbin/swapon -a
|
||||
null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
|
||||
null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
|
||||
null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
|
||||
null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
|
||||
::sysinit:/bin/hostname -F /etc/hostname
|
||||
# now run any rc scripts
|
||||
::sysinit:/etc/init.d/rcS
|
||||
|
||||
# Put a getty on the serial port
|
||||
console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
|
||||
ttyGS0::askfirst:/sbin/getty -L ttyGS0 115200 vt100
|
||||
|
||||
# Stuff to do for the 3-finger salute
|
||||
#::ctrlaltdel:/sbin/reboot
|
||||
|
||||
# Stuff to do before rebooting
|
||||
::shutdown:/etc/init.d/rcK
|
||||
::shutdown:/sbin/swapoff -a
|
||||
::shutdown:/bin/umount -a -r
|
293
board/sipeed/licheervnano/rootfs-overlay/etc/run_usb.sh
Executable file
293
board/sipeed/licheervnano/rootfs-overlay/etc/run_usb.sh
Executable file
|
@ -0,0 +1,293 @@
|
|||
CLASS=acm
|
||||
VID=0x3346
|
||||
PID=0x1003
|
||||
MSC_PID=0x1008
|
||||
RNDIS_PID=0x1009
|
||||
UVC_PID=0x100A
|
||||
UAC_PID=0x100B
|
||||
ADB_VID=0x18D1
|
||||
ADB_PID=0x4EE0
|
||||
ADB_PID_M1=0x4EE2
|
||||
ADB_PID_M2=0x4EE4
|
||||
MANUFACTURER="Cvitek"
|
||||
PRODUCT="USB Com Port"
|
||||
PRODUCT_RNDIS="RNDIS"
|
||||
PRODUCT_UVC="UVC"
|
||||
PRODUCT_UAC="UAC"
|
||||
PRODUCT_ADB="ADB"
|
||||
ADBD_PATH=/usr/bin/
|
||||
SERIAL="0123456789"
|
||||
MSC_FILE=$3
|
||||
CVI_DIR=/tmp/usb
|
||||
CVI_GADGET=$CVI_DIR/usb_gadget/cvitek
|
||||
CVI_FUNC=$CVI_GADGET/functions
|
||||
FUNC_NUM=0
|
||||
MAX_EP_NUM=4
|
||||
TMP_NUM=0
|
||||
INTF_NUM=0
|
||||
EP_IN=0
|
||||
EP_OUT=0
|
||||
|
||||
case "$2" in
|
||||
acm)
|
||||
CLASS=acm
|
||||
;;
|
||||
msc)
|
||||
CLASS=mass_storage
|
||||
PID=$MSC_PID
|
||||
;;
|
||||
cvg)
|
||||
CLASS=cvg
|
||||
;;
|
||||
rndis)
|
||||
CLASS=rndis
|
||||
PID=$RNDIS_PID
|
||||
PRODUCT=$PRODUCT_RNDIS
|
||||
;;
|
||||
uvc)
|
||||
CLASS=uvc
|
||||
PID=$UVC_PID
|
||||
PRODUCT=$PRODUCT_UVC
|
||||
;;
|
||||
uac1)
|
||||
CLASS=uac1
|
||||
PID=$UAC_PID
|
||||
PRODUCT=$PRODUCT_UAC
|
||||
;;
|
||||
adb)
|
||||
CLASS=ffs.adb
|
||||
VID=$ADB_VID
|
||||
PID=$ADB_PID
|
||||
PRODUCT=$PRODUCT_ADB
|
||||
;;
|
||||
*)
|
||||
if [ "$1" = "probe" ] ; then
|
||||
echo "Usage: $0 probe {acm|msc|cvg|rndis|uvc|uac1|adb}"
|
||||
exit 1
|
||||
fi
|
||||
esac
|
||||
|
||||
calc_func() {
|
||||
FUNC_NUM=$(ls $CVI_GADGET/functions -l | grep ^d | wc -l)
|
||||
echo "$FUNC_NUM file(s)"
|
||||
}
|
||||
|
||||
res_check() {
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name "acm*" | wc -l)
|
||||
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||
TMP_NUM=$(($TMP_NUM * 2))
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name "mass_storage*" | wc -l)
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name "cvg*" | wc -l)
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name "rndis*" | wc -l)
|
||||
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||
TMP_NUM=$(($TMP_NUM * 2))
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name "uvc*" | wc -l)
|
||||
TMP_NUM=$(($TMP_NUM * 2))
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name "uac1*" | wc -l)
|
||||
TMP_NUM=$(($TMP_NUM * 2))
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
TMP_NUM=$(find $CVI_GADGET/functions/ -name ffs.adb | wc -l)
|
||||
EP_IN=$(($EP_IN+$TMP_NUM))
|
||||
EP_OUT=$(($EP_OUT+$TMP_NUM))
|
||||
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
|
||||
|
||||
if [ "$CLASS" = "acm" ] ; then
|
||||
EP_IN=$(($EP_IN+2))
|
||||
EP_OUT=$(($EP_OUT+1))
|
||||
fi
|
||||
if [ "$CLASS" = "mass_storage" ] ; then
|
||||
EP_IN=$(($EP_IN+1))
|
||||
EP_OUT=$(($EP_OUT+1))
|
||||
fi
|
||||
if [ "$CLASS" = "cvg" ] ; then
|
||||
EP_IN=$(($EP_IN+1))
|
||||
EP_OUT=$(($EP_OUT+1))
|
||||
fi
|
||||
if [ "$CLASS" = "rndis" ] ; then
|
||||
EP_IN=$(($EP_IN+2))
|
||||
EP_OUT=$(($EP_OUT+1))
|
||||
fi
|
||||
if [ "$CLASS" = "uvc" ] ; then
|
||||
EP_IN=$(($EP_IN+2))
|
||||
fi
|
||||
if [ "$CLASS" = "uac1" ] ; then
|
||||
EP_IN=$(($EP_IN+1))
|
||||
EP_OUT=$(($EP_OUT+1))
|
||||
fi
|
||||
if [ "$CLASS" = "ffs.adb" ] ; then
|
||||
EP_IN=$(($EP_IN+1))
|
||||
EP_OUT=$(($EP_OUT+1))
|
||||
fi
|
||||
echo "$EP_IN in ep"
|
||||
echo "$EP_OUT out ep"
|
||||
if [ $EP_IN -gt $MAX_EP_NUM ]; then
|
||||
echo "reach maximum resource"
|
||||
exit 1
|
||||
fi
|
||||
if [ $EP_OUT -gt $MAX_EP_NUM ]; then
|
||||
echo "reach maximum resource"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
probe() {
|
||||
if [ ! -d $CVI_DIR ]; then
|
||||
mkdir $CVI_DIR
|
||||
fi
|
||||
if [ ! -d $CVI_DIR/usb_gadget ]; then
|
||||
# Enale USB ConfigFS
|
||||
mount none $CVI_DIR -t configfs
|
||||
# Create gadget dev
|
||||
mkdir $CVI_GADGET
|
||||
# Set the VID and PID
|
||||
echo $VID >$CVI_GADGET/idVendor
|
||||
echo $PID >$CVI_GADGET/idProduct
|
||||
# Set the product information string
|
||||
mkdir $CVI_GADGET/strings/0x409
|
||||
echo $MANUFACTURER>$CVI_GADGET/strings/0x409/manufacturer
|
||||
echo $PRODUCT>$CVI_GADGET/strings/0x409/product
|
||||
echo $SERIAL>$CVI_GADGET/strings/0x409/serialnumber
|
||||
# Set the USB configuration
|
||||
mkdir $CVI_GADGET/configs/c.1
|
||||
mkdir $CVI_GADGET/configs/c.1/strings/0x409
|
||||
echo "config1">$CVI_GADGET/configs/c.1/strings/0x409/configuration
|
||||
# Set the MaxPower of USB descriptor
|
||||
echo 120 >$CVI_GADGET/configs/c.1/MaxPower
|
||||
fi
|
||||
# get current functions number
|
||||
calc_func
|
||||
# assign the class code for composite device
|
||||
if [ ! $FUNC_NUM -eq 0 ]; then
|
||||
echo 0xEF >$CVI_GADGET/bDeviceClass
|
||||
echo 0x02 >$CVI_GADGET/bDeviceSubClass
|
||||
echo 0x01 >$CVI_GADGET/bDeviceProtocol
|
||||
fi
|
||||
# resource check
|
||||
res_check
|
||||
# create the desired function
|
||||
if [ "$CLASS" = "ffs.adb" ] ; then
|
||||
# adb shall be the last function to probe. Override the pid/vid
|
||||
echo $VID >$CVI_GADGET/idVendor
|
||||
echo $PID >$CVI_GADGET/idProduct
|
||||
# choose pid for different function number
|
||||
if [ $INTF_NUM -eq 1 ]; then
|
||||
echo $ADB_PID_M1 >$CVI_GADGET/idProduct
|
||||
fi
|
||||
if [ $INTF_NUM -eq 2 ]; then
|
||||
echo $ADB_PID_M2 >$CVI_GADGET/idProduct
|
||||
fi
|
||||
mkdir $CVI_GADGET/functions/$CLASS
|
||||
else
|
||||
mkdir $CVI_GADGET/functions/$CLASS.usb$FUNC_NUM
|
||||
fi
|
||||
if [ "$CLASS" = "mass_storage" ] ; then
|
||||
echo $MSC_FILE >$CVI_GADGET/functions/$CLASS.usb$FUNC_NUM/lun.0/file
|
||||
fi
|
||||
if [ "$CLASS" = "rndis" ] ; then
|
||||
#OS STRING
|
||||
echo 1 >$CVI_GADGET/os_desc/use
|
||||
echo 0xcd >$CVI_GADGET/os_desc/b_vendor_code
|
||||
echo MSFT100 >$CVI_GADGET/os_desc/qw_sign
|
||||
#COMPATIBLE ID
|
||||
echo RNDIS >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/compatible_id
|
||||
#MAKE c.1 THE ONE ASSOCIATED WITH OS DESCRIPTORS
|
||||
ln -s $CVI_GADGET/configs/c.1 $CVI_GADGET/os_desc
|
||||
#MAKE "Icons" EXTENDED PROPERTY
|
||||
mkdir $CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons
|
||||
echo 2 >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons/type
|
||||
echo "%SystemRoot%\\system32\\shell32.dll,-233" >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Icons/data
|
||||
#MAKE "Label" EXTENDED PROPERTY
|
||||
mkdir $CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label
|
||||
echo 1 >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label/type
|
||||
echo "XYZ Device" >$CVI_FUNC/rndis.usb$FUNC_NUM/os_desc/interface.rndis/Label/data
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
start() {
|
||||
# link this function to the configuration
|
||||
calc_func
|
||||
if [ $FUNC_NUM -eq 0 ]; then
|
||||
echo "Functions Empty!"
|
||||
exit 1
|
||||
fi
|
||||
if [ -d $CVI_GADGET/functions/ffs.adb ]; then
|
||||
FUNC_NUM=$(($FUNC_NUM-1))
|
||||
fi
|
||||
for i in `seq 0 $(($FUNC_NUM-1))`;
|
||||
do
|
||||
find $CVI_GADGET/functions/ -name "*.usb$i" | xargs -I % ln -s % $CVI_GADGET/configs/c.1
|
||||
done
|
||||
if [ -d $CVI_GADGET/functions/ffs.adb ]; then
|
||||
ln -s $CVI_GADGET/functions/ffs.adb $CVI_GADGET/configs/c.1
|
||||
mkdir /dev/usb-ffs/adb -p
|
||||
mount -t functionfs adb /dev/usb-ffs/adb
|
||||
if [ -f $ADBD_PATH/adbd ]; then
|
||||
$ADBD_PATH/adbd &
|
||||
fi
|
||||
else
|
||||
# Start the gadget driver
|
||||
UDC=`ls /sys/class/udc/ | awk '{print $1}'`
|
||||
echo ${UDC} >$CVI_GADGET/UDC
|
||||
fi
|
||||
}
|
||||
|
||||
stop() {
|
||||
if [ -d $CVI_GADGET/configs/c.1/ffs.adb ]; then
|
||||
pkill adbd
|
||||
rm $CVI_GADGET/configs/c.1/ffs.adb
|
||||
else
|
||||
echo "" >$CVI_GADGET/UDC
|
||||
fi
|
||||
find $CVI_GADGET/configs/ -name "*.usb*" | xargs rm -f
|
||||
rmdir $CVI_GADGET/configs/c.*/strings/0x409/
|
||||
tmp_dirs=$(find $CVI_GADGET/os_desc/c.* -type d)
|
||||
if [ -n tmp_dirs ]; then
|
||||
echo "remove os_desc!"
|
||||
rm -rf $CVI_GADGET/os_desc/c.*/
|
||||
find $CVI_GADGET/functions/ -name Icons | xargs rmdir
|
||||
find $CVI_GADGET/functions/ -name Label | xargs rmdir
|
||||
fi
|
||||
rmdir $CVI_GADGET/configs/c.*/
|
||||
rmdir $CVI_GADGET/functions/*
|
||||
rmdir $CVI_GADGET/strings/0x409/
|
||||
rmdir $CVI_GADGET
|
||||
umount $CVI_DIR
|
||||
rmdir $CVI_DIR
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
probe)
|
||||
probe
|
||||
;;
|
||||
UDC)
|
||||
UDC=`ls /sys/class/udc/ | awk '{print $1}'`
|
||||
echo ${UDC} >$CVI_GADGET/UDC
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 probe {acm|msc|cvg|uvc|uac1} {file (msc)}"
|
||||
echo "Usage: $0 start"
|
||||
echo "Usage: $0 stop"
|
||||
exit 1
|
||||
esac
|
||||
exit $?
|
|
@ -0,0 +1,7 @@
|
|||
start 10.100.100.100
|
||||
end 10.100.100.200
|
||||
interface usb0
|
||||
pidfile /var/run/udhcpd.usb0.pid
|
||||
lease_file /var/lib/misc/udhcpd.usb0.leases
|
||||
option subnet 255.255.255.0
|
||||
option lease 864000
|
|
@ -49,9 +49,8 @@ CONFIG_CMD_CVI_VO=y
|
|||
CONFIG_CMD_CVISOUND=y
|
||||
# CONFIG_CMD_CVI_UPDATE is not set
|
||||
# CONFIG_ISO_PARTITION is not set
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
CONFIG_ENV_IS_IN_FAT=y
|
||||
CONFIG_ENV_FAT_DEVICE_AND_PART="1"
|
||||
CONFIG_ENV_FAT_DEVICE_AND_PART="0"
|
||||
CONFIG_BOOTP_SEND_HOSTNAME=y
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_BUTTON=y
|
||||
|
|
|
@ -21,7 +21,7 @@ BR2_CCACHE=y
|
|||
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_LICHEERVNANO_BR_PATH)/board/sipeed/licheervnano/patches/"
|
||||
BR2_TARGET_GENERIC_HOSTNAME="licheervnano"
|
||||
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
|
||||
BR2_SYSTEM_DHCP="eth0 wlan0"
|
||||
BR2_TARGET_TZ_INFO=y
|
||||
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_LICHEERVNANO_BR_PATH)/board/sipeed/licheervnano/rootfs-overlay"
|
||||
BR2_ROOTFS_POST_FAKEROOT_SCRIPT="$(BR2_EXTERNAL_LICHEERVNANO_BR_PATH)/board/sipeed/licheervnano/preimage.sh"
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_LICHEERVNANO_BR_PATH)/board/sipeed/licheervnano/postinstall.sh"
|
||||
|
@ -88,6 +88,37 @@ BR2_PACKAGE_UNZIP=y
|
|||
BR2_PACKAGE_XZ=y
|
||||
BR2_PACKAGE_ZIP=y
|
||||
BR2_PACKAGE_ZSTD=y
|
||||
BR2_PACKAGE_COREMARK=y
|
||||
BR2_PACKAGE_COREMARK_PRO=y
|
||||
BR2_PACKAGE_DHRYSTONE=y
|
||||
BR2_PACKAGE_FIO=y
|
||||
BR2_PACKAGE_IOZONE=y
|
||||
BR2_PACKAGE_LMBENCH=y
|
||||
BR2_PACKAGE_LSOF=y
|
||||
BR2_PACKAGE_RAMSMP=y
|
||||
BR2_PACKAGE_RAMSPEED=y
|
||||
BR2_PACKAGE_STRACE=y
|
||||
BR2_PACKAGE_STRESS=y
|
||||
BR2_PACKAGE_STRESS_NG=y
|
||||
BR2_PACKAGE_TINYMEMBENCH=y
|
||||
BR2_PACKAGE_BINUTILS=y
|
||||
BR2_PACKAGE_BINUTILS_TARGET=y
|
||||
BR2_PACKAGE_DIFFUTILS=y
|
||||
BR2_PACKAGE_DOS2UNIX=y
|
||||
BR2_PACKAGE_FINDUTILS=y
|
||||
BR2_PACKAGE_FLEX=y
|
||||
BR2_PACKAGE_GAWK=y
|
||||
BR2_PACKAGE_GETTEXT=y
|
||||
BR2_PACKAGE_GIT=y
|
||||
BR2_PACKAGE_GREP=y
|
||||
BR2_PACKAGE_JQ=y
|
||||
BR2_PACKAGE_LIBTOOL=y
|
||||
BR2_PACKAGE_MAKE=y
|
||||
BR2_PACKAGE_MAWK=y
|
||||
BR2_PACKAGE_PATCH=y
|
||||
BR2_PACKAGE_PKGCONF=y
|
||||
BR2_PACKAGE_SED=y
|
||||
BR2_PACKAGE_TREE=y
|
||||
BR2_PACKAGE_DOSFSTOOLS=y
|
||||
BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
|
||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||
|
@ -96,6 +127,12 @@ BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
|||
BR2_PACKAGE_E2TOOLS=y
|
||||
BR2_PACKAGE_EXFAT_UTILS=y
|
||||
BR2_PACKAGE_EXFATPROGS=y
|
||||
BR2_PACKAGE_F2FS_TOOLS=y
|
||||
BR2_PACKAGE_MMC_UTILS=y
|
||||
BR2_PACKAGE_MTD=y
|
||||
BR2_PACKAGE_MTD_MTDPART=y
|
||||
BR2_PACKAGE_NFS_UTILS=y
|
||||
BR2_PACKAGE_NFS_UTILS_NFSV4=y
|
||||
BR2_PACKAGE_FB_TEST_APP=y
|
||||
BR2_PACKAGE_FBDUMP=y
|
||||
BR2_PACKAGE_FBGRAB=y
|
||||
|
@ -138,6 +175,7 @@ BR2_PACKAGE_EVTEST=y
|
|||
BR2_PACKAGE_GPTFDISK=y
|
||||
BR2_PACKAGE_GPTFDISK_SGDISK=y
|
||||
BR2_PACKAGE_I2C_TOOLS=y
|
||||
BR2_PACKAGE_INPUT_EVENT_DAEMON=y
|
||||
BR2_PACKAGE_LM_SENSORS=y
|
||||
BR2_PACKAGE_LSHW=y
|
||||
BR2_PACKAGE_MEMTESTER=y
|
||||
|
@ -160,8 +198,8 @@ BR2_PACKAGE_LUA_LINENOISE=y
|
|||
BR2_PACKAGE_PYTHON3=y
|
||||
BR2_PACKAGE_PYTHON3_PY_PYC=y
|
||||
BR2_PACKAGE_PYTHON3_CURSES=y
|
||||
BR2_PACKAGE_TINYALSA=y
|
||||
BR2_PACKAGE_TINYALSA_TOOLS=y
|
||||
BR2_PACKAGE_LIBOPENSSL_BIN=y
|
||||
BR2_PACKAGE_MARIADB=y
|
||||
BR2_PACKAGE_SQLITE_STAT4=y
|
||||
BR2_PACKAGE_SQLITE_ENABLE_FTS3=y
|
||||
|
@ -169,7 +207,10 @@ BR2_PACKAGE_SQLITE_ENABLE_JSON1=y
|
|||
BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY=y
|
||||
BR2_PACKAGE_LIBGPIOD=y
|
||||
BR2_PACKAGE_LIBGPIOD_TOOLS=y
|
||||
BR2_PACKAGE_LIBHID=y
|
||||
BR2_PACKAGE_GMP=y
|
||||
BR2_PACKAGE_PCRE=y
|
||||
BR2_PACKAGE_BC=y
|
||||
BR2_PACKAGE_AVAHI=y
|
||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||
BR2_PACKAGE_AVAHI_DEFAULT_SERVICES=y
|
||||
|
@ -178,8 +219,15 @@ BR2_PACKAGE_DROPBEAR=y
|
|||
BR2_PACKAGE_DROPBEAR_WTMP=y
|
||||
BR2_PACKAGE_DROPBEAR_LASTLOG=y
|
||||
BR2_PACKAGE_ETHTOOL=y
|
||||
BR2_PACKAGE_HOSTAPD=y
|
||||
BR2_PACKAGE_IFUPDOWN=y
|
||||
BR2_PACKAGE_IPERF3=y
|
||||
BR2_PACKAGE_IPROUTE2=y
|
||||
BR2_PACKAGE_IPSET=y
|
||||
BR2_PACKAGE_IPTABLES=y
|
||||
BR2_PACKAGE_IPUTILS=y
|
||||
BR2_PACKAGE_IW=y
|
||||
BR2_PACKAGE_IWD=y
|
||||
BR2_PACKAGE_NET_TOOLS=y
|
||||
BR2_PACKAGE_NFTABLES=y
|
||||
BR2_PACKAGE_NTP=y
|
||||
|
@ -217,6 +265,7 @@ BR2_PACKAGE_TMUX=y
|
|||
BR2_PACKAGE_TTYD=y
|
||||
BR2_PACKAGE_ACL=y
|
||||
BR2_PACKAGE_ATOP=y
|
||||
BR2_PACKAGE_DEBIANUTILS=y
|
||||
BR2_PACKAGE_HTOP=y
|
||||
BR2_PACKAGE_PSMISC=y
|
||||
BR2_PACKAGE_UTIL_LINUX_PARTX=y
|
||||
|
@ -234,6 +283,7 @@ BR2_TARGET_OPENSBI_CUSTOM_GIT=y
|
|||
BR2_TARGET_OPENSBI_CUSTOM_REPO_URL="https://github.com/sophgo/opensbi.git"
|
||||
BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION="216793f112543151ae6b01595d4ba20ee58f4f7c"
|
||||
BR2_TARGET_OPENSBI_PLAT="generic"
|
||||
# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set
|
||||
BR2_TARGET_OPENSBI_UBOOT_PAYLOAD=y
|
||||
BR2_TARGET_OPENSBI_FW_FDT_PATH=y
|
||||
BR2_TARGET_UBOOT=y
|
||||
|
@ -256,4 +306,6 @@ BR2_PACKAGE_CVITEKCONFIG_PANEL_ZCT2133V1=y
|
|||
BR2_PACKAGE_AIC_FIRMWARE=y
|
||||
BR2_PACKAGE_CLOUDUTILS=y
|
||||
BR2_PACKAGE_CVITEK_MODULES=y
|
||||
BR2_PACKAGE_CVITEK_MIDDLEWARE=y
|
||||
TARGET_PACKAGE_CVITEK_FBTOOLS=y
|
||||
BR2_TARGET_CVITEKFSBL=y
|
||||
|
|
|
@ -4,3 +4,4 @@ source "$BR2_EXTERNAL_LICHEERVNANO_BR_PATH/package/cvitek-modules/Config.in"
|
|||
source "$BR2_EXTERNAL_LICHEERVNANO_BR_PATH/package/cvitek-middleware/Config.in"
|
||||
source "$BR2_EXTERNAL_LICHEERVNANO_BR_PATH/package/miniz/Config.in"
|
||||
source "$BR2_EXTERNAL_LICHEERVNANO_BR_PATH/package/cvitek-oss/Config.in"
|
||||
source "$BR2_EXTERNAL_LICHEERVNANO_BR_PATH/package/cvitek-fbtools/Config.in"
|
||||
|
|
4
package/cvitek-fbtools/Config.in
Normal file
4
package/cvitek-fbtools/Config.in
Normal file
|
@ -0,0 +1,4 @@
|
|||
config TARGET_PACKAGE_CVITEK_FBTOOLS
|
||||
bool "FrameBuffer Tools for CVITEK"
|
||||
help
|
||||
Framebuffer Tools for CVITEK Boards
|
24
package/cvitek-fbtools/cvitek-fbtools.mk
Normal file
24
package/cvitek-fbtools/cvitek-fbtools.mk
Normal file
|
@ -0,0 +1,24 @@
|
|||
################################################################################
|
||||
#
|
||||
# cvitek-config
|
||||
#
|
||||
################################################################################
|
||||
|
||||
#CVITEKFSBL_VERSION = 415722ebd855abef2ba11e9cba3d80106d250eff
|
||||
CVITEK_FBTOOLS_SITE = $(BR2_EXTERNAL_LICHEERVNANO_BR_PATH)/package/cvitek-fbtools/fbtools
|
||||
CVITEK_FBTOOLS_SITE_METHOD = local
|
||||
|
||||
|
||||
|
||||
define CVITEK_FBTOOLS_BUILD_CMDS
|
||||
CC=$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)-gcc $(TARGET_MAKE_ENV) make -C $(@D)/src all
|
||||
endef
|
||||
|
||||
define CVITEK_FBTOOLS_INSTALL_TARGET_CMDS
|
||||
$(INSTALL) -D -m 0755 $(@D)/src/fbbar $(TARGET_DIR)/usr/bin/
|
||||
$(INSTALL) -D -m 0755 $(@D)/src/fbpattern $(TARGET_DIR)/usr/bin/
|
||||
$(INSTALL) -D -m 0755 $(@D)/src/fbdaemon $(TARGET_DIR)/usr/bin/
|
||||
$(INSTALL) -D -m 0755 $(@D)/etc/init.d/S05lcd $(TARGET_DIR)/etc/init.d/
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
29
package/cvitek-fbtools/fbtools/etc/init.d/S05lcd
Executable file
29
package/cvitek-fbtools/fbtools/etc/init.d/S05lcd
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/bin/sh
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
printf "start lcd: "
|
||||
if [ -e /boot/bpp16 ]
|
||||
then
|
||||
modprobe soph_fb.ko
|
||||
else
|
||||
modprobe soph_fb.ko
|
||||
fi
|
||||
/usr/bin/fbdaemon
|
||||
echo "OK"
|
||||
;;
|
||||
stop)
|
||||
printf "stop lcd: "
|
||||
killall fbdaemon
|
||||
echo "OK"
|
||||
;;
|
||||
restart|reload)
|
||||
"$0" stop
|
||||
"$0" start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
8
package/cvitek-fbtools/fbtools/src/Makefile
Normal file
8
package/cvitek-fbtools/fbtools/src/Makefile
Normal file
|
@ -0,0 +1,8 @@
|
|||
CFLAGS += -Wall -Wextra -O3
|
||||
|
||||
all:
|
||||
$(CC) $(CFLAGS) fbbar.c -o fbbar
|
||||
$(CC) $(CFLAGS) fbpattern.c -o fbpattern
|
||||
$(CC) $(CFLAGS) fbdaemon.c -o fbdaemon
|
||||
clean:
|
||||
rm -rf fbbar fbpattern fbdaemon *.out
|
5
package/cvitek-fbtools/fbtools/src/README
Normal file
5
package/cvitek-fbtools/fbtools/src/README
Normal file
|
@ -0,0 +1,5 @@
|
|||
build for cvitek board:
|
||||
|
||||
export CFLAGS="-mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d"
|
||||
export CC=riscv64-unknown-linux-musl-gcc
|
||||
make
|
115
package/cvitek-fbtools/fbtools/src/fbabgr1555.h
Normal file
115
package/cvitek-fbtools/fbtools/src/fbabgr1555.h
Normal file
|
@ -0,0 +1,115 @@
|
|||
#include <fcntl.h>
|
||||
#include <linux/fb.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
#define ABGR1555_BLUE (0b11111 << 0)
|
||||
#define ABGR1555_GREEN (0b11111 << 5)
|
||||
#define ABGR1555_RED (0b11111 << 10)
|
||||
#define ABGR1555_WHITE (ABGR1555_BLUE | ABGR1555_GREEN | ABGR1555_RED)
|
||||
#define ABGR1555_BLACK (0x00)
|
||||
#define ABGR1555_YELLO (ABGR1555_RED | ABGR1555_GREEN)
|
||||
#define ABGR1555_ALPHA (0b1 << 15)
|
||||
|
||||
struct fbabgr1555 {
|
||||
uint8_t *mem;
|
||||
struct fb_fix_screeninfo fix_info;
|
||||
struct fb_var_screeninfo var_info;
|
||||
};
|
||||
typedef struct fbabgr1555 fbabgr1555;
|
||||
|
||||
static inline void fbabgr1555_draw_pixel(fbabgr1555 *fb, int x, int y,
|
||||
uint16_t data) {
|
||||
if ((((uint16_t)x) >= fb->var_info.xres) ||
|
||||
(((uint16_t)y) >= fb->var_info.yres)) {
|
||||
return;
|
||||
}
|
||||
uint8_t *p;
|
||||
p = fb->mem;
|
||||
p += y * fb->fix_info.line_length + x * 2; // 16bit framebuffer
|
||||
uint16_t *p16;
|
||||
p16 = (uint16_t *)p;
|
||||
*p16 = data;
|
||||
}
|
||||
|
||||
static inline void fbabgr1555_draw_xline(fbabgr1555 *fb, int xmin, int xmax,
|
||||
int y, uint16_t data) {
|
||||
for (; xmin <= xmax; xmin++) {
|
||||
fbabgr1555_draw_pixel(fb, xmin, y, data);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void fbabgr1555_draw_yline(fbabgr1555 *fb, int ymin, int ymax,
|
||||
int x, uint16_t data) {
|
||||
for (; ymin <= ymax; ymin++) {
|
||||
fbabgr1555_draw_pixel(fb, x, ymin, data);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void fbabgr1555_draw_rect(fbabgr1555 *fb, int xmin, int ymin,
|
||||
int xmax, int ymax, uint16_t data) {
|
||||
fbabgr1555_draw_xline(fb, xmin, xmax, ymin, data);
|
||||
fbabgr1555_draw_xline(fb, xmin, xmax, ymax, data);
|
||||
fbabgr1555_draw_yline(fb, ymin, ymax, xmin, data);
|
||||
fbabgr1555_draw_yline(fb, ymin, ymax, xmax, data);
|
||||
}
|
||||
|
||||
static inline void fbabgr1555_draw_solid(fbabgr1555 *fb, int xmin, int ymin,
|
||||
int xmax, int ymax, uint16_t data) {
|
||||
for (; ymin <= ymax; ymin++) {
|
||||
fbabgr1555_draw_xline(fb, xmin, xmax, ymin, data);
|
||||
}
|
||||
}
|
||||
|
||||
#include "uni_vga.h"
|
||||
|
||||
// fallbback, no font
|
||||
#ifndef FONT_H
|
||||
#define FONT_H 0
|
||||
#endif
|
||||
|
||||
#ifndef FONT_W
|
||||
#define FONT_W 0
|
||||
#endif
|
||||
|
||||
#ifndef FONT_CODE_POINTS
|
||||
#define FONT_CODE_POINTS 0
|
||||
#endif
|
||||
|
||||
static inline void fbabgr1555_draw_char(fbabgr1555 *fb, int x, int y,
|
||||
uint16_t fg, uint16_t bg, int c) {
|
||||
int i;
|
||||
int found = 0;
|
||||
// todo, replace by binary search
|
||||
for (i = 0; i < FONT_CODE_POINTS; i++) {
|
||||
if (c == font_default_code_points[i]) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
return;
|
||||
}
|
||||
int xf, yf;
|
||||
for (yf = 0; yf < FONT_H; yf++) {
|
||||
for (xf = 0; xf < FONT_W; xf++) {
|
||||
if (font_default_data[i][yf] & (1 << (FONT_W - xf))) {
|
||||
fbabgr1555_draw_pixel(fb, x + xf, y + yf, fg);
|
||||
} else {
|
||||
fbabgr1555_draw_pixel(fb, x + xf, y + yf, bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void fbabgr1555_draw_str(fbabgr1555 *fb, int x, int y,
|
||||
uint16_t fg, uint16_t bg, char *s) {
|
||||
int i = 0;
|
||||
while (s[i] != '\0') {
|
||||
fbabgr1555_draw_char(fb, x, y, fg, bg, s[i]);
|
||||
x += FONT_W;
|
||||
i++;
|
||||
}
|
||||
}
|
115
package/cvitek-fbtools/fbtools/src/fbabgr8888.h
Normal file
115
package/cvitek-fbtools/fbtools/src/fbabgr8888.h
Normal file
|
@ -0,0 +1,115 @@
|
|||
#include <fcntl.h>
|
||||
#include <linux/fb.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
#define ABGR8888_BLUE (0xFF << 0)
|
||||
#define ABGR8888_GREEN (0xFF << 8)
|
||||
#define ABGR8888_RED (0xFF << 16)
|
||||
#define ABGR8888_WHITE (ABGR8888_BLUE | ABGR8888_GREEN | ABGR8888_RED)
|
||||
#define ABGR8888_BLACK (0x00)
|
||||
#define ABGR8888_YELLO (ABGR8888_RED | ABGR8888_GREEN)
|
||||
#define ABGR8888_ALPHA (0xFF << 24)
|
||||
|
||||
struct fbabgr8888 {
|
||||
uint8_t *mem;
|
||||
struct fb_fix_screeninfo fix_info;
|
||||
struct fb_var_screeninfo var_info;
|
||||
};
|
||||
typedef struct fbabgr8888 fbabgr8888;
|
||||
|
||||
static inline void fbabgr8888_draw_pixel(fbabgr8888 *fb, int x, int y,
|
||||
uint32_t data) {
|
||||
if ((((uint16_t)x) >= fb->var_info.xres) ||
|
||||
(((uint16_t)y) >= fb->var_info.yres)) {
|
||||
return;
|
||||
}
|
||||
uint8_t *p;
|
||||
p = fb->mem;
|
||||
p += y * fb->fix_info.line_length + x * 4; // 32bit framebuffer
|
||||
uint32_t *p32;
|
||||
p32 = (uint32_t *)p;
|
||||
*p32 = data;
|
||||
}
|
||||
|
||||
static inline void fbabgr8888_draw_xline(fbabgr8888 *fb, int xmin, int xmax,
|
||||
int y, uint32_t data) {
|
||||
for (; xmin <= xmax; xmin++) {
|
||||
fbabgr8888_draw_pixel(fb, xmin, y, data);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void fbabgr8888_draw_yline(fbabgr8888 *fb, int ymin, int ymax,
|
||||
int x, uint32_t data) {
|
||||
for (; ymin <= ymax; ymin++) {
|
||||
fbabgr8888_draw_pixel(fb, x, ymin, data);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void fbabgr8888_draw_rect(fbabgr8888 *fb, int xmin, int ymin,
|
||||
int xmax, int ymax, uint32_t data) {
|
||||
fbabgr8888_draw_xline(fb, xmin, xmax, ymin, data);
|
||||
fbabgr8888_draw_xline(fb, xmin, xmax, ymax, data);
|
||||
fbabgr8888_draw_yline(fb, ymin, ymax, xmin, data);
|
||||
fbabgr8888_draw_yline(fb, ymin, ymax, xmax, data);
|
||||
}
|
||||
|
||||
static inline void fbabgr8888_draw_solid(fbabgr8888 *fb, int xmin, int ymin,
|
||||
int xmax, int ymax, uint32_t data) {
|
||||
for (; ymin <= ymax; ymin++) {
|
||||
fbabgr8888_draw_xline(fb, xmin, xmax, ymin, data);
|
||||
}
|
||||
}
|
||||
|
||||
#include "uni_vga.h"
|
||||
|
||||
// fallbback, no font
|
||||
#ifndef FONT_H
|
||||
#define FONT_H 0
|
||||
#endif
|
||||
|
||||
#ifndef FONT_W
|
||||
#define FONT_W 0
|
||||
#endif
|
||||
|
||||
#ifndef FONT_CODE_POINTS
|
||||
#define FONT_CODE_POINTS 0
|
||||
#endif
|
||||
|
||||
static inline void fbabgr8888_draw_char(fbabgr8888 *fb, int x, int y,
|
||||
uint32_t fg, uint32_t bg, int c) {
|
||||
int i;
|
||||
int found = 0;
|
||||
// todo, replace by binary search
|
||||
for (i = 0; i < FONT_CODE_POINTS; i++) {
|
||||
if (c == font_default_code_points[i]) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
return;
|
||||
}
|
||||
int xf, yf;
|
||||
for (yf = 0; yf < FONT_H; yf++) {
|
||||
for (xf = 0; xf < FONT_W; xf++) {
|
||||
if (font_default_data[i][yf] & (1 << (FONT_W - xf))) {
|
||||
fbabgr8888_draw_pixel(fb, x + xf, y + yf, fg);
|
||||
} else {
|
||||
fbabgr8888_draw_pixel(fb, x + xf, y + yf, bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void fbabgr8888_draw_str(fbabgr8888 *fb, int x, int y,
|
||||
uint32_t fg, uint32_t bg, char *s) {
|
||||
int i = 0;
|
||||
while (s[i] != '\0') {
|
||||
fbabgr8888_draw_char(fb, x, y, fg, bg, s[i]);
|
||||
x += FONT_W;
|
||||
i++;
|
||||
}
|
||||
}
|
BIN
package/cvitek-fbtools/fbtools/src/fbbar
Executable file
BIN
package/cvitek-fbtools/fbtools/src/fbbar
Executable file
Binary file not shown.
87
package/cvitek-fbtools/fbtools/src/fbbar.c
Normal file
87
package/cvitek-fbtools/fbtools/src/fbbar.c
Normal file
|
@ -0,0 +1,87 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/select.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/mman.h>
|
||||
#include <linux/fb.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <signal.h>
|
||||
#include "fbabgr8888.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int x;
|
||||
int y;
|
||||
|
||||
if (argc < 4) {
|
||||
printf("usage: %s y fg bg\n",argv[0]);
|
||||
printf("bg/fg: format: \n");
|
||||
printf("[ALPHA 8bit][BLUE 8bit][GREEN 8bit][RED 8bit]\n");
|
||||
printf("black: 0xFF000000, white: 0xFFFFFFFF\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = atoi(argv[1]);
|
||||
|
||||
uint32_t fg;
|
||||
uint32_t bg;
|
||||
|
||||
fg = strtol(argv[2], NULL, 16);
|
||||
bg = strtol(argv[3], NULL, 16);
|
||||
|
||||
int fbfd = -1;
|
||||
char *fbdev = "/dev/fb0";
|
||||
char *s;
|
||||
s = getenv("FRAMEBUFFER");
|
||||
if (s != NULL) {
|
||||
fbdev = s;
|
||||
}
|
||||
fbfd = open(fbdev, O_RDWR);
|
||||
if (fbfd < 0) {
|
||||
perror("can't open framebuffer device");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
fbabgr8888 fb;
|
||||
|
||||
if (ioctl(fbfd, FBIOGET_FSCREENINFO, &fb.fix_info) < 0) {
|
||||
perror("can't get framebuffer fix info");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (ioctl(fbfd, FBIOGET_VSCREENINFO, &fb.var_info) < 0) {
|
||||
perror("can't get framebuffer var info");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
fb.mem = mmap(NULL, fb.fix_info.smem_len, PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fbfd, 0);
|
||||
if (fb.mem == MAP_FAILED) {
|
||||
perror("mmap");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
char *buf;
|
||||
int bufsize;
|
||||
|
||||
bufsize = fb.var_info.xres / FONT_W;
|
||||
buf = malloc(bufsize);
|
||||
|
||||
while(1) {
|
||||
memset(buf, ' ', bufsize);
|
||||
if (fgets(buf, bufsize - 1, stdin) == NULL) {
|
||||
if (feof(stdin) != 0) {
|
||||
exit(EXIT_SUCCESS);
|
||||
} else {
|
||||
perror("fgets");
|
||||
}
|
||||
}
|
||||
buf[bufsize - 1] = '\0';
|
||||
fbabgr8888_draw_solid(&fb, x, y,
|
||||
fb.var_info.xres, y + FONT_H, bg);
|
||||
fbabgr8888_draw_str(&fb, x, y, fg, bg, buf);
|
||||
}
|
||||
}
|
BIN
package/cvitek-fbtools/fbtools/src/fbdaemon
Executable file
BIN
package/cvitek-fbtools/fbtools/src/fbdaemon
Executable file
Binary file not shown.
39
package/cvitek-fbtools/fbtools/src/fbdaemon.c
Normal file
39
package/cvitek-fbtools/fbtools/src/fbdaemon.c
Normal file
|
@ -0,0 +1,39 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdint.h>
|
||||
|
||||
int main(void) {
|
||||
int fbfd = -1;
|
||||
char *fbdev = "/dev/fb0";
|
||||
char *s;
|
||||
chdir("/");
|
||||
close(STDIN_FILENO);
|
||||
close(STDOUT_FILENO);
|
||||
close(STDERR_FILENO);
|
||||
switch(fork()) {
|
||||
case -1:
|
||||
perror("fork");
|
||||
exit(EXIT_FAILURE);
|
||||
case 0:
|
||||
s = getenv("FRAMEBUFFER");
|
||||
if (s != NULL) {
|
||||
fbdev = s;
|
||||
}
|
||||
fbfd = open(fbdev, O_RDWR);
|
||||
if (fbfd < 0) {
|
||||
perror("can't open framebuffer device");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
// nothing, just open framebuffer node
|
||||
// for buggy cvi_fb.ko driver
|
||||
while(1) {
|
||||
sleep(100000);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
_exit(EXIT_SUCCESS);
|
||||
break;
|
||||
}
|
||||
}
|
BIN
package/cvitek-fbtools/fbtools/src/fbpattern
Executable file
BIN
package/cvitek-fbtools/fbtools/src/fbpattern
Executable file
Binary file not shown.
192
package/cvitek-fbtools/fbtools/src/fbpattern.c
Normal file
192
package/cvitek-fbtools/fbtools/src/fbpattern.c
Normal file
|
@ -0,0 +1,192 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/select.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/mman.h>
|
||||
#include <linux/fb.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <signal.h>
|
||||
#include "fbabgr8888.h"
|
||||
|
||||
int main(void) {
|
||||
int fbfd = -1;
|
||||
char *fbdev = "/dev/fb0";
|
||||
char *s;
|
||||
s = getenv("FRAMEBUFFER");
|
||||
if (s != NULL) {
|
||||
fbdev = s;
|
||||
}
|
||||
fbfd = open(fbdev, O_RDWR);
|
||||
if (fbfd < 0) {
|
||||
perror("can't open framebuffer device");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
fbabgr8888 fb;
|
||||
|
||||
if (ioctl(fbfd, FBIOGET_FSCREENINFO, &fb.fix_info) < 0) {
|
||||
perror("can't get framebuffer fix info");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (ioctl(fbfd, FBIOGET_VSCREENINFO, &fb.var_info) < 0) {
|
||||
perror("can't get framebuffer var info");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
fb.mem = mmap(NULL, fb.fix_info.smem_len, PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fbfd, 0);
|
||||
if (fb.mem == MAP_FAILED) {
|
||||
perror("mmap");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
int x, y;
|
||||
|
||||
int patsize;
|
||||
patsize = fb.var_info.xres >> 3;
|
||||
|
||||
x = patsize;
|
||||
y = fb.var_info.yres - patsize;
|
||||
|
||||
fbabgr8888_draw_solid(&fb,
|
||||
x - patsize,
|
||||
y - patsize,
|
||||
x,
|
||||
y,
|
||||
ABGR8888_RED | ABGR8888_ALPHA);
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x - patsize,
|
||||
y - patsize,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" RED ");
|
||||
|
||||
fbabgr8888_draw_solid(&fb,
|
||||
x,
|
||||
y - patsize,
|
||||
x + patsize,
|
||||
y,
|
||||
ABGR8888_GREEN | ABGR8888_ALPHA);
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x,
|
||||
y - patsize,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" GREEN ");
|
||||
|
||||
|
||||
fbabgr8888_draw_solid(&fb,
|
||||
x - patsize,
|
||||
y,
|
||||
x,
|
||||
y + patsize,
|
||||
ABGR8888_BLUE | ABGR8888_ALPHA);
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x - patsize,
|
||||
y,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" BLUE ");
|
||||
|
||||
fbabgr8888_draw_solid(&fb,
|
||||
x,
|
||||
y,
|
||||
x + patsize,
|
||||
y + patsize,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA);
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x,
|
||||
y,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" WHITE ");
|
||||
|
||||
x = fb.var_info.xres - patsize;
|
||||
y = fb.var_info.yres - patsize;
|
||||
|
||||
int xmin, ymin, xmax, ymax;
|
||||
uint32_t color;
|
||||
|
||||
xmin = x - patsize;
|
||||
ymin = y - patsize;
|
||||
xmax = x;
|
||||
ymax = y;
|
||||
|
||||
for (; xmin < xmax; xmin++) {
|
||||
if (xmin & 1) {
|
||||
color = ABGR8888_BLACK | ABGR8888_ALPHA;
|
||||
} else {
|
||||
color = ABGR8888_WHITE | ABGR8888_ALPHA;
|
||||
}
|
||||
fbabgr8888_draw_yline(&fb, ymin, ymax, xmin, color);
|
||||
}
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x - patsize,
|
||||
y - patsize,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" VLINE ");
|
||||
|
||||
xmin = x;
|
||||
ymin = y - patsize;
|
||||
xmax = x + patsize;
|
||||
ymax = y;
|
||||
|
||||
for (; ymin < ymax; ymin++) {
|
||||
if (ymin & 1) {
|
||||
color = ABGR8888_BLACK | ABGR8888_ALPHA;
|
||||
} else {
|
||||
color = ABGR8888_WHITE | ABGR8888_ALPHA;
|
||||
}
|
||||
fbabgr8888_draw_xline(&fb, xmin, xmax, ymin, color);
|
||||
}
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x,
|
||||
y - patsize,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" HLINE ");
|
||||
|
||||
|
||||
xmin = x - patsize;
|
||||
ymin = y;
|
||||
xmax = x;
|
||||
ymax = y + patsize;
|
||||
|
||||
for (; ymin < ymax; ymin++) {
|
||||
for (xmin = x - patsize; xmin < xmax; xmin++) {
|
||||
if ((xmin + ymin) & 1) {
|
||||
color = ABGR8888_BLACK | ABGR8888_ALPHA;
|
||||
} else {
|
||||
color = ABGR8888_WHITE | ABGR8888_ALPHA;
|
||||
}
|
||||
fbabgr8888_draw_pixel(&fb, xmin, ymin, color);
|
||||
}
|
||||
}
|
||||
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x - patsize,
|
||||
y,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" CHESS ");
|
||||
|
||||
fbabgr8888_draw_solid(&fb,
|
||||
x,
|
||||
y,
|
||||
x + patsize,
|
||||
y + patsize,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA);
|
||||
fbabgr8888_draw_str(&fb,
|
||||
x,
|
||||
y,
|
||||
ABGR8888_BLACK | ABGR8888_ALPHA,
|
||||
ABGR8888_WHITE | ABGR8888_ALPHA,
|
||||
" BLACK ");
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
55102
package/cvitek-fbtools/fbtools/src/uni_vga.h
Normal file
55102
package/cvitek-fbtools/fbtools/src/uni_vga.h
Normal file
File diff suppressed because it is too large
Load diff
|
@ -3,6 +3,8 @@ CVITEK_MIDDLEWARE_SITE = $(call github,sophgo,middleware,$(CVITEK_MIDDLEWARE_VE
|
|||
CVITEK_MIDDLEWARE_LICENSE = GPL-3.0
|
||||
CVITEK_MIDDLEWARE_DEPENDENCIES = cvitek-modules miniz json-c tinyalsa cvitek-oss cvitekconfig
|
||||
CVITEK_MIDDLEWARE_INSTALL_STAGING = YES
|
||||
|
||||
|
||||
UCCHIPARCH = $(shell echo '$(BR2_PACKAGE_CVITEKCONFIG_CHIP_ARCH)' | tr '[:lower:]' '[:upper:]')
|
||||
|
||||
CVITEK_MIDDLEWARE_MAKE_OPTS = \
|
||||
|
|
Loading…
Add table
Reference in a new issue