Skip to main content

[RTEMS/QEMU] Emulation with RTEMS on Qemu (realview_pbx_a9_qemu bsp)

Although I have a similar article last year and play around with Raspberry Pi before, now I pick up this QEMU emulation with RTEMS again for my research. Thanks for anonymous people who give me suggestions. Again I wrote down the complete flow again to backup/summarize the information I need here. Hopefully it could also aid you. Enjoy it!

From Alan's Tech Notes and official guide, to have a totally new environment for RTEMS:
  1. I strongly recommend to use RTEMS source builder so-called RSB to prepare all the essential stuffs. Before digging into the details, Ubuntu prerequisties should be somehow in your system. (refer to Alan's note):
  2. $ sudo apt-get install build-essential
    $ sudo apt-get install git
    $ sudo apt-get install python-dev
    $ sudo apt-get build-dep binutils gcc g++ gdb unzip git 
  3. First make a specific folder for the source code of rtems-source-builder:
    $ cd
    $ mkdir -p development/rtems/rsb
    $ cd development/rtems/rsb
    $ git clone git://git.rtems.org/rtems-source-builder.git
    $ cd rtems-source-builder
    $ cd rtems 
  4. Under the source-builder folder, type the following command:
    $ ../source-builder/sb-check
    to check if the environment and essential tools are prepared properly.
  5. Then (Please note, now the latest version is 4.12)
    $ ../source-builder/sb-set-builder \
             --log=build-log.txt \
             --prefix=$HOME/development/rtems/compiler/4.12 \
              4.12/rtems-arm
  6. It will spend quite a long time, just leave the terminal there...
After all, the environment involved cross-compiler and the other toolchains are all there.
Don't forget to add the path in your .profile or .bashrc:

PATH=[whatever place that has RTEMS toolchain]:$PATH

------------------ Now talk about QEMU:

In fact I planned to play with Gem5 before, however it still doesn't work yet.
Instead, QEMU is still a viable solution to us to demonstrate RTEMS's features.
To know how to compile the example in RTEMS source code, please refer to my previous article.

At first, download the source tree from RTEMS git
git clone https://github.com/RTEMS/rtems.git
To build up all the auto generated makefile and configuration
./bootstrap
Do the configuration:
The following commands are implicitly pointing to the bsp and the options I use for uniprocessor.
../rtems-gpio/configure --target=arm-rtems4.12 \
 --enable-rtemsbsp=realview_pbx_a9_qemu \
 --enable-tests=samples --enable-networking \
 --enable-posix --prefix=$HOME/development/rtems/4.12
For SMP (including all the testsuites):
../rtems-smp/configure --target=arm-rtems4.12 \
--enable-rtemsbsp=realview_pbx_a9_qemu_smp --enable-smp \
--enable-tests=yes --prefix=$HOME/development/rtems/compiler/4.12

After this, follow the standard way to compile the source tree
make install
If we consider to run helloworld.exe kernel directly on qemu (assume you are now in the build tree/helloworld), type the following commands:
qemu-system-arm -no-reboot -nographic -M realview-pbx-a9 -m 256M -kernel \
hello.exe 
For SMP:
qemu-system-arm -no-reboot -nographic -M realview-pbx-a9 -m 256M -kernel \
hello.exe -smp 4
For debugging, please refer to http://wiki.osdev.org/Kernel_Debugging

Comments

Popular posts from this blog

RSB+RTEMS 5/6 with QEMU-SMP (ARM realview_pbx_a9_qemu as example)

Since I got a request regarding this blog  written in 2016, summarizing again the complete flow with the latest version of RTEMS could be a good idea. Prepare a suitable workspace according to the adopted operating system on your host ( https://docs.rtems.org/branches/master/user/hosts/index.html ):  sudo apt-get build-dep build-essential gcc-defaults g++ gdb git unzip pax bison flex texinfo unzip python3-dev libpython-dev libncurses5-dev zlib1g-dev Checkout RSB and build: git clone git://git.rtems.org/rtems-source-builder.git rsb change directory to rsb/rtems/ and type ../source-builder/sb-set-builder --prefix=<the path you like to store the built toolchains> <the name of bsp> For example, to use QEMU, I need toolchains for ARM, so: ../source-builder/sb-set-builder --prefix=/home/kh.chen/respository/build/. 6/rtems-arm This will take a while. Please ensure your connection is reliable. Add the built folder into your PATH. For example, you can add one line in ~/.bas...

[ubuntu] Removing the instance/package which is not fully installed from apt-get

When I'm installing g77-3.4 for pgplot, I trivially use dkpg to install it. However, g77-3.4-doc is not able to fully installed. And I stuck for this kind of error due to the broken packages (refer to here ): dpkg: error processing realplayer (--configure/--purge/--remove): (Whatever messages) Errors were encountered while processing: g77-3.4-doc cd /var/lib/dpkg/info sudo rm g77-3.4-doc* sudo dpkg --remove --force-remove-reinstreq g77-3.4-doc Hmm, now apt-get works well again. https://www.youtube.com/watch?v=S9HJ-iAzf3k

[RASP] VirtualBox Raspberry Pi debuging

This article is for the perspective that planning to debug Raspberry Pi connected to (Guest) Ubuntu Virtualbox with USBtoUART and Screen/terminal. There are two important issues that you may face: You cannot detect USB devices: You probably have a permission issue on your Virtual box. Add your user ID to group vboxusers with this command: sudo usermod -a -G vboxusers $USER , log off, log on and try again. http://askubuntu.com/questions/481693/virtualbox-usb-add-device-filter-does-not-work-under-14-04 You cannot listen the ttyUSB0: Your permission of (guest) account should be feasible to the ttyUSB0: sudo gedit /etc/group goto line... dialout:x:20: add your "username" dialout:x:20:username http://askubuntu.com/questions/40959/how-do-i-connect-to-tty-com-dev-ttyusb0 After that, then you can detect the plug-in usb on-the-fly or before open the virtual machine. Then, screen /dev/ttyUSB0 115200 (DON"T FORGET TO INSTALL VIRTUALBOX GUEST ADDITION PAC...