Running Barrelfish on the SCC
Support for the SCC has been removed from Barrelfish.
You have to setup the host PC with sccKit yourself. We use version 1.4.0.
Compiling for SCC architecture
$ ../barrelfish/hake/hake.sh -s ../barrelfish -a scc $ make
Once compilation is done successfully, copy the menu.lst.scc to build directory. You will also need bin2obj in your path for this to work. Do not install the bin2obj program from the repository of your distribution, that is NOT the same program!
Currently the menu.lst.scc is not automatically copied to the build directory. So you will have to copy it manually.
$ cp ../barrelfish/hake/menu.lst.scc .
[Note: You might also want to set support_qemu_networking = True in hake/Config.hs, to make network work using less memory]
transferring binaries to SCC Host PC
The Makefile target scc is provided to build the SCC image for Barrelfish. The directory tools/scc contains important files for the host PC to aid executing Barrelfish on the SCC. Copy all these files to a convenient location on the host PC. Copy the Barrelfish image barrelfish0.obj to that directory also and execute bootscc.sh to boot Barrelfish on the SCC and see core 0's output.
In our setup, tomme1.in.barrelfish.org is the SCC host PC. Following command will copy the required files into SCC host PC
$ make scc
The above command copies the file barrelfish0.obj at location /home/user/barrelfish0.obj on SCC host PC, over-riding any old content.
Booting SCC from Host PC
Login on host PC by using SSH command.
$ ssh user@tomme1
Become root on SCC Host PC, and setup environment for SCC.
$ sudo su - # cd /home/user # eval `/opt/sccKit/1.4.0/setup`
Now boot barrelfish with following command
You can exit this command anytime by pressing CTRL+C and then view the output produced by various cores by following command. Even this command can be stopped by pressing CTRL+C
You will have to train the SCC again if you get the following error message:
$ ./bootscc.sh INFO: Welcome to sccReset 1.4.0 (build date Mar 21 2011 - 18:40:25)... INFO: Applying global software reset to SCC (cores & CRB registers)... ERROR: Timeout while waiting for Read request answer (CMD=0x7) with TID 0! Cancelling request... ERROR: Unable to apply reset... Please perform platform (re-)initialization! Successfully created memory images... Successfully created LUT configuration... INFO: Welcome to sccBoot 1.4.0 (build date Mar 21 2011 - 18:39:01)... INFO: Pulling reset of all cores... ERROR: Timeout while waiting for Read request answer (CMD=0x7) with TID 0! Cancelling request... INFO: Welcome to sccReset 1.4.0 (build date Mar 21 2011 - 18:40:25)... ERROR: Timeout while waiting for Read request answer (CMD=0x7) with TID 0! Cancelling request...
A complete reset as described later does not seem to be necessary.
Barrelfish relies on a UART-enhanced crbif device driver from http://www.dcl.hpi.uni-potsdam.de/research/scc/serial.htm. This driver provides 4 UARTs for each core on the SCC (192 UARTs in total). These can be accessed on the MCPC through the /dev/crbif0rb0*ttyS* device files. On the SCC, the UARTs are mapped to the PC standard IO ranges for COM ports. The watchall.sh script also uses these UARTs.