From 69ee66c295e03907c643e7189f34e45a4e95b142 Mon Sep 17 00:00:00 2001 From: Peter Wittich Date: Mon, 21 Feb 2022 09:10:13 -0500 Subject: [PATCH] update list of monitorables and script to generate MCU code --- data/zynqmon.yml | 12 ++- src/mcu_generate.ipynb | 115 +++++++++++++++++++++++++++ src/yamltest.ipynb | 176 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 296 insertions(+), 7 deletions(-) create mode 100644 src/mcu_generate.ipynb diff --git a/data/zynqmon.yml b/data/zynqmon.yml index 6a9c9013..140bade0 100644 --- a/data/zynqmon.yml +++ b/data/zynqmon.yml @@ -7,7 +7,7 @@ config: - name: firefly start: 0 count: 25 - mcu_call: firefly + mcu_call: firefly_temps type: int8 names: - K01 12 Tx GTH @@ -37,7 +37,7 @@ config: - V12 12 Rx GTY - name: psmon start: 20 - count: 20 + count: 64 mcu_call: psmon type: fp16 single_instance: &psmon_one [TEMP1, TEMP3, VIN, VOUT, IOUT, RESERVED, RESERVED, RESERVED] @@ -83,3 +83,11 @@ config: mcu_call: gitversion names: - Git_Version + - name: fpga + start: 128 + count: 2 + type: float16 + mcu_call: fpga + names: + - F1_TEMP + - F2_TEMP diff --git a/src/mcu_generate.ipynb b/src/mcu_generate.ipynb new file mode 100644 index 00000000..1f44c5d2 --- /dev/null +++ b/src/mcu_generate.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import yaml\n", + "from pprint import pprint\n", + "import dicttoxml\n", + "# there is also dict2xml available in pypy (python3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "with open('../data/zynqmon.yml') as f:\n", + " data = yaml.load(f, Loader=yaml.FullLoader)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "firefly\n", + "psmon\n", + "adcmon\n", + "uptime\n", + "gitversion\n", + "fpga\n" + ] + } + ], + "source": [ + "config = data['config']\n", + "for c in config:\n", + " print(c['name'])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "// firefly, size 25\n", + "zm_set_firefly_temps(&zynqmon_data[0], 0);\n", + "// psmon, size 64\n", + "zm_set_psmon(&zynqmon_data[25], 20);\n", + "// adcmon, size 21\n", + "zm_set_adcmon(&zynqmon_data[89], 40);\n", + "// uptime, size 2\n", + "zm_set_uptime(&zynqmon_data[110], 192);\n", + "// gitversion, size 20\n", + "zm_set_gitversion(&zynqmon_data[112], 194);\n", + "// fpga, size 2\n", + "zm_set_fpga(&zynqmon_data[132], 128);\n" + ] + } + ], + "source": [ + "size = 0\n", + "for c in config:\n", + " # generate C call\n", + " print(f\"// {c['name']}, size {c['count']}\")\n", + " print(f\"zm_set_{c['mcu_call']}(&zynqmon_data[{size}], {c['start']});\")\n", + " size = size + int(c['count'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "d1bcf2015140efba1309a3b878c8a09b28a5da1fac13dcbb304588e5a25844fe" + }, + "kernelspec": { + "display_name": "Python 3.8.12 64-bit ('base': conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/yamltest.ipynb b/src/yamltest.ipynb index a4696ddc..849e0f61 100644 --- a/src/yamltest.ipynb +++ b/src/yamltest.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -14,9 +14,166 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'cm_hw_rev': '1A',\n", + " 'config': [{'count': 25,\n", + " 'mcu_call': 'firefly',\n", + " 'name': 'firefly',\n", + " 'names': ['K01 12 Tx GTH',\n", + " 'K01 12 Rx GTH',\n", + " 'K02 12 Tx GTH',\n", + " 'K02 12 Rx GTH',\n", + " 'K03 12 Tx GTH',\n", + " 'K03 12 Rx GTH',\n", + " 'K04 4 XCVR GTY',\n", + " 'K05 4 XCVR GTY',\n", + " 'K06 4 XCVR GTY',\n", + " 'K07 12 Tx GTY',\n", + " 'K07 12 Rx GTY',\n", + " 'V01 4 XCVR GTY',\n", + " 'V02 4 XCVR GTY',\n", + " 'V03 4 XCVR GTY',\n", + " 'V04 4 XCVR GTY',\n", + " 'V05 4 XCVR GTY',\n", + " 'V06 4 XCVR GTY',\n", + " 'V07 4 XCVR GTY',\n", + " 'V08 4 XCVR GTY',\n", + " 'V09 4 XCVR GTY',\n", + " 'V10 4 XCVR GTY',\n", + " 'V11 12 Tx GTY',\n", + " 'V11 12 Rx GTY',\n", + " 'V12 12 Tx GTY',\n", + " 'V12 12 Rx GTY'],\n", + " 'start': 0,\n", + " 'type': 'int8'},\n", + " {'count': 20,\n", + " 'mcu_call': 'psmon',\n", + " 'name': 'psmon',\n", + " 'names': [['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED']],\n", + " 'single_instance': ['TEMP1',\n", + " 'TEMP3',\n", + " 'VIN',\n", + " 'VOUT',\n", + " 'IOUT',\n", + " 'RESERVED',\n", + " 'RESERVED',\n", + " 'RESERVED'],\n", + " 'start': 20,\n", + " 'type': 'fp16'},\n", + " {'count': 21,\n", + " 'mcu_call': 'adcmon',\n", + " 'name': 'adcmon',\n", + " 'names': ['VCC_12V',\n", + " 'VCC_2V5',\n", + " 'VCC_M3V3',\n", + " 'VCC_3V3',\n", + " 'VCC_1V8',\n", + " 'VCC_M1V8',\n", + " 'V_VCCINT',\n", + " 'K_VCCINT',\n", + " 'V_MGTY1_AVTT',\n", + " 'V_MGTY2_AVTT',\n", + " 'K_MGTH_AVTT',\n", + " 'K_MGTY_AVTT',\n", + " 'V_MGTY1_VCCAUX',\n", + " 'V_MGTY2_VCCAUX',\n", + " 'K_MGTY_VCCAUX',\n", + " 'K_MGTH_VCCAUX',\n", + " 'V_MGTY1_AVCC',\n", + " 'V_MGTY2_AVCC',\n", + " 'K_MGTY_AVCC',\n", + " 'K_MGTH_AVCC',\n", + " 'TM4C_TEMP'],\n", + " 'start': 40,\n", + " 'type': 'fp16'},\n", + " {'count': 2,\n", + " 'mcu_call': 'uptime',\n", + " 'name': 'uptime',\n", + " 'names': ['Uptime'],\n", + " 'start': 192,\n", + " 'type': 'uint16'},\n", + " {'count': 20,\n", + " 'mcu_call': 'gitversion',\n", + " 'name': 'gitversion',\n", + " 'names': ['Git_Version'],\n", + " 'start': 194,\n", + " 'type': 'char'}],\n", + " 'name': 'zynqmon configuration file',\n", + " 'revision': 1,\n", + " 'sm_fw_rev': '1A',\n", + " 'sm_hw_rev': '1A'}\n" + ] + } + ], "source": [ "with open('../data/zynqmon.yml') as f:\n", " data = yaml.load(f, Loader=yaml.FullLoader)\n", @@ -25,9 +182,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b'zynqmon configuration file1A1A1A1firefly025fireflyint8K01 12 Tx GTHK01 12 Rx GTHK02 12 Tx GTHK02 12 Rx GTHK03 12 Tx GTHK03 12 Rx GTHK04 4 XCVR GTYK05 4 XCVR GTYK06 4 XCVR GTYK07 12 Tx GTYK07 12 Rx GTYV01 4 XCVR GTYV02 4 XCVR GTYV03 4 XCVR GTYV04 4 XCVR GTYV05 4 XCVR GTYV06 4 XCVR GTYV07 4 XCVR GTYV08 4 XCVR GTYV09 4 XCVR GTYV10 4 XCVR GTYV11 12 Tx GTYV11 12 Rx GTYV12 12 Tx GTYV12 12 Rx GTYpsmon2020psmonfp16TEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDadcmon4021adcmonfp16VCC_12VVCC_2V5VCC_M3V3VCC_3V3VCC_1V8VCC_M1V8V_VCCINTK_VCCINTV_MGTY1_AVTTV_MGTY2_AVTTK_MGTH_AVTTK_MGTY_AVTTV_MGTY1_VCCAUXV_MGTY2_VCCAUXK_MGTY_VCCAUXK_MGTH_VCCAUXV_MGTY1_AVCCV_MGTY2_AVCCK_MGTY_AVCCK_MGTH_AVCCTM4C_TEMPuptime1922uint16uptimeUptimegitversion19420chargitversionGit_Version'\n", + "b'firefly025fireflyint8K01 12 Tx GTHK01 12 Rx GTHK02 12 Tx GTHK02 12 Rx GTHK03 12 Tx GTHK03 12 Rx GTHK04 4 XCVR GTYK05 4 XCVR GTYK06 4 XCVR GTYK07 12 Tx GTYK07 12 Rx GTYV01 4 XCVR GTYV02 4 XCVR GTYV03 4 XCVR GTYV04 4 XCVR GTYV05 4 XCVR GTYV06 4 XCVR GTYV07 4 XCVR GTYV08 4 XCVR GTYV09 4 XCVR GTYV10 4 XCVR GTYV11 12 Tx GTYV11 12 Rx GTYV12 12 Tx GTYV12 12 Rx GTYpsmon2020psmonfp16TEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDTEMP1TEMP3VINVOUTIOUTRESERVEDRESERVEDRESERVEDadcmon4021adcmonfp16VCC_12VVCC_2V5VCC_M3V3VCC_3V3VCC_1V8VCC_M1V8V_VCCINTK_VCCINTV_MGTY1_AVTTV_MGTY2_AVTTK_MGTH_AVTTK_MGTY_AVTTV_MGTY1_VCCAUXV_MGTY2_VCCAUXK_MGTY_VCCAUXK_MGTH_VCCAUXV_MGTY1_AVCCV_MGTY2_AVCCK_MGTY_AVCCK_MGTH_AVCCTM4C_TEMPuptime1922uint16uptimeUptimegitversion19420chargitversionGit_Version'\n" + ] + } + ], "source": [ "\n", "xml = dicttoxml.dicttoxml(data, attr_type=False)\n",