From 395103b830c118e2e8606e67d9ec493ed0a2370c Mon Sep 17 00:00:00 2001 From: Jose Lopez Date: Wed, 9 Nov 2016 17:48:28 +0100 Subject: [PATCH 1/4] Added a document regarding Zen clocking resources programming --- doc/zen-clock-programming.html | 151 +++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 doc/zen-clock-programming.html diff --git a/doc/zen-clock-programming.html b/doc/zen-clock-programming.html new file mode 100644 index 0000000..6889366 --- /dev/null +++ b/doc/zen-clock-programming.html @@ -0,0 +1,151 @@ + + + + + + + + + + + +
+ +
+

Generar FSBL

+

En Vivado:

+ +

Dentro del proyecto que contiene el fsbl bueno, copiar la carpeta ./wr-zen-hdl/syn/wrc2p-a7-zen-***/wrc2p-a7-zen-***.sdk/fsbl/src (ten en cuenta que fsbl fue el nombre dado en un paso anterior).

+

Forzar la actualización de los archivos del proyecto (esto es, F5).

+

Comprobar que no hay ningún problema a la hora de compilar (Build -> Build all)

+

Si todo va bien, al terminar el Build ya se ha generado el fsbl.elf

+

Generar BOOT.bin

+

Para generar el BOOT.bin hace falta tener previamente tres ficheros:

+ +
+

Nota: se señala que el u-boot empleado es para la Zen v2. Desconozco si algún problema puede derivar de esto.

+
+

Desde el SDK, en el menú Xilinx Tools -> Create BOOT Image:

+ +

Configurar LMK03806

+

Configurar los registros del LMK partiendo de un fichero de configuración .mac generado desde CodeLoader (ver Google Drive del equipo) es muy sencillo si tenemos un proyecto de FSBL funcional como punto de partida. Se necesita sólamente el fichero .mac y el script lmkconf alojado en el repositorio ugr-scripts.

+

Escribiendo source lmkconf fichero.mac salida.txt se genera un fichero .txt que contiene el struct con los nuevos valores de los registros del LMK03806.

+

Ya de vuelta al proyecto del fsbl, sustituiremos el struct presente en el fichero [ruta al fsbl]/src/lmk03806.c y continuamos con los pasos indicados para generar un nuevo FSBL.

+

Configurar AD9516

+

La configuración del AD9516 no se realiza en el FSBL sino que se programa mediante la ejecución de un binario configure_ad9516 durante el arranque del SO, generalmente justo después de programar la PL de la Zen. Para cambiar los registros que se programan al chip se ha de generar un nuevo binario en el sistema de archivos.

+

Supongamos que ya tenemos estos elementos de partida:

+ +

Y solo hay que seguir estos pasos:

+ +

Ya sólo queda recompilar el espacio de usuario. Esto se puede conseguir llamando al script wrz-build-all desde fuera del directorio del repositorio y llevando a cabo los pasos 3, 4 y 5: ./wr-zynq-os/build/wrz-build-all –step=03 && ./wr-zynq-os/build/wrz-build-all –step=04 && ./wr-zynq-os/build/wrz-build-all –step=05

+

Y la imagen del sistema de archivos con la nueva configuración para el AD9516 se encontrará en ./images/uramdisk.image.gz .

+ + + From f57ff6e9036d4fb7d8d3658b3c0833f880c17453 Mon Sep 17 00:00:00 2001 From: Jose Lopez Date: Wed, 9 Nov 2016 17:51:05 +0100 Subject: [PATCH 2/4] Added a Markdown version of the previous file This allows the contents to be edited easily. --- doc/zen-clock-programming.md | 73 ++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 doc/zen-clock-programming.md diff --git a/doc/zen-clock-programming.md b/doc/zen-clock-programming.md new file mode 100644 index 0000000..b5d4a2a --- /dev/null +++ b/doc/zen-clock-programming.md @@ -0,0 +1,73 @@ + + +## Generar FSBL + +En Vivado: + + * File -> Export -> Export hardware + * Include bitstream + * Local to project -> OK + * Launch SDK + * New -> Application Project + * Give name to project (por ej. 'fsbl') + * Next + * Zynq FSBL, Finish + +Dentro del proyecto que contiene el fsbl _bueno_, copiar la carpeta ./wr-zen-hdl/syn/wrc2p-a7-zen-\*\*\*/wrc2p-a7-zen-\*\*\*.sdk/fsbl/src (ten en cuenta que fsbl fue el nombre dado en un paso anterior). + +Forzar la actualización de los archivos del proyecto (esto es, F5). + +Comprobar que no hay ningún problema a la hora de compilar (Build -> Build all) + +Si todo va bien, al terminar el Build ya se ha generado el fsbl.elf + +## Generar BOOT.bin + +Para generar el BOOT.bin hace falta tener previamente tres ficheros: + + * El fsbl.elf que acabamos de generar + * Un bitstream, generalmente un _golden_ con las funcionalidades básicas + * El fichero u-boot.elf + +> _Nota: se señala que el u-boot empleado es para la Zen v2. Desconozco si algún problema puede derivar de esto_. + +Desde el SDK, en el menú Xilinx Tools -> Create BOOT Image: + + * Añadir esos tres ficheros en el orden que se han mencionado + * Se puede guardar esa configuración en un fichero .bif para generar el BOOT.bin + de manera más rápida en el futuro. + +## Configurar LMK03806 + +Configurar los registros del LMK partiendo de un fichero de configuración .mac generado desde CodeLoader (ver Google Drive del equipo) +es muy sencillo si tenemos un proyecto de FSBL funcional como punto de partida. Se necesita sólamente el fichero .mac y el script lmkconf alojado en [el repositorio ugr-scripts](https://github.com/TimingKeepers/ugr-scripts). + +Escribiendo + source lmkconf fichero.mac salida.txt +se genera un fichero .txt que contiene el struct con los nuevos valores de los registros del LMK03806. + +Ya de vuelta al proyecto del fsbl, sustituiremos el struct presente en el fichero [ruta al fsbl]/src/lmk03806.c y continuamos con los pasos indicados para [generar un nuevo FSBL](#fsbl). + +## Configurar AD9516 + +La configuración del AD9516 no se realiza en el FSBL sino que se programa mediante la ejecución de un binario _configure\_ad9516_ durante el arranque del SO, generalmente justo después de programar la PL de la Zen. +Para cambiar los registros que se programan al chip se ha de generar un nuevo binario en el sistema de archivos. + +Supongamos que ya tenemos estos elementos de partida: + + * Un fichero .stp con la nueva configuración de los registros (el software necesario para generarlo se puede encontrar en el Google Drive del equipo). + * Un entorno de trabajo en el que ya hemos podido compilar todos los ficheros resultado del repositorio wr-zynq-os. + +Y solo hay que seguir estos pasos: + + * Llevar el fichero .stp al directorio donde están las herramientas relacionadas /.../wr-zynq-os/userspace/tools + * Ejecutar el script de python gen_ad9516_config.py pasándole como argumento el fichero .stp. Este script generará una nueva cabecera en ad9516_config.h . + +Ya sólo queda recompilar el espacio de usuario. Esto se puede conseguir llamando al script wrz-build-all desde fuera del directorio del repositorio y llevando a cabo los pasos 3, 4 y 5: + ./wr-zynq-os/build/wrz-build-all --step=03 && ./wr-zynq-os/build/wrz-build-all --step=04 && ./wr-zynq-os/build/wrz-build-all --step=05 + +Y la imagen del sistema de archivos con la nueva configuración para el AD9516 se encontrará en ./images/uramdisk.image.gz . + + + + From 2b1825500029d8e7ff39c705cf27c39ee23054c3 Mon Sep 17 00:00:00 2001 From: Jose Lopez Date: Wed, 9 Nov 2016 18:02:16 +0100 Subject: [PATCH 3/4] Making files github-markdown friendly --- doc/zen-clock-programming.html | 9 ++++++--- doc/zen-clock-programming.md | 10 +++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/doc/zen-clock-programming.html b/doc/zen-clock-programming.html index 6889366..9b5065b 100644 --- a/doc/zen-clock-programming.html +++ b/doc/zen-clock-programming.html @@ -128,7 +128,9 @@

Generar BOOT.bin

Configurar LMK03806

Configurar los registros del LMK partiendo de un fichero de configuración .mac generado desde CodeLoader (ver Google Drive del equipo) es muy sencillo si tenemos un proyecto de FSBL funcional como punto de partida. Se necesita sólamente el fichero .mac y el script lmkconf alojado en el repositorio ugr-scripts.

-

Escribiendo source lmkconf fichero.mac salida.txt se genera un fichero .txt que contiene el struct con los nuevos valores de los registros del LMK03806.

+

Escribiendo

+

source lmkconf fichero.mac salida.txt

+

se genera un fichero .txt que contiene el struct con los nuevos valores de los registros del LMK03806.

Ya de vuelta al proyecto del fsbl, sustituiremos el struct presente en el fichero [ruta al fsbl]/src/lmk03806.c y continuamos con los pasos indicados para generar un nuevo FSBL.

Configurar AD9516

La configuración del AD9516 no se realiza en el FSBL sino que se programa mediante la ejecución de un binario configure_ad9516 durante el arranque del SO, generalmente justo después de programar la PL de la Zen. Para cambiar los registros que se programan al chip se ha de generar un nuevo binario en el sistema de archivos.

@@ -142,8 +144,9 @@

