Wow, it's sad how old this thread is. So old, that I forgot I had posted to it years ago, and found my own posts via google search.
However, I tried my hand at this again. TL;DR: FreeBSD on Rk3399, boots, usb, ethernet, HDMI->DVI all seem working, (however, had some random, kernel panics during some boots, but very unclear way) ... but massively under performs Linux ( Armbian 23.02.1 jammy ) with a super simple iperf3 test over the build in NIC. Only tunable is dev.dwc.0.delays, which only makes things generally worse, or drops the network all together (is if_dwc polling and not using interrupts ?)
Code:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.01 sec 1.86 GBytes 531 Mbits/sec receiver
vs
Code:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.01 sec 3.27 GBytes 936 Mbits/sec receiver
Over loopback (localhost)
Code:
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 5.36 GBytes 1.53 Gbits/sec receiver
So it's not the kernel, and almost line rate on Linux, so its not the hardware. It must be the FreeBSD driver - dwc - which is also missing a man page. Sadly, I don't have any 1Gbps PCIe cards handy (I had two old ones, that had various issues). I have some chelsio T3s and T4s ... will try them later, but don't have the correct combination of SPFs to test with ATM.
I compiled FreeBSD/arm64 in a VM with UTM.app on macOS (MacBook Pro, M1 Max, 64GB RAM) - so, I don't want the ARM build/release to recompiled. (Start a new thread or DM, if you are curious about UTM+FreeBSD/ARM on Apple Silicon, btw - very nice, but haven't used it much. )
Diff:
--- /usr/src/release/release.sh.orig 2023-04-30 12:41:14.626052000 -0700
+++ /usr/src/release/release.sh 2023-04-30 12:41:20.710009000 -0700
@@ -443,7 +443,7 @@
trap "umount ${CHROOTDIR}/dev" EXIT # Clean up devfs mount on exit
chroot_setup
extra_chroot_setup
- chroot_build_target
+ #chroot_build_target
${chroot_build_release_cmd}
Bash:
#!/bin/sh
FTPDIR="/z/freebsd/release/arm64.aarch64/13.2-STABLE/2023-04-09-a0b3fbe4ccb6/ftp"
mkdir /scratch
tar -xf ${FTPDIR}/base.txz -C /scratch
tar -xf ${FTPDIR}/kernel.txz -C /scratch
tar -xf ${FTPDIR}/src.txz -C /scratch
tar -xf ${FTPDIR}/obj.txz -C /scratch
pkg --chroot=/scratch install sysutils/u-boot-rockpro64
cd /usr/src/release
sh release.sh -c arm64/ROCKPRO64-DPD.conf
EMBEDDEDPORTS keeps wants to keep building the port ... I want to use pkgs ... so ... install it ahead of time.
And my ROCKPRO64-DPD.conf is :
Bash:
#!/bin/sh
#
# $FreeBSD$
#
EMBEDDED_TARGET_ARCH="aarch64"
EMBEDDED_TARGET="arm64"
EMBEDDEDBUILD=0
#EMBEDDEDPORTS="sysutils/u-boot-rockpro64"
FAT_SIZE="50m -b 16m"
FAT_TYPE="16"
IMAGE_SIZE="8192M"
KERNEL="DPD"
MD_ARGS="-x 63 -y 255"
PART_SCHEME="GPT"
export CHROOTBUILD_SKIP="YES"
export SRC_UPDATE_SKIP="YES"
export NOPORTS="YES"
export BOARDNAME="ROCKPRO64"
arm_install_uboot() {
UBOOT_DIR="/usr/local/share/u-boot/u-boot-rockpro64"
UBOOT_FILE_1="idbloader.img"
UBOOT_FILE_2="u-boot.itb"
chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILE_1} \
of=/dev/${mddev} bs=512 seek=64 conv=sync
chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILE_2} \
of=/dev/${mddev} bs=512 seek=16384 conv=sync
return 0
}
Image will drop in: /scratch/R/FreeBSD-13.2-STABLE-arm64-aarch64-ROCKPRO64.img.xz