= Running Barrelfish on the SCC = {{{#!wiki caution '''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 '''[[attachment:bin2obj|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 {{{ # ./bootscc.sh }}} 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''' {{{ # ./watchall.sh }}} === Errors === You will have to [[BarrelFish/SCC#SCCTraining|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. == UART == 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.