[PATCH v4] doc/raspberrypi: Added instructions for raspberrypi

G. S. Niteesh gsnb.gn at gmail.com
Thu Feb 13 17:12:16 UTC 2020


On Thu, Feb 13, 2020 at 10:40 PM Alan Cudmore <alan.cudmore at gmail.com>
wrote:

> Hi Niteesh,
> I have followed your instructions for getting RTEMS running on the Pi
> 1 and 2. SMP currently is not working on the 2 for me, but that is not
> a problem with these instructions.
> I started to try running on QEMU following your instructions but have
> not been able to get time to complete my tests.

What problem are you exactly facing?

>
>
But this is a vast improvement over "TODO", so I recommend accepting
> this change.
>
> Thanks for creating this,
> Alan
>
> On Thu, Feb 13, 2020 at 1:49 AM G. S. Niteesh <gsnb.gn at gmail.com> wrote:
> >
> > Can someone take a look at this, It has been unnoticed for quite a while.
> >
> > Thank you,
> > Niteesh
> >
> > On Sat, Jan 25, 2020 at 10:49 PM G S Niteesh <gsnb.gn at gmail.com> wrote:
> >>
> >> Added instructions to run examples on raspberrypi.
> >> ---
> >>  user/bsps/arm/raspberrypi.rst | 111 +++++++++++++++++++++++++++++++++-
> >>  1 file changed, 110 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/user/bsps/arm/raspberrypi.rst
> b/user/bsps/arm/raspberrypi.rst
> >> index 4ef75bd..72889a5 100644
> >> --- a/user/bsps/arm/raspberrypi.rst
> >> +++ b/user/bsps/arm/raspberrypi.rst
> >> @@ -5,4 +5,113 @@
> >>  raspberrypi
> >>  ===========
> >>
> >> -TODO.
> >> +This BSP supports `Raspberry Pi 1` and `Raspberry Pi 2` currently.
> >> +The support for `Raspberry Pi 3` is work under progress.
> >> +The default bootloader on the Raspberry Pi which is used to boot
> Raspbian
> >> +or other OS can be also used to boot RTEMS. U-boot can also be used.
> >> +
> >> +Setup SD card
> >> +----------------
> >> +
> >> +The Raspberry Pis have an unconventional booting mechanism. The GPU
> >> +boots first, initializes itself, runs the bootloader and starts the
> CPU.
> >> +The bootloader looks for a kernel image, by default the kernel images
> must
> >> +have a name of the form ``kernel*.img`` but this can be changed by
> adding
> >> +`kernel=<img_name>` to ``config.txt``.
> >> +
> >> +You must provide the required files for the GPU to proceed. These files
> >> +can be downloaded from
> >> +`the Raspberry Pi Firmware Repository <
> https://github.com/raspberrypi/firmware/tree/master/boot>`_.
> >> +You can remove the ``kernel*.img`` files if you want too, but don't
> touch
> >> +the other files.
> >> +
> >> +Copy these files in to a SD card with FAT filesystem.
> >> +
> >> +Kernel image
> >> +------------
> >> +
> >> +The following steps show how to run ``hello.exe`` on a Raspberry Pi 2.
> >> +The same instructions can be applied to Raspberry Pi 1 also.
> >> +Other executables can be processed in a similar way.
> >> +
> >> +To create the kernel image:
> >> +
> >> +.. code-block:: none
> >> +
> >> +     $ arm-rtems5-objcopy -Obinary hello.exe kernel.img
> >> +
> >> +Copy the kernel image to the SD card.
> >> +
> >> +Make sure you have these lines below, in your ``config.txt``.
> >> +
> >> +.. code-block:: none
> >> +
> >> +     enable-uart=1
> >> +     kernel_address=0x200000
> >> +     kernel=kernel.img
> >> +
> >> +Testing using QEMU
> >> +------------------
> >> +
> >> +QEMU can be built using RSB. Navigate to ``<SOURCE_BUILDER_DIR>/rtems``
> >> +and run this command.
> >> +
> >> +.. code-block:: none
> >> +
> >> +     $ ../source-builder/sb-set-builder --prefix=<TOOLCHAIN_DIR>
> devel/qemu4.bset
> >> +
> >> +**Note**: Replace ``<SOURCE_BUILDER_DIR>`` and ``<TOOLCHAIN_DIR>``
> with the
> >> +correct path of the directories. For example, if you used quick-start
> section
> >> +as your reference, these two will be ``$HOME/quick-start/src/rsb`` and
> >> +``$HOME/quick-start/rtems/5`` respectively,
> >> +
> >> +QEMU along with GDB can be used for debugging, but it only supports
> >> +Raspberry Pi 2 and the emulation is also incomplete. So some of the
> >> +features might not work as expected.
> >> +
> >> +Make sure your version of QEMU is newer than v2.6, because older ones
> don't
> >> +support Raspberry Pis.
> >> +
> >> +.. code-block:: none
> >> +
> >> +     $ qemu-system-arm -M raspi2 -m 1G -kernel hello.exe -serial
> mon:stdio -nographic -S -s
> >> +
> >> +This starts QEMU and creates a socket at port ``localhost:1234`` for
> GDB to
> >> +connect.
> >> +
> >> +The Device Tree Blob (DTB) is needed to load the device tree while
> starting up
> >> +the kernel. The BSP uses information from this file to initialize the
> drivers.
> >> +
> >> +Make sure you pass in the correct DTB file. There are currently two
> version of
> >> +DTB for the Raspberry Pi 2 ``bcm2709-rpi-2-b.dtb`` and
> ``bcm2710-rpi-2-b.dtb``.
> >> +The ``bcm2709-rpi-2-b.dtb`` is for Raspberry Pi 2 Model B and
> >> +``bcm2710-rpi-2-b.dtb`` is for Raspberry Pi 2 Model B v1.2
> >> +
> >> +We need to pass in the DTB file to GDB before running the example.
> >> +
> >> +In a new terminal, run GDB using
> >> +
> >> +.. code-block:: none
> >> +
> >> +     $ arm-rtems5-gdb hello.exe
> >> +
> >> +This will open GDB and will load the symbol table from hello.exe.
> Issue the
> >> +following commands in the GDB prompt.
> >> +
> >> +.. code-block:: none
> >> +
> >> +     (gdb) tar remote:1234
> >> +     (gdb) load
> >> +     (gdb) restore bcm2709-rpi-2-b.dtb binary 0x2ef00000
> >> +     (gdb) set $r2 = 0x2ef00000
> >> +
> >> +This will connect GDB to QEMU and will load the DTB file and the
> application.
> >> +
> >> +.. code-block:: none
> >> +
> >> +     (gdb) continue
> >> +
> >> +The ``continue`` command will run the executable.
> >> +
> >> +**Note**: Add ``set scheduler-locking on`` in GDB if you have any
> issues
> >> +running the examples.
> >> --
> >> 2.17.1
> >>
> > _______________________________________________
> > devel mailing list
> > devel at rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200213/4f27721c/attachment.html>


More information about the devel mailing list