Tiga Ird Board, OpenOCD, GDB-aarch64-none-gnu, Sharing URLs to read on using a Raspberry Pi 4B with GhostBSD / FreeBSD

From: Fred G. Finster <fred_at_thegalacticzoo.com>
Date: Tue, 05 Mar 2024 10:07:06 UTC
Here is a newer version of Raspberry Pi 4B, 3B, 400 image to download 
728 Mbytes

http://ghostbsdarm64.hopto.org/packages/Ghost14_5G_selfbuilt_raspi4b_Feb7_1.img

or download a,000 byte shell script file , 
write_freebsd_img_dd_to_da1.sh,  to automate the downloading , 
decompressing, and writing into /dev/da1 usb flash drive that large 
image file.



Raspberry Pi 5 status thread,  where I shared 3 patch files to enable 
HDMI Audio out the TV speakers with FreeBSD
https://forums.FreeBSD.org/threads/raspberry-pi-5-status.91406/post-641494

Forum Post with URL Links to  JTAG post, UART3, OpenOCD, GDB
https://forums.FreeBSD.org/threads/arm-arm64-gpio-irq-cpu-affinity-is-it-supported.92490/post-645899

Has anybody tested the extra UART 2, 3, 4, 5 serial ports on the 
Raspberry Pi 4?
https://forums.FreeBSD.org/threads/raspberry-pi-5-status.91406/post-643076

Directions for patching in source code to enable HDMI Audio Speakers on 
the TV.
https://forums.FreeBSD.org/threads/raspberry-pi-5-status.91406/post-641494

What I am looking for is the setup of  the .dts and dtsi files to enable 
the UART3 serial port to operate in FreeBSD aarch64 on the Raspberry Pi 
4B with 8 GB dram, a 500GB SSD, and ethernet DHCP connection to the router.

2nd I have OpenOCD connected and running through a Tigard Board FT2232H 
FTDI USB uart serial port devices  connected  to the Raspberry Pi 4B. 
board.  I want to test and look into why the UART3 serial port is not 
getting setup and used by FreeBSD.

Serial UART3 port setup  blog post
https://ghostbsd-arm64.blogspot.com/2024/02/uart3-serial-port-how-to-locate-source.html


uart3-overlay.dts

/dts-v1/;
/plugin/;

/{
	compatible = "brcm,bcm2711";

	fragment@0 {
		target = <&uart3>;
		__overlay__ {
			pinctrl-names = "default";
			pinctrl-0 = <&uart3_pins>;
			status = "okay";
		};
	};

	fragment@1 {
		target = <&uart3_pins>;
		__dormant__ {
			brcm,pins = <4 5 6 7>;
			brcm,pull = <0 2 2 0>;
		};
	};

	__overrides__ {
		ctsrts = <0>,"=1";
	};
};


DIFFERENT VERSION of Uart3 DTSI description:
I will send email now, and study tomorrow what is different between 
these 2 files.


uart3: serial@7e201600 {
                         compatible = "arm,pl011", "arm,primecell";
                         reg = <0x7e201600 0x200>;
                         interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
                         clocks = <&clocks BCM2835_CLOCK_UART>,
                                  <&clocks BCM2835_CLOCK_VPU>;
                         resets = <&dvp 0>;
                         interrupt-parent = <&aon_intr>;
                         interrupts = <0>, <1>, <2>,
                                      <3>, <4>, <5>;
                         interrupt-names = "cec-tx", "cec-rx", "cec-low",
                                           "wakeup", "hpd-connected", 
"hpd-removed";
                         ddc = <&ddc0>;
                         dmas = <&dma 10>;
                         dma-names = "audio-rx";
                        # status = "disabled";
                      status = "okay";
                 };



Need to understand how what is written in this overlay file converts to 
code or is related to already existing code and adds the interrupt 
signal 121 to look at UART3 and see if it has an empty transmit register 
or has received charters to read from the receive register.  Maybe add 
the interrupt description to the Uart3-overlay.dts file.  Look at the 
bcm2711.dts and the raspi4-b-overlay.dts files

In writing this email to you,  I am considering the problem I am having 
with the UART3 code.   From the overlay above, it may enable/setup the 
GPIO pins, from 40 pin header, 7 Uart3 TX and 29 Uart3 RX to connect 
with open the internal UART3 device on the SOC.  Maybe I should move the 
description of ther interrupts and GIC interrupt controller to be listed 
in this DTS Overlay description. That is the question I am asking.  I 
will give this a good google search to find examples of describing the 
interrupt connections at  the Uart3-overlay.dts


2nd,  What tools do you use like ddb or gdb or  JTAG to get a pick 
inside the target device  Arm64 SOC?  I wish to dump the register at 
adress 0x7e20 1600 to see how it is setup?  Maybe poke a character 0x41 
to the TX transmit register and watch it come out on the Serial Terminal 
as a Capital A.  This would verify that the hardware is working and the 
signals are connected correctly.

Ghidra,  Does anybody use this with Arm64 machine language?  Or do you 
have plenty of access using GDB to disassembly code and set breakpoints?

Is there a llvm   lldb  debugger to use in place of GDB?

Question, Questions.  Wish I could be more helpful to this group with 
FreeBSD - Arm64 development.  IT seems like I am having to difficult of 
time just setting up my test and debug equipment.





Those are my thoughts.  I shared some reading material about JTAG on the 
Raspbery Pi 4 board..  I hope someone does test HDMI Audio sound on a 
Raspberry Pi 5 sbc.  Looking for someone to get a working FreeBSD / 
GhostBSD desktop with HDMI Audio sound working, Uart3 working,  Then can 
look at porting OpenBSD or NetBSD wifi driver code for the CY43455 WIFI 
Chip.  Now owned by Infineon??

-- 
Fred Finster
GhostBSD-Arm64.blogspot.com
t.me/ghostbsd  Telegram Channel
GhostBSD.org  website