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

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


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

> "set scheduler-locking on" in GDB works! I was able to run RPI2 hello.exe
>
> So I consider your instructions ready to go in the repo.
> More Pi 2 SMP debugging when I get the time..
> Thanks!
> Alan
>
> Great. But just a caution, QEMU support raspberry pi is very
much incomplete
so any exception or problem may be from QEMU side and not RTEMS. So if any
test goes wrong, try running it on a real board.

Thanks,
Niteesh

> On Thu, Feb 13, 2020 at 12:30 PM G. S. Niteesh <gsnb.gn at gmail.com> wrote:
> >
> > On Thu, Feb 13, 2020 at 10:57 PM Alan Cudmore <alan.cudmore at gmail.com>
> wrote:
> >>
> >> I get exceptions when trying to run hello.exe.
> >> I'm using qemu-system-arm v 2.11.1 from ubuntu. Should I try using the
> >> one built by RSB?
> >
> > No this should be fine. Can you post a screenshot of the output?
> >>
> >> I was trying to get this setup to try RPI 2 SMP in QEMU. I may want to
> >> get the latest repo and do a clean build to try this again.
> >
> > SMP doesn't work well with QEMU. Did you try set scheduler-locking on in
> GDB?
> > Running the executables directly in QEMU doesn't work.
> >>
> >> Thanks,
> >> Alan
> >>
> >> On Thu, Feb 13, 2020 at 12:12 PM G. S. Niteesh <gsnb.gn at gmail.com>
> wrote:
> >> >
> >> > 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/9d335266/attachment-0001.html>


More information about the devel mailing list