Helper library to use modem_ref driver.
Dependencies: WizziCom WizziDebug ram_fs modem_ref
Dependents: D7A_Localisation D7A_1x_demo_send_file_data_and_forget D7A_1x_demo_CodeUpgradeProtocol D7A_1x_demo_LoRaWAN ... more
Diff: modem_cup/modem_cup.h
- Revision:
- 75:dad2f09cb870
diff -r 99c556ae5b35 -r dad2f09cb870 modem_cup/modem_cup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modem_cup/modem_cup.h Tue Sep 07 15:59:23 2021 +0000 @@ -0,0 +1,73 @@ +#include "mbed.h" +#include "bin_SH2050.h" +#include "bootloader_SH2050.h" +#include "modem_d7a.h" + +//------------------------------------------------------------------ +// CUP Package files structure: +// | SIZE | ADDR | BINARY | PAD | CRC | Next Archive +// | 4B | 4B | XB | 0-3 B | 4B | ... +// | | | ... +// |<------------------CRC----------------------->| | ... +// |<-----------------------SIZE------------------------>| ... +// +// Archive must be word-aligned +// Archives can be concatenated +// ADDR is the destination address of the installed archive +// SIZE accounts for whole archive (including itself) +// Binary size must be multiple of word (i.e pad=4) +// CRC calculated on whole archive (obviously excluding itself) +// Values (size,addr) are stored little-endian + +//====================================================================== +// cup_cfg_t +//---------------------------------------------------------------------- +/// @brief This is the structure of the CUP Config FILE. +/// This file _MUST_ always be located a the same place (EEPROM +/// Origin) as BOOT/CUP access it in a hardcoded way. +/// !! Do NOT touch this except if you're a CUP Master !! +//====================================================================== +TYPEDEF_STRUCT_PACKED +{ + // The CUP Command + uint16_t cmd; + // Number of Archives to be CUP'ed + uint16_t arch_nb; + // This field has 2 meanings: + // - when read-out it gives start address of CUP-Code file + // - when written (for a CUP start) it gives the offset (in bytes) at + // which the first archive is stored in CUP-Code file + uint32_t src_offset; + // CRC32 of the arch_nb concatenated archives starting at offset + uint32_t signature; + // TODO: Deciphering key. For now CUP MAX size + uint32_t key; + // Debug / Uart config + uint32_t dbg_cfg; +} cup_cfg_t; + +TYPEDEF_STRUCT_PACKED +{ + uint8_t* data; + uint8_t cfg_fid; + uint8_t code_fid; + uint32_t code_size; + uint32_t data_size; + uint32_t local_mtu; + uint32_t nb_archives; + uint32_t signature; + uint32_t mfg_id; + uint32_t dev_id; + uint32_t hw_id; + uint8_t fw_major; + uint8_t fw_minor; + uint16_t fw_patch; + uint32_t fw_hash; + uint8_t target_fw_major; + uint8_t target_fw_minor; + uint8_t target_fw_patch; + uint32_t target_fw_hash; +} cup_param_t; + +void modem_cup_update(revision_t* rev); + \ No newline at end of file