This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Is Juno Board suitable for ARM BSP development?

We are interested in developing Board Support Package and Bootloader code for SOCs based on ARMv8 Architecture (A57/A53). Can someone please suggest is Juno Board a good option for it?

We are interested in writing the BSP code for Memory Controller, UART,GIC,CCI etc. In a nutshell we want to replace the Bootloader coming with Juno Board deliverable with our own developed Bootloader code except the Boot ROM code. Is it possible to do it on Juno Board?

Parents
  • Hello,

    Regarding the bootloader code: The Juno deliverables use the ARM Trusted Firmware stack, which is an open-source project hosted on GitHub. You can quite easily replace this with your own bootloader code, however it is highly recommended that you do not fully replace the ARM Trusted Firmware.

    In addition to the application processors (Cortex-A53 and Cortex-A57), the Juno SoC includes a Cortex-M3 acting as the System Control Processor (SCP). This SCP is responsible for runtime thermal regulation, power management, reset control, etc. A runtime firmware image is transferred across to the SCP by the primary application processor during the boot sequence; while the ARM Trusted Firmware bootloader stack is open-source, the SCP runtime firmware is only distributed as a binary image.

    With this in mind, we recommend taking control after the SCP runtime firmware image has been transferred. We have published a tutorial detailing how to safely take control of the system in EL2, after all platform-specific initialisation has been done for you. Doing this you are effectively replacing the UEFI bootloader stage, which hopefully is similar to what you want?

    Regarding the BSP code: You can very easily write drivers for any of the ARM IP components included in the SoC, for example the UARTs are PL011 devices, so you would need to consult the PL011 UART Technical Reference Manual (TRM) on the ARM Infocenter. The same applies for the NIC-400, CCI-400, GIC-400, etc. You can consult the Juno SoC TRM for more information.

    I hope this helps,

    Ash.

Reply
  • Hello,

    Regarding the bootloader code: The Juno deliverables use the ARM Trusted Firmware stack, which is an open-source project hosted on GitHub. You can quite easily replace this with your own bootloader code, however it is highly recommended that you do not fully replace the ARM Trusted Firmware.

    In addition to the application processors (Cortex-A53 and Cortex-A57), the Juno SoC includes a Cortex-M3 acting as the System Control Processor (SCP). This SCP is responsible for runtime thermal regulation, power management, reset control, etc. A runtime firmware image is transferred across to the SCP by the primary application processor during the boot sequence; while the ARM Trusted Firmware bootloader stack is open-source, the SCP runtime firmware is only distributed as a binary image.

    With this in mind, we recommend taking control after the SCP runtime firmware image has been transferred. We have published a tutorial detailing how to safely take control of the system in EL2, after all platform-specific initialisation has been done for you. Doing this you are effectively replacing the UEFI bootloader stage, which hopefully is similar to what you want?

    Regarding the BSP code: You can very easily write drivers for any of the ARM IP components included in the SoC, for example the UARTs are PL011 devices, so you would need to consult the PL011 UART Technical Reference Manual (TRM) on the ARM Infocenter. The same applies for the NIC-400, CCI-400, GIC-400, etc. You can consult the Juno SoC TRM for more information.

    I hope this helps,

    Ash.

Children