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:
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
The following commands are implicitly pointing to the bsp and the options I use for uniprocessor.
After this, follow the standard way to compile the source tree
From Alan's Tech Notes and official guide, to have a totally new environment for RTEMS:
- 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):
- 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
- Under the source-builder folder, type the following command:
to check if the environment and essential tools are prepared properly.$ ../source-builder/sb-check
- 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
- It will spend quite a long time, just leave the terminal there...
$ 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
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.gitTo build up all the auto generated makefile and configuration
./bootstrapDo 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.12For 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 installIf 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.exeFor SMP:
qemu-system-arm -no-reboot -nographic -M realview-pbx-a9 -m 256M -kernel \ hello.exe -smp 4For debugging, please refer to http://wiki.osdev.org/Kernel_Debugging
Comments
Post a Comment