On Thu, Feb 13, 2020 at 10:40 PM Alan Cudmore <alan.cudm...@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...@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...@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@rtems.org > > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel