Skip to content

Add PocketBeagle 2 A53 support #89130

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

Ayush1325
Copy link
Member

Add support to run Zephyr (instead of Linux) on A53s.
Currently, only support for rev A0 (AM6232).
Only enable UART for now.

- AM6232 is a dual core variant of AM6234 with everything being same.
- Used in the first batch of PocketBeagle 2

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
- Add devicetree for AM6232, the dual core AM62 processor without GPU
- Used in revision A0 of PocketBeagle 2

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
- Add support to run Zephyr on A53 with U-boot for rev A0.
- Only UART support for now

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
@github-actions github-actions bot added area: ARM64 ARM (64-bit) Architecture platform: BeagleBoard BeagleBoard.org Foundation platform: TI K3 Texas Instruments Keystone 3 Processors labels Apr 26, 2025
};

main_uart6_tx_default: main_uart6_tx_default {
pinmux = <K3_PINMUX(0x0020, PIN_OUTPUT, MUX_MODE_3)>;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
pinmux = <K3_PINMUX(0x0020, PIN_OUTPUT, MUX_MODE_3)>;
pinmux = <K3_PINMUX(0x0198, PIN_OUTPUT, MUX_MODE_3)>;

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Umm, the uart6 pins used in debug port are J23 and J25, with SW flow control. So the pins defined here are correct.

You can also check the linux devicetree here.

2025-04-28T16:55:16,141181937+05:30

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes, maybe we should add the pin and muxing as comment next to it similar to Linux.

#address-cells = <1>;
#size-cells = <0>;

cpu@1 {
Copy link
Collaborator

@dnltz dnltz Apr 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about we add all four cores to ti_am62x_a53 and set them to disabled? This would make this and the am6234 file obsolete and each board can decide which core to enable.

Comment on lines +27 to +29
cpu@1 {
status = "okay";
};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea behind A53 support on the phyBOARD-Lyra was to have something like jail-house based on Zephyr. So, Zephyr would run on core 0 and Linux on core 1+. In case Linux doesn't response, Zephyr is able to restart Linux or do something else.

In my option, the K3 architecture was designed to out-source hard real-time tasks to all the co-processors. So, Zephyr should run only run on M4/R5 cores while Linux runs on all A cores. The only reason I haven't deleted A53 support for the phyBOARD-Lyra is because it already exists and might be used for that jail-house use-case.
The last thing we need is an alternative of Linux (which by the way has support for all interfaces in the MAIN domain), while basic stuff is missing in the MCU domains.

This shouldn't block this PR but I would appreciate if Texas Instruments and/or BeagleBoard stick to Zephyr's core idea.

Copy link
Member Author

@Ayush1325 Ayush1325 Apr 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my option, the K3 architecture was designed to out-source hard real-time tasks to all the co-processors. So, Zephyr should run only run on M4/R5 cores while Linux runs on all A cores. The only reason I haven't deleted A53 support for the phyBOARD-Lyra is because it already exists and might be used for that jail-house use-case.
The last thing we need is an alternative of Linux (which by the way has support for all interfaces in the MAIN domain), while basic stuff is missing in the MCU domains.

Well, the main supported way is still Linux + Zephyr on M4, MSP0, etc.

However, I am not sure I agree about not supporting an alternative to Linux. TI supports baremetal and FreeRTOS programming for A53s. While the official FreeRTOS support seems to be limited to single A53 core, with inclusion of SMP in FreeRTOS 11, I have seen stuff floating around for full FreeRTOS setups (like here).

Zephyr already has SMP, POSIX API support, userspace, LLEXT, etc. So for specialized workflows, it can make a lot of sense to go all Zephyr.

Additionally, the form factor and IO of PocketBeagle 2 make it quite attractive for high performance specialized usecases.

As for single a53 target, I was planning to add a53_0 target at some point. However, I have not figured out how to Linux + Zephyr yet.

cc @jadonk

Copy link
Collaborator

@dnltz dnltz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since pinmuxing is correct, I don't see any reason to block that PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: ARM64 ARM (64-bit) Architecture platform: BeagleBoard BeagleBoard.org Foundation platform: TI K3 Texas Instruments Keystone 3 Processors
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants