Page 1 of 1

Clock speed, UART, and booting

Posted: Mon Aug 05, 2024 6:02 pm
by Ruturaj Mali
Although I'm a complete novice when it comes to bare-metal PI, however, I do have experience on the Arduino. I've learned a lot from going through the demos, but I'm still not quite sure what clock speed means. According to the specs, the CPU in my PI4-B is a BCM 2711 with a 1.5 GHz speed. I did exactly that to find garbage when I calculated the register value for AUX_MU_BAUD_REG. Then, I used a suggested value from a YouTube video (based on a 500 MHz speed), and that's how it worked. Okay, so perhaps the speed of the CPU and the board differ. Strangely, I have to rely on thedata sheet statements because my application needs some real-time capabilities, but I've never seen anything that allows me to assume the
Now that everything on the SD Card has been cleared out, here is my SD Boot media:
fixup4.dat
start4.elf
#miniuart-bt.dtbo
bcm2711-rpi-4-b.dtb
config.txt
kernel.img
That is what's in the config.txt:
arm_64bit=1
uart_2ndstage=1
#dtoverlay=miniuart-bt
kernel=kernel.img
Even though I can see the kernel operating (it's just reading from the UART and returning the character), it's garbage. It doesn't matter if the miniuart-bt is included in the configuration.
Would someone kindly point me in the right direction and explain what clock speed the board is operating at so that I can locate this information?

Re: Clock speed, UART, and booting

Posted: Tue Aug 20, 2024 11:10 am
by Shraddha
The problem you're encountering with the UART and the garbage data is likely due to a mismatch in the baud rate calculation.

Understanding Clock Speed and UART is important.
1. The BCM2711 in your Raspberry Pi 4B has a CPU clock speed of 1.5 GHz.
2. The UART peripheral has its own clock, which is usually different from the CPU clock. For the mini UART (AUX_MU), it usually runs at a fixed clock speed of 500 MHz.

Calculate the correct register value
1. If you want a specific baud rate, you calculate the register value (AUX_MU_BAUD_REG);

Register Value = [500,000,000/(8×Baud Rate)]-1

2. Set the calculated value into the AUX_MU_BAUD_REG

Ensure the mini UART is used: Make sure the miniuart-bt overlay is either commented out or correctly configured in config.txt.
Set the calculated baud rate