Configurar AD9516Llevar el fichero .stp al directorio donde están las herramientas relacionadas /…/wr-zynq-os/userspace/tools
  • Ejecutar el script de python gen_ad9516_config.py pasándole como argumento el fichero .stp. Este script generará una nueva cabecera en ad9516_config.h .
  • -

    Ya sólo queda recompilar el espacio de usuario. Esto se puede conseguir llamando al script wrz-build-all desde fuera del directorio del repositorio y llevando a cabo los pasos 3, 4 y 5: ./wr-zynq-os/build/wrz-build-all –step=03 && ./wr-zynq-os/build/wrz-build-all –step=04 && ./wr-zynq-os/build/wrz-build-all –step=05

    -

    Y la imagen del sistema de archivos con la nueva configuración para el AD9516 se encontrará en ./images/uramdisk.image.gz .

    +

    Ya sólo queda recompilar el espacio de usuario. Esto se puede conseguir llamando al script wrz-build-all desde fuera del directorio del repositorio y llevando a cabo los pasos 3, 4 y 5:

    +

    ./wr-zynq-os/build/wrz-build-all --step=03 && ./wr-zynq-os/build/wrz-build-all --step=04 && ./wr-zynq-os/build/wrz-build-all --step=05

    +

    Y la imagen del sistema de archivos con la nueva configuración para el AD9516 se encontrará en ./images/uramdisk.image.gz.

    diff --git a/doc/zen-clock-programming.md b/doc/zen-clock-programming.md index b5d4a2a..1a22697 100644 --- a/doc/zen-clock-programming.md +++ b/doc/zen-clock-programming.md @@ -43,7 +43,9 @@ Configurar los registros del LMK partiendo de un fichero de configuración .mac es muy sencillo si tenemos un proyecto de FSBL funcional como punto de partida. Se necesita sólamente el fichero .mac y el script lmkconf alojado en [el repositorio ugr-scripts](https://github.com/TimingKeepers/ugr-scripts). Escribiendo - source lmkconf fichero.mac salida.txt + +`source lmkconf fichero.mac salida.txt` + se genera un fichero .txt que contiene el struct con los nuevos valores de los registros del LMK03806. Ya de vuelta al proyecto del fsbl, sustituiremos el struct presente en el fichero [ruta al fsbl]/src/lmk03806.c y continuamos con los pasos indicados para [generar un nuevo FSBL](#fsbl). @@ -64,9 +66,11 @@ Y solo hay que seguir estos pasos: * Ejecutar el script de python gen_ad9516_config.py pasándole como argumento el fichero .stp. Este script generará una nueva cabecera en ad9516_config.h . Ya sólo queda recompilar el espacio de usuario. Esto se puede conseguir llamando al script wrz-build-all desde fuera del directorio del repositorio y llevando a cabo los pasos 3, 4 y 5: - ./wr-zynq-os/build/wrz-build-all --step=03 && ./wr-zynq-os/build/wrz-build-all --step=04 && ./wr-zynq-os/build/wrz-build-all --step=05 + +`./wr-zynq-os/build/wrz-build-all --step=03 && ./wr-zynq-os/build/wrz-build-all --step=04 && ` +`./wr-zynq-os/build/wrz-build-all --step=05` -Y la imagen del sistema de archivos con la nueva configuración para el AD9516 se encontrará en ./images/uramdisk.image.gz . +Y la imagen del sistema de archivos con la nueva configuración para el AD9516 se encontrará en ./images/uramdisk.image.gz. From b00c0d6461631904abf7bd3232c035141ee09093 Mon Sep 17 00:00:00 2001 From: Jose Lopez Date: Wed, 10 May 2017 13:31:30 +0200 Subject: [PATCH 4/4] Corrected README for uboot-mkimage.sh as pointed by Marco Fuentes Garcia --- U-boot/README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/U-boot/README b/U-boot/README index ab4a5e2..8c679d0 100644 --- a/U-boot/README +++ b/U-boot/README @@ -25,12 +25,12 @@ First of all, you will need to export an environment variable: Then, if you have a uramimage.image.gz file and you want to unpack it to some location, just run: - $ ./uboot-mkimage.sh -u -r /absolute/path/where/image/will/be/unpacked -i /absolute/path/to/uramdisk.image.gz + $ ./uboot-mkimage.sh -m unpack -r /absolute/path/where/image/will/be/unpacked -i /absolute/path/to/uramdisk.image.gz Or the other way around (packing rootfs to a file): - $ ./uboot-mkimage.sh -p -r /absolute/path/where/image/will/be/unpacked -i /absolute/path/to/uramdisk.image.gz + $ ./uboot-mkimage.sh -m pack -r /absolute/path/where/image/will/be/unpacked -i /absolute/path/to/uramdisk.image.gz Easy!