On 4/1/2019 9:45 AM, Joel Sherrill wrote:
> On Mon, Apr 1, 2019 at 7:54 AM Jeff Kubascik <jeff.kubas...@dornerworks.com
> <mailto:jeff.kubas...@dornerworks.com>> wrote:
> 
>     On 3/28/2019 8:00 AM, Sebastian Huber wrote:
>     > Hello Jeff,
>     >
>     > On 27/03/2019 19:11, Jeff Kubascik wrote:
>     >> Hello,
>     >>
>     >> I am interested in porting RTEMS to run as a Xen guest on our distro 
> for the
>     >> Xilinx Zynq UltraScale+ MPSoC. The MPSoC has an ARM Cortex-A53 
> processor,
>     which
>     >> is based on the ARMv8 architecture.
>     >>
>     >> I have noticed that RTEMS already runs on a few Zynq 7000 boards.
>     However, those
>     >> are using the Cortex-A9 processor, which is based on the ARMv7 
> architecture.
>     >> Looking at the source code, I didn't see any ARMv8 cpu code.
>     >>
>     >> I was curious if there has been any work done to port RTEMS to an 
> ARMv8 based
>     >> platform?
>     >
>     > AArch64 is a completely new architecture port. I think nobody is working
>     > on that. We may work on AArch32 support for the Zynq UltraScale+ this 
> year:
>     >
>     > http://devel.rtems.org/ticket/3682
>     >
>     > --
>     > Sebastian Huber, embedded brains GmbH
>     >
>     > Address : Dornierstr. 4, D-82178 Puchheim, Germany
>     > Phone   : +49 89 189 47 41-16
>     > Fax     : +49 89 189 47 41-09
>     > E-Mail  : sebastian.hu...@embedded-brains.de
>     <mailto:sebastian.hu...@embedded-brains.de>
>     > PGP     : Public key available on request.
>     >
>     > Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>     >
> 
>     Sebastian,
> 
>     We were able to hack up the xilinx-zynq BSP to get it running on the 
> Ultra96 in
>     AArch32 mode. Surprisingly, it didn't require too many code changes. Our 
> key
>     findings were
> 
>     - Set the CP15BEN bit in the SCTLR register to enable legacy memory 
> barrier
>     system instructions. This is used in the arm-cp15 cache operations.
>     - Clear the TRE bit in the SCTLR register to disable TEX remap. This was 
> causing
>     the page table attributes to show up as strongly ordered, resulting in an
>     unaligned memory exceptions in the newlib memcpy.
>     - Update peripheral addresses, IRQs, clock rates to match the MPSoC.
>     - Update the MMU peripheral region mappings.
>     - Change the system clock source to clock-generic-timer.
>     - Change the cache implementation to cache-cp15.
> 
>     With the above changes, we are able to run all the applications under the
>     testsuites/samples directory on the Ultra96 via JTAG boot.
> 
>     Over the weekend, I started putting together a new xilinx-zynqmp BSP 
> layer to
>     support the Xilinx UltraScale+ MPSoC platform, including the Ultra96 
> development
>     board. If the RTEMS community is interested in these patches, we are 
> looking to
>     submit them later in the week.
> 
> 
> Cool! Sounds of interest.
> 
> This sounds like it would be a variant on the existing xilinx 32-bit BSP. 
> Right?
> Most of the code is unchanged but some conditionals.
> 
> Were there changes outside the BSP?
> 
> If strictly BSP, then it needs a name and then could be a variant of the 
> existing 
> BSP. That basically boils down to a config/*.cfg file with the BSP variant 
> name, 
> some mods to configure.ac <http://configure.ac> to give you an automake 
> variable
> to switch the timer 
> to clock-generic-time in the Makefile.am, and something to trip the various 
> ifdef's
> on. 
> 
> Then some instructions in the Users Guide on how you ran it.
> 
> Of course, that's if I am understanding the magnitude of the change.
> 
> 
>     -Jeff Kubascik
>     _______________________________________________
>     devel mailing list
>     devel@rtems.org <mailto:devel@rtems.org>
>     http://lists.rtems.org/mailman/listinfo/devel
> 

Yes, all the changes are located inside the BSP layer. However, the Zynq 7000
and the Zynq UltraScale+ MPSoC are notably different platforms, enough that I
believe to warrant a new BSP layer.

Differences include
- System addresses are completely different
- Interrupt numbers are completely different
- Cortex-A53 versus Cortex-A9 - this is why I had to change the timer and cache
implementations
- With the MPSoC, power and reset control is performed by a separate PMU 
processor

There is still some overlap, for instance both platforms use the same UART
controllers. I'm thinking this could be brought out to bsps/arm/shared/serial.

-Jeff Kubascik
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to