Wiki
Clone wikiroseline / 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 MKII
Update log
- MKI - Initial implementation
- MKII - Extra compatible BBB IOs
Requirements
Additional Hardware
- Micro-USB Cable
- FlashPro Programmer
Software
Getting Libero working on Ubuntu is non-trivial. First, download these files:
- Libero SOC for Linux - http://www.microsemi.com/products/fpga-soc/design-resources/design-software/libero-soc#downloads
- Linux License Server Daemon - http://www.microsemi.com/products/fpga-soc/design-resources/licensing#downloads
- FlashPro Express - http://soc.microsemi.com/download/reg/download.aspx?p=f%3dFlashProv11_6_LIN
- Example firmware for the Igloo Nano board - http://www.microsemi.com/products/fpga-soc/design-resources/dev-kits/igloo/igloo-nano-starter-kit#documents
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
PWR - The device is powered on with the external power.
CHRG - The device is charging the battery.
Plug in the programmer
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
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).
Create new project
Create new SmartDesign
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