meier/plocUpdater #19

Merged
muellerr merged 3 commits from meier/plocUpdater into develop 2021-08-20 09:42:15 +02:00
4 changed files with 67 additions and 30 deletions

View File

@ -13,7 +13,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
<option name="PARAMETERS" value="-c udp -s ploc_supv -l -t 6 --hk" /> <option name="PARAMETERS" value="-s ploc_supv -l -t 6 --hk" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" /> <option name="MODULE_MODE" value="false" />

View File

@ -153,10 +153,14 @@ class EiveHookObject(TmTcHookBase):
service_ploc_supv_tuple = ("PLOC Supervisor", op_code_dict_srv_ploc_supv) service_ploc_supv_tuple = ("PLOC Supervisor", op_code_dict_srv_ploc_supv)
op_code_dict_srv_ploc_updater = { op_code_dict_srv_ploc_updater = {
"0": ("Ploc Updater: Update partion A on NVM0", {OpCodeDictKeys.TIMEOUT: 2.0}), "0": ("Ploc Updater: Update uboot on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("Ploc Updater: Update partion B on NVM0", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("Ploc Updater: Update bitstream on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("Ploc Updater: Update partion A on NVM1", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("Ploc Updater: Update linux on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
"3": ("Ploc Updater: Update partion B on NVM1", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("Ploc Updater: Update application on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
"4": ("Ploc Updater: Update uboot on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
"5": ("Ploc Updater: Update bitstream on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
"6": ("Ploc Updater: Update linux on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
"7": ("Ploc Updater: Update application on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
} }
service_ploc_updater_tuple = ("Ploc Updater", op_code_dict_srv_ploc_updater) service_ploc_updater_tuple = ("Ploc Updater", op_code_dict_srv_ploc_updater)

View File

@ -408,7 +408,7 @@ def pack_set_alert_limit_cmd(object_id: bytearray) -> bytearray:
latchup_id = get_latchup_id() latchup_id = get_latchup_id()
dutycycle = int(input("Specify dutycycle:")) dutycycle = int(input("Specify dutycycle:"))
command = bytearray() command = bytearray()
command = object_id + struct.pack('!I', SupvActionIds.AUTO_CALIBRATE_ALERT) command = object_id + struct.pack('!I', SupvActionIds.SET_ALERT_LIMIT)
command = command + struct.pack('!B', latchup_id) command = command + struct.pack('!B', latchup_id)
command = command + struct.pack('!I', dutycycle) command = command + struct.pack('!I', dutycycle)
return command return command
@ -420,8 +420,8 @@ def pack_set_alert_irq_filter_cmd(object_id: bytearray) -> bytearray:
@param object_id The object id of the PLOC supervisor handler. @param object_id The object id of the PLOC supervisor handler.
""" """
latchup_id = get_latchup_id() latchup_id = get_latchup_id()
tp = int(input("Specify TP:")) tp = int(input("Specify filter type (TP):"))
div = int(input("Specify DIV:")) div = int(input("Specify clock divider (DIV):"))
command = bytearray() command = bytearray()
command = object_id + struct.pack('!I', SupvActionIds.SET_ALERT_IRQ_FILTER) command = object_id + struct.pack('!I', SupvActionIds.SET_ALERT_IRQ_FILTER)
command = command + struct.pack('!B', latchup_id) command = command + struct.pack('!B', latchup_id)

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """
@file ploc_supervisor.py @file ploc_udpater.py
@brief Tests for commanding the supervisor of the PLOC. @brief Commands to initiate update transfer to ploc supervisor. This only updates the software of the MPSoC, it is not
possible to update the software of the supervisor.
The supervisor is programmed by Thales. The supervisor is programmed by Thales.
@author J. Meier @author J. Meier
@date 10.07.2021 @date 10.07.2021
@ -28,17 +29,25 @@ latchup_id_dict = {
class UpdaterActionIds: class UpdaterActionIds:
UPDATE_NVM0_A = 0 UPDATE_A_UBOOT = 0
UPDATE_NVM0_B = 1 UPDATE_A_BITSTREAM = 1
UPDATE_NVM1_A = 2 UPDATE_A_LINUX = 2
UPDATE_NVM1_B = 3 UPDATE_A_APP_SW = 3
UPDATE_B_UBOOT = 4
UPDATE_B_BITSTREAM = 5
UPDATE_B_LINUX = 6
UPDATE_B_LINUX = 7
class ImagePathDefs: class ImagePathDefs:
imageNvm0A = "/mnt/sd0/ploc/updateNvm0A.bin" imageAuboot = "/mnt/sd0/ploc/updateAuboot.bin"
imageNvm0B = "/mnt/sd0/ploc/updateNvm0B.bin" imageAbitsream = "/mnt/sd0/ploc/updateAbitstream.bin"
imageNvm1A = "/mnt/sd0/ploc/updateNvm1A.bin" imageAlinux = "/mnt/sd0/ploc/updateAlinux.bin"
imageNvm1B = "/mnt/sd0/ploc/updateNvm1B.bin" imageAappsw = "/mnt/sd0/ploc/updateAappsw.bin"
imageBuboot = "/mnt/sd0/ploc/updateBuboot.bin"
imageBbitsream = "/mnt/sd0/ploc/updateBbitstream.bin"
imageBlinux = "/mnt/sd0/ploc/updateBlinux.bin"
imageBappsw = "/mnt/sd0/ploc/updateBappsw.bin"
def pack_ploc_updater_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT: def pack_ploc_updater_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
@ -48,26 +57,50 @@ def pack_ploc_updater_test_into(object_id: bytearray, tc_queue: TcQueueT, op_cod
) )
if op_code == "0": if op_code == "0":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update partition A on NVM0")) tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update uboot on partition A"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_NVM0_A) + \ command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_UBOOT) + \
bytearray(ImagePathDefs.imageNvm0A, 'utf-8') bytearray(ImagePathDefs.imageAuboot, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command) command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if op_code == "1": if op_code == "1":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update partition B on NVM0")) tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update bitstream on parition A"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_NVM0_B) + \ command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_BITSTREAM) + \
bytearray(ImagePathDefs.imageNvm0B, 'utf-8') bytearray(ImagePathDefs.imageAbitsream, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command) command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if op_code == "2": if op_code == "2":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update partition A on NVM1")) tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update linux on partition A"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_NVM1_A) + \ command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_LINUX) + \
bytearray(ImagePathDefs.imageNvm1A, 'utf-8') bytearray(ImagePathDefs.imageAlinux, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command) command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if op_code == "3": if op_code == "3":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update partition B on NVM1")) tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update application on partition A"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_NVM1_B) + \ command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_APP_SW) + \
bytearray(ImagePathDefs.imageNvm1B, 'utf-8') bytearray(ImagePathDefs.imageAappsw, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "4":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update uboot on partition B"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_UBOOT) + \
bytearray(ImagePathDefs.imageBuboot, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "5":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update bitstream on parition B"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_BITSTREAM) + \
bytearray(ImagePathDefs.imageBbitsream, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "6":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update linux on partition B"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_LINUX) + \
bytearray(ImagePathDefs.imageBlinux, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "7":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update application on partition B"))
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_APP_SW) + \
bytearray(ImagePathDefs.imageBappsw, 'utf-8')
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command) command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())