Compiling device tree overlays

From: John Rushford <jjrushford_at_gmail.com>
Date: Wed, 01 Feb 2023 03:15:59 UTC
Greetings,

The additional uarts on raspberry pi 4 do not function in FreeBSD 13.1.  I’ve built the rpi-firmware port but it seems to extract pre-built dtb’s for Linux, at least that’s my understanding.
I install these pre-built dtb’s into the boot/msdos/overlays directory and I then try to enable uart3 with ‘dtoverlay=uart3’ in config.txt.  I can see after boot that there is an additional ttyu1 and cuau1 but,
Neither of these functions.  Using vmstat -I I see no interrupts generated for uart3 when I open the ttyu1 or cuau1 with “cu -l”.  Also, when I write data to the device file, the write blocks.  
Using ‘watch’ on /dev/ttyu1, I see no data read ever.  I have a GPS card wired up to uart3 and I do not see the NMEA data there but when I change out the SD card and boot into Debian, uart3 works fine.

So, I’m thinking there may be an issue with the pre-built dtb’s and am trying to make changes to ./sys/contrib/device-tree/src/arm/bcm2711.dtsi to troubleshoot uart3.  I’m a newbie to raspberry pi and device tree overlays.
I do not know how to compile my changes and build a new uart3.dtbo and am unable to find any documentation on this.  I was wondering if someone could help me out with this task?

Thanks
John Rushford