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 rsbchange 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-armThis 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/binNow you can checkout RTEMS source tree:
source ~/.bashrc
git clone git://git.rtems.org/rtems.gitgo to rtems folder:
./bootstrapUp 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-buildPlease 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
Post a Comment