-
Notifications
You must be signed in to change notification settings - Fork 7.3k
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
base: main
Are you sure you want to change the base?
Conversation
- 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>
}; | ||
|
||
main_uart6_tx_default: main_uart6_tx_default { | ||
pinmux = <K3_PINMUX(0x0020, PIN_OUTPUT, MUX_MODE_3)>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinmux = <K3_PINMUX(0x0020, PIN_OUTPUT, MUX_MODE_3)>; | |
pinmux = <K3_PINMUX(0x0198, PIN_OUTPUT, MUX_MODE_3)>; |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
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.
cpu@1 { | ||
status = "okay"; | ||
}; |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this 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.
Add support to run Zephyr (instead of Linux) on A53s.
Currently, only support for rev A0 (AM6232).
Only enable UART for now.