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

Christian Mauderer list at c-mauderer.de
Sat Feb 15 19:08:46 UTC 2020


Hello Niteesh,

thanks. I pushed it:
https://git.rtems.org/rtems-docs/commit/?id=5763454b307afae6f5feb7e6d3d3d780f05f83ab

Best regards

Christian

On 15/02/2020 15:20, G. S. Niteesh wrote:
> Another remainder.
> Can someone please push this?
> 
> Thanks,
> Niteesh
> 
> On Thu, Feb 13, 2020 at 11:19 PM G. S. Niteesh <gsnb.gn at gmail.com
> <mailto:gsnb.gn at gmail.com>> wrote:
> 
>     On Thu, Feb 13, 2020 at 11:16 PM Alan Cudmore
>     <alan.cudmore at gmail.com <mailto: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 <mailto:gsnb.gn at gmail.com>> wrote:
>         >
>         > On Thu, Feb 13, 2020 at 10:57 PM Alan Cudmore
>         <alan.cudmore at gmail.com <mailto: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 <mailto:gsnb.gn at gmail.com>> wrote:
>         >> >
>         >> > On Thu, Feb 13, 2020 at 10:40 PM Alan Cudmore
>         <alan.cudmore at gmail.com <mailto: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 <mailto: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 <mailto: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 <mailto:devel at rtems.org>
>         >> >> > http://lists.rtems.org/mailman/listinfo/devel
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
> 


More information about the devel mailing list