implement support to software reboot into the system bootloader for flashing (using stm32flash); update modem and hotspot submodules;

4.04d_maint
Bryan Biedenkapp 2 years ago
parent 6542443ca7
commit 26457d7d85

@ -1 +1 @@
Subproject commit 40f9083e6117c48761f61d3a873a167e1f74b0b4 Subproject commit e23d16c25b37c8914ae15531f348d7397184c312

@ -1 +1 @@
Subproject commit a5b0952258a5db12c6928c2285aa0d898d98a54c Subproject commit ea08502d1ef4f2ac4c5487da7bae0db5002455fc

@ -674,6 +674,10 @@ int HostCal::run(int argc, char **argv)
case '`': case '`':
printStatus(); printStatus();
break; break;
case '!':
writeBootload();
end = true;
break;
case 'V': case 'V':
::LogInfo(__PROG_NAME__ " %s (built %s)", __VER__, __BUILD__); ::LogInfo(__PROG_NAME__ " %s (built %s)", __VER__, __BUILD__);
::LogInfo("Copyright (c) 2017-2024 Bryan Biedenkapp, N2PLL and DVMProject (https://github.com/dvmproject) Authors."); ::LogInfo("Copyright (c) 2017-2024 Bryan Biedenkapp, N2PLL and DVMProject (https://github.com/dvmproject) Authors.");
@ -747,6 +751,7 @@ void HostCal::displayHelp()
LogMessage(LOG_CAL, "General Commands:"); LogMessage(LOG_CAL, "General Commands:");
LogMessage(LOG_CAL, " <space> Toggle transmit"); LogMessage(LOG_CAL, " <space> Toggle transmit");
LogMessage(LOG_CAL, " ` Display current settings and operation mode"); LogMessage(LOG_CAL, " ` Display current settings and operation mode");
LogMessage(LOG_CAL, " ! Restart into Bootloader Mode (wipes configuration area!)");
LogMessage(LOG_CAL, " V Display version of host"); LogMessage(LOG_CAL, " V Display version of host");
LogMessage(LOG_CAL, " v Display version of firmware"); LogMessage(LOG_CAL, " v Display version of firmware");
LogMessage(LOG_CAL, " H/h Display help"); LogMessage(LOG_CAL, " H/h Display help");

@ -2566,6 +2566,9 @@ std::string Modem::cmdToString(uint8_t opcode)
case CMD_FLSH_WRITE: case CMD_FLSH_WRITE:
return std::string("FLSH_WRITE"); return std::string("FLSH_WRITE");
case CMD_RESET_MCU:
return std::string("CMD_RESET_MCU");
default: default:
return std::string(); return std::string();
} }

@ -182,6 +182,8 @@ namespace modem
CMD_FLSH_READ = 0xE0U, //! Read Flash Partition CMD_FLSH_READ = 0xE0U, //! Read Flash Partition
CMD_FLSH_WRITE = 0xE1U, //! Write Flash Partition CMD_FLSH_WRITE = 0xE1U, //! Write Flash Partition
CMD_RESET_MCU = 0xEAU, //! Soft Reboot MCU
CMD_DEBUG1 = 0xF1U, //! CMD_DEBUG1 = 0xF1U, //!
CMD_DEBUG2 = 0xF2U, //! CMD_DEBUG2 = 0xF2U, //!
CMD_DEBUG3 = 0xF3U, //! CMD_DEBUG3 = 0xF3U, //!

@ -139,7 +139,9 @@ HostSetup::HostSetup(const std::string& confFile) :
m_timeout(300U), m_timeout(300U),
m_timer(0U), m_timer(0U),
m_updateConfigFromModem(false), m_updateConfigFromModem(false),
m_hasFetchedStatus(false) m_hasFetchedStatus(false),
m_requestedStatus(false),
m_reqBootload(false)
{ {
/* stub */ /* stub */
} }
@ -1985,6 +1987,10 @@ bool HostSetup::writeFlash()
buffer[48U] = m_modem->m_rssiFinePot; buffer[48U] = m_modem->m_rssiFinePot;
} }
buffer[100U] = 0x00U;
if (m_reqBootload)
buffer[100U] |= 0x20U;
// software signature // software signature
std::string software; std::string software;
software.append(__NETVER__ " (built " __BUILD__ ")"); software.append(__NETVER__ " (built " __BUILD__ ")");
@ -2012,6 +2018,24 @@ bool HostSetup::writeFlash()
return true; return true;
} }
/* */
void HostSetup::writeBootload()
{
m_reqBootload = true;
if (writeFlash()) {
uint8_t buffer[4U];
::memset(buffer, 0x00U, 4U);
buffer[0U] = DVM_SHORT_FRAME_START;
buffer[1U] = 4U;
buffer[2U] = CMD_RESET_MCU;
m_modem->write(buffer, 4U);
return;
}
}
/* Helper to clock the calibration BER timer. */ /* Helper to clock the calibration BER timer. */
void HostSetup::timerClock() void HostSetup::timerClock()

@ -185,6 +185,8 @@ protected:
bool m_hasFetchedStatus; bool m_hasFetchedStatus;
bool m_requestedStatus; bool m_requestedStatus;
bool m_reqBootload;
/** /**
* @brief Modem port open callback. * @brief Modem port open callback.
* @param modem Instance of the Modem class. * @param modem Instance of the Modem class.
@ -320,6 +322,11 @@ protected:
*/ */
bool writeFlash(); bool writeFlash();
/**
* @brief
*/
void writeBootload();
/** /**
* @brief Helper to clock the calibration BER timer. * @brief Helper to clock the calibration BER timer.
*/ */

Loading…
Cancel
Save

Powered by TurnKey Linux.