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

G. S. Niteesh gsnb.gn at gmail.com
Sat Feb 15 14:20:57 UTC 2020


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> wrote:

> 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/20200215/dab8ef34/attachment-0001.html>


More information about the devel mailing list