Skip to main content

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 ~/.bashrc:
export PATH=$PATH:~/repository/build/bin
source ~/.bashrc
Now you can checkout RTEMS source tree:
git clone git://git.rtems.org/rtems.git
go to rtems folder:
./bootstrap
Up to here, now RTEMS source tree is ready to build an executable. Here I only demonstrate the configuration for qemu with SMP.
Create a folder to store your built files. For example:
mkdir rtems-build
Please don't do this at the same place of source tree. It may potentially corrupts RTEMS source tree.
Then you can configure the building process as follows (you can remove --enable-debug in case you don't need to use gdb):  
../rtems/configure --target=arm-rtems6 --enable-rtemsbsp=realview_pbx_a9_qemu --enable-smp --enable-tests=yes --enable-debug --prefix=$HOME/repository/rtems-build/
make install -j 4
Now you should be able to run the qemu with the executable (for example generated in testsuite/smptests/.):
qemu-system-arm -no-reboot -nographic -M realview-pbx-a9 -m 256M -kernel <executable> -smp 4

If you are going to use gdb to debug, maybe refer to here 
https://wiki.osdev.org/Kernel_Debugging or https://rtemswithrichi.wordpress.com/debug-with-gdb-and-qemu-on-arm-realview/
My personal experience is as follows:
  • At first, run up qemu:
qemu-system-arm -net none -nographic -M realview-pbx-a9 -m 256M -kernel  <executable> -smp 4 -no-reboot -s -S
  • Read symbols from the executable:
arm-rtems6-gdb  <executable> 
  • Then load the symbols
  • Now you can set breakpoint at the place you like based on the name of function or the line of the source code.
  • use continue to run the executable till your breakpoints.
  • You can check the registers anytime you want:
info registers

Comments

Popular posts from this blog

[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

[Ubuntu/Windows] nxtOSEK / ticking block of NXT

In Windows 7: http://www.reddit.com/r/FTC/comments/1vvwq9/for_those_who_have_or_have_had_a_clicking_nxt/ I strongly recommend you to read this article, which really saves my life / 300 Euro! The critical point is that Windows 7 will automatically recognize the usb plug-in as bossa program, which is not available to excess as a NXT. All you have to do is to break down your internet and follow the steps in the article. [Quote] Plug in clicking nxt to computer Disable internet connection(very important) Open Device manager Under ports you should see Bossa program port, right click on it uninstall driver, on popup make sure to select delete from system (Don't forget to check the box that deleting all the installed driver) after uninstalling driver plug nxt into another port Because bossa driver is missing it should register as nxt brick Now you can reload Robotc firmware (with offical NXT software or NxTTool whatever) After firware installed reconnect internet Option ...