supervisor update commanding

This commit is contained in:
Jakob.Meier 2021-08-20 08:40:18 +02:00
parent c125a62612
commit a0d586d753
3 changed files with 66 additions and 29 deletions

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())