debugging mem exception
This commit is contained in:
parent
cc138c6886
commit
eccf453415
@ -48,10 +48,10 @@ This demo can be run on a STM32H743ZI-Nucleo board with the FreeRTOS OSAL.
|
||||
|
||||
## General Information
|
||||
|
||||
The board is flashed and debugged with OpenOCD and this README specifies on how
|
||||
to make this work with the Eclipse IDE. Other IDEs or the command line can be used as well as long
|
||||
as long as OpenOCD integration is given. The example demo uses newlib nano (glibc).
|
||||
Some system calls were overriden so the C and C++ stdio functions work. IO is sent via the HUART3,
|
||||
The board is flashed and debugged with [OpenOCD](https://openocd.org/) and this README specifies on
|
||||
how to make this work with the Eclipse IDE. Other IDEs or the command line can be used as well as
|
||||
long as long as OpenOCD integration is given. The example demo uses newlib nano (glibc).
|
||||
Some system calls were overriden so the C and C++ `stdio` functions work. IO is sent via the HUART3,
|
||||
so debug output can be read directly from the USB connection to the board.
|
||||
|
||||
## Prerequisites
|
||||
|
@ -16,7 +16,7 @@ ReturnValue_t SpiTest::performOperation(uint8_t opCode) {
|
||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
std::array<uint8_t, 3> recBuf;
|
||||
std::array<uint8_t, 3> recBuf{};
|
||||
uint8_t *recPtr = recBuf.data();
|
||||
size_t readLen = 0;
|
||||
return spiComIF.readReceivedMessage(&spiCookie, &recPtr, &readLen);
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
class SpiTest {
|
||||
public:
|
||||
SpiTest(SpiComIF &spiComIF);
|
||||
explicit SpiTest(SpiComIF &spiComIF);
|
||||
|
||||
ReturnValue_t performOperation(uint8_t opCode = 0);
|
||||
|
||||
|
@ -17,15 +17,16 @@
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
void assemlyDemo();
|
||||
|
||||
void InitMission::createTasks() {
|
||||
TaskFactory *taskFactory = TaskFactory::instance();
|
||||
|
||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||
#if OBSW_ADD_CORE_COMPONENTS == 1
|
||||
/* TMTC Distribution */
|
||||
PeriodicTaskIF *distributerTask =
|
||||
taskFactory->createPeriodicTask("DIST", 5, 1024 * 2, 0.2, nullptr);
|
||||
ReturnValue_t result =
|
||||
distributerTask->addComponent(objects::CCSDS_DISTRIBUTOR);
|
||||
result = distributerTask->addComponent(objects::CCSDS_DISTRIBUTOR);
|
||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||
task::printInitError("CCSDS distributor", objects::CCSDS_DISTRIBUTOR);
|
||||
}
|
||||
@ -38,6 +39,7 @@ void InitMission::createTasks() {
|
||||
task::printInitError("TM funnel", objects::TM_FUNNEL);
|
||||
}
|
||||
|
||||
#if OBSW_ADD_LWIP_COMPONENTS == 1
|
||||
/* UDP bridge */
|
||||
PeriodicTaskIF *udpBridgeTask = TaskFactory::instance()->createPeriodicTask(
|
||||
"UDP_UNIX_BRIDGE", 6, 1024 * 2, 0.2, nullptr);
|
||||
@ -51,6 +53,7 @@ void InitMission::createTasks() {
|
||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||
task::printInitError("UDP polling task", objects::UDP_POLLING_TASK);
|
||||
}
|
||||
#endif
|
||||
|
||||
PeriodicTaskIF *eventManagerTask =
|
||||
TaskFactory::instance()->createPeriodicTask("EVENT_MGMT", 4, 1024 * 2,
|
||||
@ -183,8 +186,10 @@ void InitMission::createTasks() {
|
||||
#if OBSW_ADD_CORE_COMPONENTS == 1
|
||||
distributerTask->startTask();
|
||||
eventManagerTask->startTask();
|
||||
#if OBSW_ADD_LWIP_COMPONENTS == 1
|
||||
udpBridgeTask->startTask();
|
||||
udpPollingTask->startTask();
|
||||
#endif
|
||||
#endif /* OBSW_ADD_CORE_COMPONENTS == 1 */
|
||||
|
||||
#if OBSW_ADD_PUS_STACK == 1
|
||||
@ -221,8 +226,7 @@ void InitMission::createTasks() {
|
||||
#endif
|
||||
|
||||
#if OBSW_ADD_DEVICE_HANDLER_DEMO
|
||||
HasModesIF *assembly =
|
||||
ObjectManager::instance()->get<HasModesIF>(objects::TEST_ASSEMBLY);
|
||||
auto *assembly = ObjectManager::instance()->get<HasModesIF>(objects::TEST_ASSEMBLY);
|
||||
if (assembly == nullptr) {
|
||||
return;
|
||||
}
|
||||
@ -236,16 +240,20 @@ void InitMission::createTasks() {
|
||||
#endif
|
||||
|
||||
TaskFactory::delayTask(5000);
|
||||
CommandMessage modeMessage;
|
||||
ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND,
|
||||
DeviceHandlerIF::MODE_NORMAL,
|
||||
TestAssembly::submodes::DUAL);
|
||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||
sif::info << "Commanding Test Assembly to Normal, Dual" << std::endl;
|
||||
#else
|
||||
sif::printInfo("Commanding Test Assembly to Normal, Dual \n");
|
||||
#endif
|
||||
MessageQueueSenderIF::sendMessage(assembly->getCommandQueue(), &modeMessage,
|
||||
MessageQueueIF::NO_QUEUE);
|
||||
|
||||
#endif /* OBSW_ADD_DEVICE_HANDLER_DEMO */
|
||||
}
|
||||
|
||||
void assemblyDemo(HasModesIF* assembly) {
|
||||
CommandMessage modeMessage;
|
||||
ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND,
|
||||
DeviceHandlerIF::MODE_NORMAL,
|
||||
TestAssembly::submodes::DUAL);
|
||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||
sif::info << "Commanding Test Assembly to Normal, Dual" << std::endl;
|
||||
#else
|
||||
sif::printInfo("Commanding Test Assembly to Normal, Dual \n");
|
||||
#endif
|
||||
MessageQueueSenderIF::sendMessage(assembly->getCommandQueue(), &modeMessage,
|
||||
MessageQueueIF::NO_QUEUE);
|
||||
}
|
@ -51,17 +51,19 @@ void ObjectFactory::produce(void *args) {
|
||||
new PoolManager(objects::IPC_STORE, poolCfg);
|
||||
}
|
||||
|
||||
#if OBSW_ADD_LWIP_COMPONENTS == 1
|
||||
/* UDP Server */
|
||||
new TmTcLwIpUdpBridge(objects::UDP_BRIDGE, objects::CCSDS_DISTRIBUTOR,
|
||||
objects::TM_STORE, objects::TC_STORE);
|
||||
new UdpTcLwIpPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE,
|
||||
&gnetif);
|
||||
#endif
|
||||
#endif /* OBSW_ADD_CORE_COMPONENTS == 1 */
|
||||
|
||||
ObjectFactory::produceGenericObjects();
|
||||
|
||||
/* Test Device Handler */
|
||||
new STM32TestTask(objects::TEST_TASK, false, true);
|
||||
new STM32TestTask(objects::TEST_TASK, true, true);
|
||||
|
||||
#if OBSW_PERFORM_L3GD20H_TEST == 1
|
||||
|
||||
|
@ -1,6 +1,4 @@
|
||||
#include "OBSWConfig.h"
|
||||
#include "OBSWVersion.h"
|
||||
#include "boardconfig.h"
|
||||
#include "hardware_init.h"
|
||||
|
||||
#if OBSW_ADD_LWIP_COMPONENTS == 1
|
||||
@ -16,7 +14,6 @@
|
||||
#include <fsfw/serviceinterface/ServiceInterface.h>
|
||||
#include <fsfw/tasks/TaskFactory.h>
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "cmsis_os.h"
|
||||
#include "task.h"
|
||||
|
||||
@ -52,8 +49,7 @@ int main() {
|
||||
osKernelStart();
|
||||
|
||||
/* Should not be reached, scheduler should now be running. */
|
||||
for (;;) {
|
||||
}
|
||||
for (;;) {}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -84,5 +80,5 @@ void initTask(void *parameters) {
|
||||
sif::printInfo("Creating tasks..\n\r");
|
||||
#endif
|
||||
InitMission::createTasks();
|
||||
TaskFactory::instance()->deleteTask(nullptr);
|
||||
TaskFactory::deleteTask(nullptr);
|
||||
}
|
||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
||||
Subproject commit a5245d55866af138b1f2d86d560b59f3a1bd3255
|
||||
Subproject commit 44402883b509f2116d48269edff3068a63c4c204
|
Loading…
Reference in New Issue
Block a user