...
 
Commits (20)
......@@ -23,7 +23,7 @@ PDF=$(addprefix pdf/, $(SRC:.md=.pdf))
TEX=$(SRC:.md=.tex)
## Pandoc arguments
OPTIONS=-s --from markdown+yaml_metadata_block --toc --number-sections --smart
OPTIONS?=-s --from markdown+yaml_metadata_block --toc --number-sections --smart
TEMPLATE=pandoc.latex
......@@ -42,6 +42,9 @@ DATE = $(shell date +"%d %b. %Y")
all: $(PDF)
tex: $(TEX)
pdf: $(PDF)
verbose:
make OPTIONS="-s --from markdown+yaml_metadata_block --toc --number-sections --smart --verbose" -C . pdf
## Special targets to create directory
DIR_%:
......
......@@ -90,6 +90,8 @@ $if(listings)$
\lstset{%
basicstyle=\small\ttfamily,
breaklines=true,
keepspaces=true,
showstringspaces=false,
fancyvrb=true,
tabsize=2,
columns=fullflexible,
......
......@@ -68,7 +68,9 @@ Revision table
2.0 15/05/2014 Benoit Rat\ Updating for v2.0 release
[Seven Solutions]
3.0 10/10/2019 Francesco Colella\ Updating for 3.0 reléase
3.0 06/11/2019 Manuel Castilla\ Updating for v3.0 release
Benoit Rat\
Francesco Colella\
[Seven Solutions]
------------------------------------------------------------------------
......@@ -146,19 +148,19 @@ conceived to fulfill the following goals:\
Time Precision
: The [WR] technology provides a common clock for physical layer in the entire network, allowing synchronization at sub-nanosecond accuracy with picoseconds precision.
: The [WR] technology provides a common clock for physical layer in the entire network, allowing synchronization at sub-nanosecond accuracy with picoseconds precision.
Scalability
: The [WR] network is designed to be highly scalable up to thousands of nodes. It also intends to be as modular as possible and compatible with non-[WR] devices. Finally, all products related to this technology available at the Open Hardware Repository ([OHWR]) represent “open developments”, i.e. all the hardware designs, firmware and software and documentation are fully available. This shall facilitate the new incremental developments and customization of the available designs and products.
: The [WR] network is designed to be highly scalable up to thousands of nodes. It also intends to be as modular as possible and compatible with non-[WR] standard Ethernet devices. Finally, all products related to this technology available at the Open Hardware Repository ([OHWR]) represent “open developments”, i.e. all the hardware designs, firmware and software and documentation are fully available. This shall facilitate the new incremental developments and customization of the available designs and products.
Distance Range
: Taking into account the size and ranges of the majority of industrial and scientific facilities, the [WR] network specifications have been chosen to support distance ranges of 10 km between nodes using fiber cables.\
: Taking into account the size and ranges of the majority of industrial and scientific facilities, the [WR] network specifications have been chosen to support distance ranges of 10 km between [WR] network elements(nodes or switches) using fiber cables.
The **Starting Kit** has been designed to test and check if the White
The **WR Starting Kit** has been designed to test and check if the White
Rabbit technology meets your requirements. It shall also facilitate the
understanding on the technology capabilities and possibilities.
WR starting kit can also be used to evaluate what can be done with it
WR Starting kit can also be used to evaluate what can be done with it
and how to integrate it on your own project.
You can find more information on other components and use cases on:
......@@ -167,10 +169,10 @@ You can find more information on other components and use cases on:
* The official wiki page <http://www.ohwr.org/projects/white-rabbit/wiki>
About the Starting Kit
About the WR Starting Kit
----------------------------------
This starting kit uses two nodes, each one composed of a [SPEC] and one
This WR Starting Kit uses two nodes, each one composed of a [SPEC] and one
[FMC-DIO] card.
A node makes basic operations such as input time-stamping or programmable output pulse generation.
......@@ -179,13 +181,13 @@ interface card implementing the White Rabbit technology functionalities.
Network packages with accurate time-stamping information are generated/timestamped at
the hardware level to achieve the highest accuracy.
It is based on different projects:
This WR Starting Kit is based on different projects:
* [spec-sw], driver to communicate to the [SPEC] card through PCIe. It
also includes a set of tools to experiments.
* [wr-nic], gateware/software that includes the NIC capabilities.
* [wr-nic], gateware/software that includes the Network Interface Card(NIC) capabilities.
* [fmc-dio-5chttla], gateware/software that includes the support for FMC-DIO 5ch TTL
* [wrpc-sw], white rabbit PTP firmware for the synchronization.
* [wrpc-sw], White Rabbit PTP firmware for the synchronization.
About this document
......@@ -218,8 +220,7 @@ In this section, we resume the main changes that happens at each release of the
### wr-starting-kit-v3.0
This new release has been focused to update all different modules used by the starting kit but does not provide
specific update for the starting kit.
This release has been focused to update all different modules constituting WR Starting Kit to use their newer release versions. This release does not provide specific updates to the features or functionalities of the WR Starting Kit.
* Update spec-sw with new VIC core to support kernels (v4.15-v4.18)
* Use new wr-core v4.2 with their update tools (see changelog of wrc-v4.2)
......@@ -264,44 +265,48 @@ System Setup
===========
This section describes the main elements required to start with the White-Rabbit based
on the *"White Rabbit (SPEC-based) starting kit"*. The different
on the *"White Rabbit (SPEC-based) Starting Kit"*. The different
hardware elements and theirs connections are described in this section.
What do you need?
----------------
In order to use the white rabbit starting kit and setup the different
In order to use the WR Starting Kit and setup the different
experiments you will need:
* An oscilloscope with at least 150Mhz bandwidth (500Mhz is recommended).
* Two PCs with at least two `PCIe x4` ports (`x8` & `x16` are also compatible)
* Two PCs with at least one `PCIe x4` port (`x8` & `x16` are also compatible). The use of two PCs is recommended because in some cases there are problems using a PC with 2xPCIe in several kernels.
* The Operative System **Ubuntu LTS 64bit (Long Term Support)** installed.
* Two mini-USB (B) cables (not provided with the kit).
This tutorial has been tested and verified with Ubuntu LTS 16.04.6 (kernel v.4.15.9) and Ubuntu LTS 18.04.2 (kernel v.4.18.0-17), this mean that standard support will only be given for these releases.
This tutorial has been tested and verified with Ubuntu LTS 16.04.6 (kernel v.4.15.9) and Ubuntu LTS 18.04.2 (kernel v.4.18.0-17), this mean that **standard support will only be given for these releases**.
However, the `spec-sw` driver should work with other releases, distributions and architectures.
> ***Notes:*** Ubuntu 18.04 LTS is supported but some versions like 18.04.1 or 18.04.3 (with kernel version 5.0) does not work correctly unless you [set a previous kernel version](#Set-Previous-Kernel-Version).
> ***Warning:*** Ubuntu LTS 14.04 is not supported.
![Configuration with one two PCs](img/ssk_configs.png)
Starting kit components
WR Starting Kit components
-----------------
The starting kit is composed of various elements that you should find
The WR Starting Kit is composed of various elements that you should find
in the package[^standardssk] :
* 2x [SPEC]s boards
* 2x [FMC-DIO]s 5CH TTL A
* 2x SFPs LC
* AXGE-1254-0531 (blue)
* AXGE-3454-0531 (violet)
* AXGE-1254-0531 (blue)
* AXGE-3454-0531 (violet)
* 1x LC-LC cable (2m)
* 3x LEMO cable (2m)
* 3x LEMO-BNC Adaptor
![The components of the starting kit](img/ssk_components.jpg)
![The components of the WR Starting Kit](img/ssk_components.jpg)
[^standardssk]: Only with the standard version of starting kit.
[^standardssk]: Only with the standard version of WR Starting Kit.
Physical setup
......@@ -334,7 +339,7 @@ Once you have your system running with the boards plugged, you need to:
* Check that the boards has been detected
* Install the tools to build drivers, etc...
* The drivers : `spec-sw`
* The drivers : `spec-sw`, `fmc-dio-5chttla`, `wr-nic`
SPEC detection
......@@ -353,6 +358,7 @@ You should obtain something similar as:
~~~~~~~~~~
Where `01` represent the ID of the PCIe slot given by your motherboard.
> **Note**: The PCIe slot numbering are normally ordered from top to bottom on the motherboard,
this mean that the board with ID `01` will be above.
......@@ -373,13 +379,13 @@ Then you need to install all the tools that you will need:
You can also run this command[^debian] for minimal setup:
~~~~{.sh}
sudo apt-get install git build-essential libreadline-dev linux-headers-$(uname -r) minicom
sudo apt-get install git build-essential python-minimal wget libreadline-dev linux-headers-$(uname -r) minicom
~~~~~~~~~
and this one if you also want to generate documentation (not mandatory):
~~~~{.sh}
sudo apt-get install texinfo emacs texlive pandoc
sudo apt-get install texinfo emacs texlive-xetex pandoc
~~~~~~~~~
......@@ -406,19 +412,7 @@ includes the [spec-sw] project.
>:$ git checkout -b wr-starting-kit-v3.0 wr-starting-kit-v3.0
~~~~~~~~~~~~
Configure your Git username/email
~~~~{.sh}
To set your global username/email configuration:
Open the command line.
Set your username:
git config --global user.name "FIRST_NAME LAST_NAME"
Set your email address:
git config --global user.email "MY_NAME@example.com"
~~~~~~~~~~~~
Or you can try our new Makefile that should perform everything!
Now you should execute the Makefile that should perform everything!
~~~~{.sh}
>:$ make
......@@ -459,7 +453,7 @@ written with proper value as explained in the next section.
Creating Valid EEPROM
----------------------
> ***Notes***: If you already have the new interfaces wrX while doing
> ***Notes:*** If you already have the new interfaces wrX while doing
`ifconfig`, this mean that you can **skip** this section.
On older manufactured [FMC-DIO] (before 2014), the EEPROM was not
......@@ -478,9 +472,8 @@ you might obtain the following warning on `dmesg`:
~~~~~{.sh}
>:$ dmesg
...
11.949966] spec 0000:01:00.0: mezzanine 0
[ 11.949967] Manufacturer: CERN
[ 11.949967] Product name: FmcDio5cha
[ 7.824668] spec 0000:01:00.0: mezzanine 0
[ 7.824669] EEPROM has no FRU information
...
~~~~~~~~~~
......@@ -488,44 +481,39 @@ This information, called the FRU, contains the type of FMC board, its serial num
In order to write it in case you have an old FMC board without any EEPROM written,
you should execute the following commands
Don't forget to modify the bus id: `FmcDio5cha-XXXX` and the S/N
`7S-DIO-v2-Sxx-XXX` with your specific devices setup.
~~~~~{.sh}
##First you need to go in the fru-generator folder
>:$ cd spec-sw/fmc-bus/tools/
>:$ cd wr-starting-kit/spec-sw/fmc-bus/tools/
## And compile the library
>:$ make
## Then, find out on which bus id you have the boards
>:$ ls /sys/bus/fmc/devices/
FmcDio5cha-0100
fmc-0100
### Enter root mode in the terminal
>:$ sudo bash
## Write the eeprom for fmc-0100: the first/the top one fmc board.
>:# FRU_VENDOR="CERN" FRU_NAME="FmcDio5cha" FRU_PART="EDA-02408-V2-0" \
./fru-generator -s 7S-DIO-v2-S03-058 > /sys/bus/fmc/devices/FmcDio5cha-0100/eeprom
./fru-generator -s 7S-DIO-v2-S03-058 > /sys/bus/fmc/devices/fmc-0100/eeprom
## Finally, Go back to user and starting-kit root directory
>:# exit
>:$ cd -
~~~~~~~~~~
Don't forget to modify the bus id: `FmcDio5cha-XXXX` and the S/N
`7S-DIO-v2-Sxx-XXX` with your specific devices setup.
### Reload the kernel driver
> ***Notes:*** Removing the kernel is actually proving a kernel panic (core-dump) and
your PC will be freezed. This is a known bug that you be corrected in a release fix.
Once you have correctly written (Auto or Manual) the EEPROM of the [FMC-DIO], you need
to reload the kernel driver by doing this
Once you have correctly written the EEPROM of the [FMC-DIO], you need
to reload the kernel driver by reboot the PC
~~~~{.sh}
>:$ sudo rmmod spec
>:$ sudo modprobe spec
>:$ sudo reboot
~~~~~~~~~~
you should now obtain something like this on `dmesg`:
......@@ -604,7 +592,7 @@ obtain appropriate permission on the device: `sudo usermod -a -G dialout $USER`
The White Rabbit Core Shell
----------------------------
Once you are in the UART you should obtain the White Rabit Core console (`wrc#`).
Once you are in the UART you should obtain the WR PTP Core console (`wrc#`).
A complete reference of the shell commands is included in the [wrpc.pdf] manual or
you can read them in the [Wiki](https://www.ohwr.org/project/wr-cores/wikis/home)
......@@ -622,6 +610,128 @@ For the tutorial we will use the following names:
* `wrc2#` for `wrc#` console of the main board (wri1/busID=0x0100) on the PC02
Initial Configuration using SDBFS partition
------------------------------------
Since version 3.0 of WR PTP Core ([wrpc-sw]), the on-board flash memory chip on the carrier
is used as a default place for storing calibration parameters and an init script.
The storage format of this information is organized in an SDBFS filesystem that **MUST BE** pre-formatted and
should be properly configured at least once (in case it has not been done during the manufacturing tests).
### Checking if SDBFS is properly formatted
The first thing to do is to verify that the SDBFS has been properly formatted and configured.
To do so you should check the trace messages while [connecting to the UART](#connect-to-the-uarts).
In case you see an error while WR Core is initializing such as:
~~~~~{.sh}
WR Core: starting up...
...
No SDB filesystem in i2c eeprom
~~~~~~~~~~
Or
~~~~~{.sh}
WR Core: starting up...
...
get_persistent_mac: SDB error
get_persistent_mac: SDB file is empty
get_persistent_mac: Using W1 serial number
~~~~~~~~~~
This means that SDBFS as not been founded or that SDBFS is not properly formatted (corrupted).
In this case you should format SDBFS as detailed in the [next section](#formatting-sdbfs).
In case SDBFS is found but an error message about an "empty SDB file" appears when retrieving
the MAC address of the device: you should jump to
[configuring the MAC address](#configuring-mac-address) section.
~~~~~{.sh}
WR Core: starting up...
sdbfs: found at 3014656 in Flash
...
get_persistent_mac: SDB file is empty
get_persistent_mac: Using W1 serial number
~~~~~~~~~~
If none of these warnings arise during initialization this mean that you can skip the next
steps and go directly to [configuring slave & master mode](#configure-in-slave-master-mode) section.
### Formatting SDBFS
> **Warning**: You should skip the following step if you have verified that
> the SDBFS is [properly formatted](#checking-if-sdbfs-is-properly-formatted).
Therefore, starting from v3.0 you have to write the empty
SDBFS filesystem image to the flash before running the WRPC. The simplest way of
doing this is by calling a WR PTP Core shell command:
~~~~~{.sh}
wrc# sdb fs 0
~~~~~
You should see the output similar to:
~~~~~{.sh}
filename: . ; first: 2e0000; last: 32007f
filename: wr-init ; first: 2f0000; last: 2f00ff
filename: calibration ; first: 300000; last: 30007f
filename: mac-address ; first: 310000; last: 310005
filename: sfp-database ; first: 320000; last: 32007f
Formatting SDBFS in Flash(0x2e0000)...
~~~~~
After formatting the SDBFS, you should reconfigure the
[MAC address](#configuring-mac-address) and the
[calibration](#calibration).
> **Note:** Other methods exists to format SDBFS with a pre-existing binary files:
> through the PCIe bus ([wrpc-sw].pdf > Appendix C), or using a Xilinx JTAG cable when
> [running in standalone](#run-in-standalone).
### Configuring MAC address
> **Note:** Configuring properly the MAC address is recommanded but not mandatory.
In case you get the messages at the initialization of WR PTP Core:
~~~~~{.sh}
WR Core: starting up...
...
get_persistent_mac: SDB file is empty
get_persistent_mac: Using W1 serial number
~~~~~
Your [SPEC] board will use a "auto-generated" MAC address using the
thermometer serial number (W1) as is unique among SPEC devices.
And if even if this MAC should be uniq on this network it has not been
officially assigned following the [IEEE OUI].
You should get the MAC for your board from its manufacturer. To configure the
address and store it into the Flash/EEPROM (so that it's automatically loaded
every time the WRPC starts) you should type two commands in the shell:
~~~~~{.sh}
wrc# mac set xx:xx:xx:xx:xx:xx
wrc# mac setp xx:xx:xx:xx:xx:xx
~~~~~
where `xx:xx:xx:xx:xx:xx` is the MAC address of your board.
To verify it back, you should run
~~~~~{.sh}
wrc# mac get
~~~~~
After rebooting the machine.
Configure in slave & master mode
--------------------------------
......@@ -739,7 +849,7 @@ It is also recommended to follow the order of the tutorial since the
concepts that are intended to be described and tested are explained in
the same order as the experiments.
> **Notes:** Before each experiment you should make sure that you set
> ***Notes:*** Before each experiment you should make sure that you set
up your boards in *master/slave* mode and that the PTP daemons are running on both.
......@@ -789,11 +899,11 @@ For example you can set it up like this
After reprogramming/rebooting the FGPA, the channels are set up by default as:
#. Channel 0 (connector #1) output a PPS signal: `p`
#. Channel 1 (connector #2) low state: `0`.
#. Channel 2 (connector #3) same as ch1: low state: `0`
#. Channel 3 (connector #4) is configured as input with termination impedance: `i`.
#. Channel 4 (connector #5) is in Clock Mode with termination: `C`.
1. Channel 0 (connector #1) output a PPS signal: `p`
2. Channel 1 (connector #2) low state: `0`.
3. Channel 2 (connector #3) same as ch1: low state: `0`
4. Channel 3 (connector #4) is configured as input with termination impedance: `i`.
5. Channel 4 (connector #5) is in Clock Mode with termination: `C`.
To reset to the default mode you can reset/reprogram the FPGA or set it back with:
......@@ -1071,7 +1181,7 @@ distributed instrumentation facility); another typical application is
time stamping input events.
Thus in these experiments we are going to transmit an external frequency in
the 100Hz range using the starting kit:
the 100Hz range using the WR Starting Kit:
* The user supplies a ~100Hz square wave on the channel 0 of the master card.
* The **dio-ruler** on master host reads the UTC time of the rising edge of the external pulse upon IRQ.
......@@ -1290,7 +1400,7 @@ The result of this experiment is illustrated by the next figure where
you can see the 3 PPS signals: yellow for [WRS], blue and violet for
[SPEC+FMCDIO].
![WRS PPS (yellow) vs Starting Kit PPS (blue & violet)](img/ssk_wrspps.jpg)
![WRS PPS (yellow) vs WR Starting Kit PPS (blue & violet)](img/ssk_wrspps.jpg)
The distance between each PPS might be reduced by the improving the
calibration which is the subject of the next section.
......@@ -1312,13 +1422,13 @@ If you use a custom gateware or SFPs that are not listed in the wiki page
you should run yourself the calibration in order to obtain the correct values
for your setup.
> **Warning**: Cable length/type can modify around ~5ns/meter the delay
> ***Warning:*** Cable length/type can modify around ~5ns/meter the delay
between the moment when the PPS was out of the board and when it was
captured by the oscilloscope.
> **Notes**: Please check that you are using the values that correspond
> ***Notes:***: Please check that you are using the values that correspond
to your gateware release. When this document was generated we refer as
wr-starting-kit-v3.0 (starting kit). You can also check using the `ver` command
wr-starting-kit-v3.0 (WR Starting Kit). You can also check using the `ver` command
if the corresponding embedded LM32 corresponds to your gateware version.
~~~~~{.sh}
......@@ -1332,7 +1442,7 @@ wrc# sfp show
## Erase the actual database if it was corrupted
wrc# sfp erase
## Add the parameters for the SFP provided in the starting kit
## Add the parameters for the SFP provided in the WR Starting Kit
wrc# sfp add AXGE-1254-0531 121751 95827 64481496
wrc# sfp add AXGE-3454-0531 121751 95827 -66584558
~~~~~~~~~~~
......@@ -1491,13 +1601,13 @@ If you need a more complete guide on how to create your own HDL for the [SPEC],
or you want to improve the structure of a project using the [OHWR] platform we recommend you
to look at the [spec-getting-started.pdf] guide.
The starting kit is based on various project:
The WR Starting Kit is based on various project:
* [spec-sw], The project that contains the PCIe driver and tools to access to the SPEC FPGA
* [spec-golden], A simple gateware in order to access to the EEPROM of the [FMC] (WB-I2C)
* [wr-nic], gateware (FPGA HDL) that includes the NIC capabilities and its corresponding kernel drivers
* [fmc-dio-5chttla], gateware (FPGA HDL) that includes the DIO capabilities (with NIC) and its corresponding kernel drivers
* [wrpc-sw], LM32 software in the white rabbit PTP core for the synchronization
* [wrpc-sw], LM32 software in the White Rabbit PTP core for the synchronization
* [coht-vic], Kernel driver to handles interruption from FPGA such as the one from SPEC
......@@ -1574,6 +1684,80 @@ make
You should finally obtain the bitstream to import in your [FMC] driver folder.
Set Specific Kernel Version
===========================
This chapter describes how to set a force loading a specific (previous) kernel version if you have problems while compiling/loading the wr-starting-kit
drivers with newest/latest kernel[^ubuntultskernel].
> ***Note:*** We recommand to fix your kernel to `4.18.xxx`, as it has been the one that have reported less error during development.
[^ubuntultskernel]: We usually support the current Ubuntu LTS at the moment of writing this document, however during the LTS cycle there are
minor release that might contains a newer kernel incompatible with our drivers: <https://wiki.ubuntu.com/Kernel/Support>.
Find the ID of the submenu
-------------------------------------------------
We first need to obtain the `$menuentry_id_option` for the current submenu:
~~~~~~
>:$ grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
~~~~~~~~~~~
List available kernel entries
-----------------------
~~~~~~
>:$ grep -A100 submenu /boot/grub/grub.cfg | grep menuentry
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
menuentry 'Ubuntu, with Linux 5.0.0-32-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.0.0-32-generic-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
menuentry 'Ubuntu, with Linux 5.0.0-32-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.0.0-32-generic-recovery-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
menuentry 'Ubuntu, with Linux 4.18.0-17-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-17-generic-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
menuentry 'Ubuntu, with Linux 4.18.0-17-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-17-generic-recovery-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
menuentry 'Ubuntu, with Linux 4.15.0-46-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-46-generic-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
menuentry 'Ubuntu, with Linux 4.15.0-46-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-46-generic-recovery-541c21ee-e687-4a1e-9f8c-c1b6285694da' {
~~~~~~~~~~
Create the default menu entry
-----------------------------
The parent entry id for Advanced options in this case is `gnulinux-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da`
Choose the entry for the kernel you want to use. For example, `gnulinux-4.18.0-17-generic-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da`
Concatenate both entries with `>` The result should be like:
`"gnulinux-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da > gnulinux-4.18.0-17-generic-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da"`
Edit Grub
----------
Edit the file `/etc/default/grub` and replace `GRUB_DEFAULT` with the previously created entry. The file would look like
~~~~~~{.sh}
GRUB_DEFAULT="gnulinux-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da > gnulinux-4.18.0-17-generic-advanced-541c21ee-e687-4a1e-9f8c-c1b6285694da"
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
~~~~~~~~~~~
Update Grub and Reboot
----------------------
~~~~~~{.sh}
>:$ sudo update-grub
>:$ sudo reboot
~~~~~~~~~~~
Frequently Added Questions
===========================
......@@ -1695,7 +1879,7 @@ References
* [spec-sw] Sub-project with that contains the PCIe driver and tools to access to the SPEC FPGA
* [wr-nic] Sub-project with gateware (FPGA HDL) that includes the NIC capabilities and its corresponding kernel drivers
* [fmc-dio-5chttla] Sub-project with gateware (FPGA HDL) that includes the DIO capabilities (with NIC) and its corresponding kernel drivers
* [wrpc-sw] Sub-project with the LM32 software in the white rabbit PTP core for the synchronization
* [wrpc-sw] Sub-project with the LM32 software in the White Rabbit PTP core for the synchronization
......@@ -1712,6 +1896,7 @@ References
[FMC fine-delay]: https://sevensols.com/index.php/fmc-del/
[OHWR]: http://www.ohwr.org/projects/white-rabbit
[Seven Solutions]: http://www.sevensols.com
[IEEE OUI]: https://standards.ieee.org/products-services/regauth/index.html
[wr-switch-guide.pdf]: https://sevensols.com/index.php/products/white-rabbit-switch/
[wr-nic]: http://www.ohwr.org/projects/wr-nic/
......@@ -1725,7 +1910,7 @@ References
[spec-getting-started.pdf]:http://www.ohwr.org/projects/spec-getting-started/wiki
[wr-nic.pdf]: http://www.sevensols.com/dl/wr-nic/doc/latest_stable.pdf
[fmc-bus.pdf]: http://www.ohwr.org/attachments/download/2685/fmc-bus-2014-02-release.pdf
[spec-sw.pdf]:http://www.sevensols.com/dl/spec-sw/latest_stable.pdf
[spec-sw.pdf]:https://www.ohwr.org/project/spec-sw/uploads/1893da4fbb480352be53888d535fd140/spec-sw-2014-02-release.pdf
[wr_external_reference.pdf]: http://www.ohwr.org/attachments/1647/wr_external_reference.pdf
[wrpc.pdf]: http://www.ohwr.org/attachments/2559/wrpc-v2.1.pdf
[wrpc-v2.1.pdf]: http://www.ohwr.org/attachments/2559/wrpc-v2.1.pdf
......
......@@ -11,6 +11,10 @@ RUN \
apt-get upgrade -y &&\
apt-get install -y git \
build-essential \
python-minimal \
wget \
libreadline-dev \
kmod \
linux-headers-4.4.0-21-generic \
linux-headers-4.8.0-34-generic \
linux-headers-4.10.0-14-generic \
......@@ -19,25 +23,19 @@ RUN \
# Clone repository and detach HEAD
RUN \
git clone https://ohwr.org/project/spec-sw.git &&\
cd spec-sw &&\
git checkout 36f70fe4
git clone https://ohwr.org/project/wr-starting-kit.git &&\
cd wr-starting-kit &&\
# TODO: preliminary commit for wr-starting-kit-v3.0
git checkout 50f368abff0d4aed8223858f552b3184249695d2
#set enviroment variable for kernel version 4.4.0-21-generic
ENV LINUX /lib/modules/4.4.0-21-generic/build
#construction spec-sw for kernel version 4.4.0-21-generic
RUN \
cd spec-sw &&\
make &&\
make install
# The kernel version 4.4.0-21-generic does not work
#set enviroment variable for kernel version 4.8.0-34-generic
ENV LINUX /lib/modules/4.8.0-34-generic/build
#construction spec-sw for kernel version 4.8.0-34-generic
RUN \
cd spec-sw &&\
cd wr-starting-kit &&\
make clean &&\
make &&\
make install
......@@ -47,7 +45,7 @@ ENV LINUX /lib/modules/4.10.0-14-generic/build
#construction spec-sw for kernel version 4.10.0-14-generic
RUN \
cd spec-sw &&\
cd wr-starting-kit &&\
make clean &&\
make &&\
make install
......@@ -57,7 +55,7 @@ ENV LINUX /lib/modules/4.13.0-16-generic/build
#construction spec-sw for kernel version 4.13.0-16-generic
RUN \
cd spec-sw &&\
cd wr-starting-kit &&\
make clean &&\
make &&\
make install
......@@ -67,10 +65,16 @@ ENV LINUX /lib/modules/4.15.0-13-generic/build
#construction spec-sw for kernel version 4.15.0-13-generic
RUN \
cd spec-sw &&\
cd wr-starting-kit &&\
make clean &&\
make &&\
make install
#create file FRU
RUN \
cd /wr-starting-kit/spec-sw/fmc-bus/tools &&\
FRU_VENDOR="CERN" FRU_NAME="FmcDio5cha" FRU_PART="EDA-02408-V2-0" \
./fru-generator -s 7S-WR-FMCDIO5ch-2.0-Sx.yyy > example.bin
# Define default command.
CMD ["bash"]
......@@ -12,21 +12,26 @@ RUN \
apt-get upgrade -y &&\
apt-get install -y git \
build-essential \
python-minimal \
wget \
libreadline-dev \
kmod \
linux-headers-4.15.0-47-generic \
linux-headers-4.18.0-17-generic
# Clone repository and detach HEAD
RUN \
git clone https://ohwr.org/project/spec-sw.git &&\
cd spec-sw &&\
git checkout 36f70fe4
git clone https://ohwr.org/project/wr-starting-kit.git &&\
cd wr-starting-kit &&\
# TODO: preliminary commit for wr-starting-kit-v3.0
git checkout 50f368abff0d4aed8223858f552b3184249695d2
#set enviroment variable for kernel version 4.15.0-47-generic
ENV LINUX /lib/modules/4.15.0-47-generic/build
#construction spec-sw for kerner version 4.15.0-47-generic
RUN \
cd spec-sw &&\
cd wr-starting-kit &&\
make &&\
make install
......@@ -35,10 +40,16 @@ ENV LINUX /lib/modules/4.18.0-17-generic/build
#construction spec-sw for kernel version 4.18.0-17-generic
RUN \
cd spec-sw &&\
cd wr-starting-kit &&\
make clean &&\
make &&\
make install
#create file FRU
RUN \
cd /wr-starting-kit/spec-sw/fmc-bus/tools &&\
FRU_VENDOR="CERN" FRU_NAME="FmcDio5cha" FRU_PART="EDA-02408-V2-0" \
./fru-generator -s 7S-WR-FMCDIO5ch-2.0-Sx.yyy > example.bin
# Define default command.
CMD ["bash"]