Skip to main content

[RTEMS/QEMU] boot RTEMS on ARM QEMU

Thanks for Heshame Almatary.
Now I am able to run RTEMS on QEMU-arm.

To prevent from any wrong setup, he recommended me to adopt RTEMS Source Builder(RSB) to build up the qemu and run with following commands:
"qemu-system-arm -no-reboot -net none -nographic -smp 2 -icount
auto -M realview-pbx-a9 -m 256M -kernel ticker.exe"  without debugger
"qemu-system-arm -S -s -no-reboot -net none -nographic -smp 2 -icount
auto -M realview-pbx-a9 -m 256M -kernel ticker.exe" with GDB

I mimicked this tutorial and build up my target.
[0] http://heshamelmatary.blogspot.de/2015/02/howto-5-run-rtems-on-qemu.html
[1] http://heshamelmatary.blogspot.co.uk/2015/02/howto-4-run-rtems-on-or1ksim.html

I remove some options, i.e., smp, from his recommendation and I get the result:
---dump---
./qemu-system-arm -no-reboot -nographic -M realview-pbx-a9 -m 256M -kernel
/home/khchen/development/build-rtems/arm-rtems4.11/
c/realview_pbx_a9_qemu/testsuites/samples/ticker/ticker.exe
*** BEGIN OF TEST CLOCK TICK ***
TA1  - rtems_clock_get_tod - 09:00:00   12/31/1988
TA2  - rtems_clock_get_tod - 09:00:00   12/31/1988
TA3  - rtems_clock_get_tod - 09:00:00   12/31/1988
TA1  - rtems_clock_get_tod - 09:00:05   12/31/1988
TA2  - rtems_clock_get_tod - 09:00:10   12/31/1988
TA1  - rtems_clock_get_tod - 09:00:10   12/31/1988
TA3  - rtems_clock_get_tod - 09:00:15   12/31/1988
TA1  - rtems_clock_get_tod - 09:00:15   12/31/1988
TA2  - rtems_clock_get_tod - 09:00:20   12/31/1988
TA1  - rtems_clock_get_tod - 09:00:20   12/31/1988
TA1  - rtems_clock_get_tod - 09:00:25   12/31/1988
TA3  - rtems_clock_get_tod - 09:00:30   12/31/1988
TA1  - rtems_clock_get_tod - 09:00:30   12/31/1988
TA2  - rtems_clock_get_tod - 09:00:30   12/31/1988
*** END OF TEST CLOCK TICK ***
Hint: the building process of qemu with RSB will be longer since it build up all the supported target qemu for you.

khchen@khchen-All-Series:~/development/rtems/4.11/bin$ ./qemu-system-arm -no-reboot -net none -nographic -icount auto -M realview-pbx-a9 -m 256M -kernel /home/khchen/development/build-rtems/arm-rtems4.11/c/realview_pbx_a9_qemu/testsuites/samples/ticker/ticker.exe

./qemu-system-arm -no-reboot -nographic -M realview-pbx-a9 -m 256M -kernel /home/khchen/development/build-rtems/arm-rtems4.11/c/realview_pbx_a9_qemu/testsuites/samples/fileio/fileio.exe
The option icount auto will let QEMU become stuck.

arm-rtems4.11-gdb is able to debug the qemu with the default port 1234.
target remote :1234 and so on.

PATH=$HOME/development/rtems/4.11/bin:$PATH RTEMS_MAKEFILE_PATH=$HOME/development/rtems/4.11/arm-rtems4.11/raspberrypi

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...

[Gem5] Full system Simulation with Official Kernel

I follow the youtube provided by Gem5 to get the inspiration. (http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode) I download the file here: http://www.gem5.org/dist/current/arm/ with http://www.gem5.org/dist/current/arm/aarch-system-20170616.tar.xz Then Set up M5_PATH as the place I extract the files: "/home/khchen/full_system_images/" If the setting is correct, assigning the disk-image will finish the rest of setting for dtb and kernel specifications. So far I can only use this img (aarch32-ubuntu-natty-headless.img) as my disk-image to run up to the login interface of the ubuntu: build/ARM/gem5.opt configs/example/fs.py --disk-image=/home/khchen/full_system_images/disks/aarch32-ubuntu-natty-headless.img With the other imgs, for example like "aarch64-ubuntu-trusty-headless.img", I think the kernel and the dtb should be given manually, because it will automatically load something with aarch32 prefix which doesn't make sense: info: kernel ...

[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