[PATCH rtems-docs] raspberrypi4.rst: Added Documentation for the new AArch64 Raspberry pi 4B BSP

Chris Johns chrisj at rtems.org
Mon Sep 26 07:13:44 UTC 2022


On 26/9/2022 5:10 pm, Chris Johns wrote:
> Hi,
> 
> Thanks for this. Looks good. I few minor issues.
> 
> Should memory sizes be discussed given there are a few models with different
> sized memory?
> 
> Can the subject please be:
> 
>  user/raspberrypi4.rst: Added the AArch64 Raspberry pi 4B BSP

Sorry this should be ...

  user/raspberrypi4: Added the AArch64 Raspberry pi 4B BSP

Chris

> 
> Minor nit has the end of the email ...
> 
> On 26/9/2022 4:52 pm, Mohd Noor Aman wrote:
>> This patch adds the relevant documentations required for booting the new BSP. JTAG support is added for debugging. I have built the HTML docs and verified them.
> 
> Please update the commit message to be max 80 characters in width.
> 
>> ---
>>  user/bsps/aarch64/raspberrypi4.rst | 92 ++++++++++++++++++++++++++++++
>>  user/bsps/bsps-aarch64.rst         |  1 +
>>  2 files changed, 93 insertions(+)
>>  create mode 100644 user/bsps/aarch64/raspberrypi4.rst
>>
>> diff --git a/user/bsps/aarch64/raspberrypi4.rst b/user/bsps/aarch64/raspberrypi4.rst
>> new file mode 100644
>> index 0000000..94daacf
>> --- /dev/null
>> +++ b/user/bsps/aarch64/raspberrypi4.rst
>> @@ -0,0 +1,92 @@
>> +.. SPDX-License-Identifier: CC-BY-SA-4.0
>> +
>> +.. Copyright (C) 2022 Mohd Noor Aman
>> +
>> +.. _BSP_aarch64_Raspberrypi_4:
>> +
>> +Raspberry Pi 4B
>> +===============
>> +
>> +The 'raspberrypi4b' BSP currently supports only the LP64 ABI. Raspberry pi 4B
>> +and Raspberry Pi 400  are supported. The default bootloader which is used by the
>> +Raspbian OS or other OS can be used to boot the RTEMS. Currently, QEMU is not
>> +supported. This BSP supports the GICv2 interrupt controller.
>> +
>> +Clock Driver
>> +------------
>> +
>> +The clock driver uses the `ARM Generic Timer`.
>> +
>> +Console Driver
>> +--------------
>> +
>> +The console driver supports the default Qemu emulated ARM PL011 PrimeCell UART
>> +as well as the physical ARM PL011 PrimeCell UART in the raspberrypi hardware.
>> +Only UART0 is supported as of now.
>> +
>> +Preparing to boot
>> +------------------
>> +
>> +Raspberry Pi uses a different mechanism to boot. First the GPU initializes,
>> +loads the bootloader and then looks for the kernel img. By default the arm64
>> +mode looks for the ``kernel8.img``. Any other kernel can be loaded by adding
>> +`kernel=<img_name>` to the ``config.txt``.
>> +
>> +The Firmware files are required in order to boot RTEMS. The latest firmware can
>> +be downloaded from the `Raspberry Pi Firmware Repository
>> +<https://github.com/raspberrypi/firmware/>`_. USB boot is supported. All the
>> +files (Firmwares and kernel) must be place in the FAT32 partition only. Add
>> +``arm_64bit=1`` in the config.txt file in order to boot the BSP in 64bit kernel
>> +mode. 
>> +
>> +
>> +UART Setup
>> +^^^^^^^^^^
>> +
>> +Connect your serial device to the GPIO15 and GPIO14. Add the following to the
>> +config.txt file in order to use the PL011 UART0.
>> +
>> +.. code-block:: none
>> +
>> +  dtoverlay = disable-bt
>> +  enable_uart=1
>> +
>> +Generating kernel image 
>> +^^^^^^^^^^^^^^^^^^^^^^^
>> +
>> +The following steps show how to run ``hello.exe`` on the BSP. Other executables
>> +can be processed in a similar way.
>> +
>> +To create the kernel image:
>> +
>> +.. code-block:: shell
>> +
>> +  $ aarch64-rtems at rtems-ver-major@-objcopy -Obinary hello.exe kernel8.img
>> +
>> +Copy the kernel image to the SD card.
>> +
>> +JTAG Setup
>> +----------
>> +
>> +The Raspberry Pi 4 doesn't have dedicated JTAG pins. Instead, you must configure
>> +the GPIO pins (GPIO22-GPIO27) to activate the JTAG functionality. The RPi 4
>> +documentation refers to this as Alt4 functions of those pins. Alt5 does exist
>> +too, which goes from GPIO4, 5, 6, 12 and 13. you can check this out from
>> +`pinout.xyz <https://pinout.xyz/pinout/jtag#>`_ or `eLinux
>> +<https://elinux.org/RPi_BCM2835_GPIOs>`_
>> +
>> +One more thing to note on JTAG with Raspberry pi 4B is that, by default, All the
>> +GPIO pins are pulled down, according to the `BCM2711 documentation
>> +<https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf>`_. This
>> +wasn't the case in the earlier models. So in order to let the data flow freely,
>> +we will have to disable them.
>> +
>> +.. code-block:: none
>> +
>> +  # Disable pull downs
>> +  gpio=22-27=np
>> +
>> +  # Enable jtag pins (i.e. GPIO22-GPIO27)
>> +  enable_jtag_gpio=1
>> +
>> +
>> diff --git a/user/bsps/bsps-aarch64.rst b/user/bsps/bsps-aarch64.rst
>> index 933370f..f3aa15c 100644
>> --- a/user/bsps/bsps-aarch64.rst
>> +++ b/user/bsps/bsps-aarch64.rst
>> @@ -9,3 +9,4 @@ aarch64 (AArch64)
>>  .. include:: aarch64/a72.rst>  .. include:: aarch64/xilinx-versal.rst
>>  .. include:: aarch64/xilinx-zynqmp.rst
>> +.. include:: aarch64/raspberrypi4.rst
> 
> Can the order please be sorted?
> 
> Thanks
> Chris
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list