Wiki

Clone wiki

roseline / Chronos

Chronos

Overview

Existing platforms are built with a static network connecting microprocessor, radio, clock system, and other components.This static configuration prevents researchers from experimentally validating the trade-offs between the way that clocks are conditioned and distributed, and the performance of the embedded system. In particular, such design decisions have major impact on time synchronization. An adaptable hardware platform is developed in order to experiment with and develop new wireless time synchronization technologies. With this platform, researchers can dynamically reconfigure the hardware to perform experiments ranging from low power to high precision time synchronization. In addition, the hardware allows researchers to directly specify Quality-of-Time (QoT) through software via an FPGA-synthesized Roseline QoT module. This module is the interface between the Linux kernel and the Roseline QoT module which allows 1) control of the frequency via external conditioning circuits, and 2) tuning of delays and jitter in the clock system.

Architecture

chronos_arch.png

Chronos MKII

chronos.png

Update log

  • MKI - Initial implementation
  • MKII - Extra compatible BBB IOs

Requirements

Additional Hardware

Software

Getting Libero working on Ubuntu is non-trivial. First, download these files:

You will also need to request a free license from this website, which is bound to your Ethernet MAC. It will be emailed to you within 45 minutes. You'll need to edit a few fields in the license file, such as the hostname and path to the license server binaries, before you use it. http://www.microsemi.com/products/fpga-soc/design-resources/licensing

The Libero release includes some udev_install script that does a locate lsusb to try and find the binary. this doesn't work if you have a rootfs lurking around with a cross-compiled lsusb version. I'd recommend skipping this script and just creating the file /etc/udev/rules.d/90-microsemi.rules with the following content:

SUBSYSTEM=="usb", ATTRS{idProduct}=="2004", ATTRS{idVendor}=="1514", MODE="0660", GROUP="plugdev", SYMLINK+="FlashPro3"
SUBSYSTEM=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", MODE="0660", GROUP="plugdev", SYMLINK+="FTDI232"

Here are some scripts that may help you (you will need to change the paths)

Run this before installing...

#!/bin/bash
sudo apt-get install libmotif3 libmotif-dev libmotif4:i386 nspluginwrapper lib32z1 libc6-i386 rpcbind xfonts-100dpi xfonts-75dpi ksh lsb
echo 'OPTIONS="-w -i"' | sudo tee /etc/default/rpcbind
sudo service rpcbind restart
sudo mkdir /usr/tmp
sudo chmod uga+rwx /usr/tmp
echo "*SystemFontSpec:-adobe-utopia-bold-i-normal--0-0-0-0-p-0-adobe-standard" > font_tmp.txt
echo "*SystemFont:-adobe-utopia-bold-i-normal--0-0-0-0-p-0-adobe-standard" >> font_tmp.txt
xrdb -merge font_tmp.txt
rm font_tmp.txt

Use this script to run Libero SOC:

#!/bin/bash
export LOCALE=C
export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/
export LIBERO_INSTALLED_DIR=/home/asymingt/Applications/microsemi/libero
export LIBERO_LICENSE_DIR=/home/asymingt/Applications/microsemi/licensing
PATH=$LIBERO_INSTALLED_DIR/Libero/bin:$PATH;
PATH=$LIBERO_INSTALLED_DIR/Synplify/bin:$PATH;
PATH=$LIBERO_INSTALLED_DIR/Model/modeltech/linuxacoem:$PATH;
export PATH
export LM_LICENSE_FILE=1702@localhost
export SNPSLMD_LICENSE_FILE=1702@localhost
$LIBERO_LICENSE_DIR/lmgrd -c $LIBERO_LICENSE_DIR/License.dat -l $LIBERO_LICENSE_DIR/License.log
libero

Use this script to run FlashPro Express:

#!/bin/bash
export LOCALE=C
export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/
export FLASHPRO_DIR=/home/asymingt/Applications/microsemi/flashpro
PATH=$FLASHPRO_DIR/FlashPro/bin:$PATH;
export PATH
FPExpress

Programming the FPGA with Example

Plug in the Chronos

chronos_pwron.png

PWR - The device is powered on with the external power.

CHRG - The device is charging the battery.

Plug in the programmer

chronos_fpga_programming.png

Download the example “Chronos_CC2520” project from Downloads.

Unzip the archive. Start up Libero SoC and open the example project (Project - Open Project - <Name of the Project>.prjx - Open)

Program the device

libero_program_device.PNG

Under Design Flow (Left panel) - Program Design - Program Device

Custom FPGA

This is a good tutorial for Libero SOC with SmartFusion. However, the settings will be different for Chronos (see below).

libero_chronos_settings.PNG

Create new project

libero_new_proj.PNG

Create new SmartDesign

libero_new_sd.PNG

Note: Make sure your main module is root! Under design hierarchy - right click on your main module - set as root.

Example: CC1200 Module

Download the FPGA for CC1200 Module. Boot up the QoT Stack.

Initialize cc1200 LKM network interface

./cc1200_init.sh wlan0 [device number]

Run example program

./cc1200 wlan0 [device number] [1 for tx and 0 for rx]

Additional Chronos Documentations

Under source/chronos/

Updated