This post describes how to build, configure RTEMS to run on or1ksim emulator. Installing the tool-chain is a prerequisite before applying the steps in this post; if you have not already installed them, check out the steps here and do it. Once the tool-chain are installed and seen in the executable path, you may proceed with the following steps.
This is temporary, by the end of the project, all the code at my repo should be upstreamed to RTEMS.
I have created a branch for the project to help me with arranging and generating patches against master; meanwhile, keep master branch synchronized with remote.
You should get hello and ticker applications in their executable form. Other applications/tests will fail to compile because of other features/implementations that are not supported yet.
1- First you should have an or1ksim configuration script suitable for or1ksim BSP. This is the sim.cfg file I use at this stage of the project. It should be placed at your home directory. Note that as long as more features like: FP, cache manager, MMU manager are added, this file has to be changed to simulate these functionalists on or1ksim.
2- Run hello application on or1ksim.
The configuration file uses RSP (remote protocol) to enable GDB to connect to or1ksim. So, when running or1ksim, it reads configuration script, loads the program into the proper addresses, and waits for GDB to connect.
You should get something similar to the following picture:
3- Run GDB and connect to or1ksim
From another terminal run GDB and connect to or1ksim
From gdb, attach it to or1ksim
UART should emit the string output to or1ksim (and any other channel you provided in configuration script)
1- Set up the work space.
$ mkdir ~/rtems-dev
$ cd ~/rtems-dev
2- Clone my RTEMS project repo
This is temporary, by the end of the project, all the code at my repo should be upstreamed to RTEMS.
$ git clone git@github.com:heshamelmatary/rtems-gsoc2014.git
$ cd rtems-gsoc2014
3- Switch to or1k branch
I have created a branch for the project to help me with arranging and generating patches against master; meanwhile, keep master branch synchronized with remote.
$ git checkout or1k
4- bootstrap
$ bootstrap -p
$ bootstrap
5- Configuring and building
$ cd ../
$ mkdir b-rtems
$ cd b-rtems
$ ../rtems-gsoc2014/configure --target=or1k-rtems4.11 --enable-rtemsbsp=or1k_or1ksim --disable-posix --disable-itron --disable-networking --disable-smp
You should get hello and ticker applications in their executable form. Other applications/tests will fail to compile because of other features/implementations that are not supported yet.
Running and debugging hello.exe
1- First you should have an or1ksim configuration script suitable for or1ksim BSP. This is the sim.cfg file I use at this stage of the project. It should be placed at your home directory. Note that as long as more features like: FP, cache manager, MMU manager are added, this file has to be changed to simulate these functionalists on or1ksim.
2- Run hello application on or1ksim.
The configuration file uses RSP (remote protocol) to enable GDB to connect to or1ksim. So, when running or1ksim, it reads configuration script, loads the program into the proper addresses, and waits for GDB to connect.
$ cd $HOME/rtems-dev/b-rtems/or1k-rtems4.11/c/or1k_or1ksim/testsuites/samples/hello/
$ or32-elf-sim -f ~/sim.cfg hello.exe
You should get something similar to the following picture:
3- Run GDB and connect to or1ksim
From another terminal run GDB and connect to or1ksim
$ or1k-rtems4.11-gdb $HOME/rtems-dev/b-rtems/or1k-rtems4.11/c/or1k_or1ksim/testsuites/samples/hello/hello.exe
From gdb, attach it to or1ksim
(gdb) target remote :50001
(gdb) continue
UART should emit the string output to or1ksim (and any other channel you provided in configuration script)