Hello,
I modified a sample app "blinky" on segger, to include main.cpp instead of main.c
Then when I built, I got a compile time error stating in main.cpp "void main(void)" should be changed to "int main( )"
I changed and it compiled successfully.
Now when I am running it on the board, the execution is not entering "int main( )" rather the execution is straight away entering fault_s.S, as in the screenshot:
Kindly help me in understanding why this is happening so and how I can get the execution to return to "int main( )" ..?
PS. I am using blinky sample app on segger, only changes I made is
- Excluded main.c from the build
- Added main.cpp (Attaching for your reference)
- Added main.cpp in CMakeLists.txt (Attaching for your reference)
It is building successfully.
main.cpp
#include "stdio.h"
#include "stdint.h"
/**** 1. Demonstration On dynamic allocation ****/
class Sample
{
Sample* cPtr;
public:
Sample()
{
printf("ctor called \n");
cPtr = new Sample();
}
~Sample()
{
printf("dtor called \n");
delete cPtr;
cPtr = nullptr;
}
};
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
//#include <zephyr.h>
//#include <device.h>
//#include <devicetree.h>
//#include <drivers/gpio.h>
///* 1000 msec = 1 sec */
//#define SLEEP_TIME_MS 1000
///* The devicetree node identifier for the "led0" alias. */
//#define LED0_NODE DT_ALIAS(led0)
//#if DT_NODE_HAS_STATUS(LED0_NODE, okay)
//#define LED0 DT_GPIO_LABEL(LED0_NODE, gpios)
//#define PIN DT_GPIO_PIN(LED0_NODE, gpios)
//#define FLAGS DT_GPIO_FLAGS(LED0_NODE, gpios)
//#else
///* A build error here means your board isn't set up to blink an LED. */
//#error "Unsupported board: led0 devicetree alias is not defined"
//#define LED0 ""
//#define PIN 0
//#define FLAGS 0
//#endif
void func(void)
{
Sample obj;
}
int main(void)
{
const struct device *dev;
bool led_is_on = true;
int ret;
func();
//dev = device_get_binding(LED0);
//if (dev == NULL) {
// return;
//}
//ret = gpio_pin_configure(dev, PIN, GPIO_OUTPUT_ACTIVE | FLAGS);
//if (ret < 0) {
// return;
//}
//while (1) {
// gpio_pin_set(dev, PIN, (int)led_is_on);
// led_is_on = !led_is_on;
// k_msleep(SLEEP_TIME_MS);
//}
return 0;
}
CMakeLists.txt# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(blinky)
target_sources(app PRIVATE D:/CPP_Test/cpp_files/main.cpp src/main.c)