DCS FAQ

From ift
Jump to: navigation, search

Detector Control System

General DCS board related questions

What species of Linux is running on the DCS board?

The Linux on the DCS board is a compilation of several projects suited for embedded systems

I cant find common UNIX tools like diff on the DCS board

The version of busybox included into the linux during the early days of the DCS board doesn't support commands like od, cmp and diff. An additional package contains those three programs. To install them

  • download the package dcsboard-addon
  • unzip it to the root (/) directory (the archive contains all necessary sub folders)
  • e.g. on the DCS board do
wget -P  /tmp/  http://web.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz
tar xzvf /tmp/dcsboard-addon-0.1.tar.gz -C /

Can I compile programs on the DCS board?

No, the Linux on the DCS board is a light-weight operating system which just provides the environment to run programs. Of course, this could be a compiler, but this doesn't make sense. One uses a cross compiler on another system to build the executables.

What is a cross compiler?

Cross compiling means to compile and build on a build system which is different from the system the program has to run on. Each cpu architecture has its own instruction set, binary format aso. The compiler translates the program source code into machine code for a certain architecture. Most embedded systems (like the one on the DCS board) don't provide fully functional operating systems. The use of a cross compiler is a convenient tool to create executables on another workstation.

The Arm Linux on the DCS board uses gcc 3.3.1 configured for arm-uclibc.

How do I install a cross compiler and use it?

The Arm Linux on the DCS board is compiled with gcc 3.3.1 and uses uclibc as standard library. This page gives just a short recipe for the installation. For further details look at the DCS board Arm Linux page. To install the compiler you have two possibilities:

  • The precompiled package
    There is a precompiled package configured for uclibc and /usr/local/arm/3.3.1. The compiler has to be exactly at that place.
  1. Download the package.
  2. Create a folder /usr/local/arm on your build machine or ask your system administrator to do it for you and give you write access.
  3. Unpack the package
    tar xvjkf arm-uclibc-3.3.1-toolchain.tar.bz2 -C /usr/local/arm
  4. Install the gcc from scratch and configure it for arm linux. There is a helper script on the DCS board Arm Linux page.

In both cases you must add the compilers's binary directory to your search path. For the first it is /usr/local/arm/3.3.1/bin, e.g.

# c-shell
setenv PATH ${PATH}:/usr/local/arm/3.3.1/bin
# or
# bash
export PATH=${PATH}:/usr/local/arm/3.3.1/bin

How can I copy the executable to the DCS board?

scp <filename> root@<address of the board>:/tmp

This will place the file in the /tmp directory of the board. The better solution is to mount a network directory. Note that the /tmp directory on the board is erased each time it boots since it is not located in the flash ram.

Where are all the files from the /tmp directory after reboot

You should not place any files you want to keep in the /tmp folder since this is areased after reboot.

How do I mount a network directory on the DCS board?

This is two-fold. An extern machine has to provide the directory and the DCS board has to mount it.

  1. The server, can be any Linux machine the board has access to
    Usually you need root access to configure the server.
    • nfs deamon has to run on the host machine
      • start nfs service: /sbin/service nfs start
      • stop nfs service: /sbin/service nfs stop
      • status information: /sbin/service nfs status
    • configure the allowed export directories in /etc/exports, e.g. with a line like
      /nfs_export/dcscard dcs0034(rw)
      the directory '/nfs_export/dcscard' can be mounted by the machine 'dcs0034' in read-write mode
    • finally after altering /etc/exports you might have to run exportfs -a in order to update the list of NFS exported file systems
  2. The client, i.e. the DCS board
    • create a directory /mnt if it does not exist
    • use the command /usr/local/sbin/nfsmount to mount the network directory, e.g.
      /usr/local/sbin/nfsmount <host>:/nfs_export/dcscard /mnt rw
    • Of course you can name the mountpoint on the DCS board whatever you want

I can not write to my network directory

check if

  • the server allows write access (/etc/exportfs)
  • the DCS board mounts the network disc in read-write mode
  • the permissions for the directory on the server allow write access, keep in mind that the applications on the DCS board are running under a different user than usually you are on the host machine, and thus 'others' have to have write access

How can I connect to the DCS board from a Windows computer by using the serial line?

First of all you need to have the proper serial line connector cable Schematics. In one side of the connector there is a small red dot. This should be connected to the connector on the short egde next to the ttc-fiber connector. Connect it to a free com-port on your pc. In windows use 'hyperterminal' with the following settings:

Baud Rate:    57600
Data Bits:    8
Parity:       None
Stop Bits:    1
Flow Control: None

InterComLayer related questions

What is the InterComLayer?

Where do I have to install/run the InterComLayer?

What tools can I use to monitor the DIM framework?

FeeServer related questions

What is a FeeServer?

What is the ControlEngine?

rcu shell related questions

The sections will be filled as the questions come in