Skip to content
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

RT600 arm core support #123

Open
maxekman opened this issue Jan 28, 2023 · 4 comments
Open

RT600 arm core support #123

maxekman opened this issue Jan 28, 2023 · 4 comments

Comments

@maxekman
Copy link

maxekman commented Jan 28, 2023

Hi,

This is more of a question; I would like to know if you would have an estimate for the amount of work needed to support the RT600 series? I'm not requesting it, just curious to know about your feeling for the effort needed. I think the main difference apart from peripherals is the M33 architecture (ARMv8), but I have just glanced at the data sheet.

I do understand that the additional DSP co-processor is completely different to the core CPU, and would probably better be implemented in it's own crate.

Thanks,
Max

https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt600-crossover-mcu-with-arm-cortex-m33-and-dsp-cores:i.MX-RT600

@teburd
Copy link
Member

teburd commented Jan 28, 2023

The rt600, specifically the rt685 has a different arm core (m33) and peripheral set than the rt1xxx series. The xtensa hifi4 core is an even more interesting task as there’s a forked rust compiler required to even attempt this from espressif. Xtensa like its name suggests is a highly configurable core so it’d likely require some patches to support it well.

I think the m33 core would be mostly feasible. Get a ral output cleaned up and merged with the existing ones where sensible. There’s a lot of unique peripherals for this part though, the powerquad dsp, the many many flexcomms, two dmacs, yeah it’s quite the chip! The evk board has a lot of nice audio interfaces already setup as well and those would be great to tinker with. I’ve gotten audio from the on board codec with C, the nxp samples, and zephyr. In rust this would be quite the achievement.

It would be an amazing experience to program this in rust though! At the moment even Zephyr doesn’t support it that well beyond the m33 core. Supporting this part fully would be a boon and open some doors, the hifi cores are used in many many places that you may not realize. Like intel uses them in many parts as can seen in the SoF project.

@maxekman
Copy link
Author

Thanks for the great summary! I did not realize that the Xtensa core would require a compiler fork, but I understand it now that you point it out. I also didn’t know that the Espressif chips used similar cores!

As you mention, I had that exact dev board in mind for an audio project. Sounds like quiet an undertaking to get it all working in Rust. I’ll let you know if I dive in, but most likely not.

@maxekman maxekman changed the title Support for RT600 Effort required to support for RT600? Jan 29, 2023
@maxekman
Copy link
Author

Found the forked compiler, adding it here for future reference: https://github.com/esp-rs/rust

@teburd
Copy link
Member

teburd commented Jan 29, 2023

It still might be worth getting the arm core supported even if the xtensa isn’t initially. They would require separate images anyways. Reopened and retitled to cover that.

@teburd teburd reopened this Jan 29, 2023
@teburd teburd changed the title Effort required to support for RT600? RT600 arm core support Jan 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants