6 years, 10 months ago.

I'd like to modify the CellLocate code on mbed-C027 to work, but it will stack overflow. Why?

I'd like to modify the CellLocate code on mbed-C027 to work, but it will stack overflow.

When I operate the code of 2, the stack overflows like [1]. Both "mbed-os" and "support_C027" have been revised to the latest version.

In addition, MDM.h was fixed only one place.

1937 /// if (_dev.dev == DEV_LISA_U2_ 03S || _dev.dev == DEV_SARA_U2) {
1938 if (_dev.dev == DEV_LISA_U2_ 03S || _dev.dev == DEV_SARA_U2 || _dev.dev == DEV_LISA_U2) {

Also referred to https://developer.mbed.org/questions/75770/C027-support-test-CELLOCATE-broken/.

[3] is compile log. [4] is compile environmnet.

[1]

*** Test Start ***
Modem::wakeup
Modem::init
Modem::devStatus
  Device:       LISA-U2
  Power Save:   Disabled
  CCID:         8981100023561854336
  IMEI:         352648069548865
  IMSI:         440103148290527
  Manufacturer: u-blox
  Model:        LISA-U200
  Version:      22.90,A01.01
Modem::register
Modem::netStatus
  CSD Registration:   Home
  PSD Registration:   Home
  Access Technology:  3G
  Signal Strength:    -61 dBm
  Bit Error Rate:     43
  Operator:           NTT DOCOMO
  Location Area Code: 00EC
  Cell ID:            04484048
Modem::join
Modem:IP 100.97.120.197
if (!mdm.cellLocSrvTcp("TOKEN"))
_dev.dev=2
mdm.cellLocConfig(0)
while(1)
CellLocate Request
Waiting for CellLocate...
CellLocate Request
Waiting for CellLocate...
CellLocate Request
RTX error code: 0x00000001, task ID: 0x100023A4   <------------------------------

2

int main(void)
{
///    int ret;
    char buf[2048] = "";
    // Create the GPS object
#if 1   // use GPSI2C class
    GPSI2C gps;
#else   // or GPSSerial class
    GPSSerial gps;
#endif
    //give time to module for powering up (ms)
    wait_ms(1000);
    // Create the modem object
    MDMSerial mdm;
    mdm.set_flow_control(SerialBase::RTSCTS, MDMRTS, MDMCTS);
    wait(5);

    printf("*** Test Start ***\r\n");

    //mdm.setDebug(4); // enable this for debugging issues
    // initialize the modem
    MDMParser::DevStatus devStatus = {};
    MDMParser::NetStatus netStatus = {};
    bool mdmOk = mdm.init(SIMPIN, &devStatus);
    mdm.dumpDevStatus(&devStatus);
    if (mdmOk) {
        // wait until we are connected
        mdmOk = mdm.registerNet(&netStatus);
        mdm.dumpNetStatus(&netStatus);
    }
    if (mdmOk)
    {
        // join the internet connection
        MDMParser::IP ip = mdm.join(APN,USERNAME,PASSWORD);
        if (ip == NOIP)
        {
        	printf("Not able to join network");
        } else {
        	mdm.dumpIp(ip);
        }
    }

    char link[128] = "";
    unsigned int i = 0xFFFFFFFF;
    const int wait = 1000;
    bool abort = false;

///    const int sensorMask = 3;  // Hybrid: GNSS + CellLocate
///    const int timeoutMargin = 5; // seconds
    const int submitPeriod = 6; // 1 minutes in seconds
///    const int targetAccuracy = 1; // meters
    unsigned int j = submitPeriod * 1000/wait;
    bool cellLocWait = false;
    MDMParser::CellLocData loc;

    //Token can be released from u-blox site, when you got one replace "TOKEN" below
    /// if (!mdm.cellLocSrvHttp("TOKEN"))

    printf("if (!mdm.cellLocSrvTcp(\"TOKEN\")) \r\n");	///
    if (!mdm.cellLocSrvTcp("TOKEN"))
            mdm.cellLocSrvUdp();
    /// mdm.cellLocConfigSensor(1);   	// Deep scan mode
    printf("mdm.cellLocConfig(0) \r\n");				///
    mdm.cellLocConfig(1);				// Deep scan mode  			 +ULOCCELL
    printf("while(1)\r\n");								///
    while (!abort) {
        if (mdmOk && (j++ == submitPeriod * 1000/wait)) {
            j=0;
            printf("CellLocate Request\r\n");
            /// mdm.cellLocRequest(sensorMask, submitPeriod-timeoutMargin, targetAccuracy);
            mdm.cellLocRequest(MDMParser::CELL_LOCATE, 15, 1, MDMParser::CELL_DETAILED, 1);
            cellLocWait = true;
        }

        if (cellLocWait && mdm.cellLocGetData(&loc)){
            cellLocWait = false;
            printf("CellLocate position received, sensor_used: %d,  \r\n", loc.sensor );
            printf("  latitude: %0.5f, longitude: %0.5f, altitute: %d\r\n", loc.latitude, loc.longitude, loc.altitutude);
            if (loc.sensor == 1)
                printf("  uncertainty: %d, speed: %d, direction: %d, vertical_acc: %d, satellite used: %d \r\n", loc.uncertainty,loc.speed,loc.direction,loc.verticalAcc,loc.svUsed);
            if (loc.sensor == 1 || loc.sensor == 2)
            sprintf(link, "I am here!\n"
                        "https://maps.google.com/?q=%.5f,%.5f", loc.latitude, loc.longitude);
        }

        if (cellLocWait && (j%100 == 0 ))
            printf("Waiting for CellLocate...\r\n");

/*
        if (mdmOk && (i++ == 5000/wait)) {
                    i = 0;
                    // check the network status
                    if (mdm.checkNetStatus(&netStatus)) {
                        mdm.dumpNetStatus(&netStatus, fprintf, stdout);
                    }

                    // checking unread sms
                    int ix[8];
                    int n = mdm.smsList("REC UNREAD", ix, 8);
                    if (8 < n) n = 8;
                    while (0 < n--)
                    {
                        char num[32];
                        printf("Unread SMS at index %d\r\n", ix[n]);
                        if (mdm.smsRead(ix[n], num, buf, sizeof(buf))) {
                            printf("Got SMS from \"%s\" with text \"%s\"\r\n", num, buf);
                            printf("Delete SMS at index %d\r\n", ix[n]);
                            mdm.smsDelete(ix[n]);
                            // provide a reply
                            const char* reply = "Hello my friend";
                            if (strstr(buf, "here are you"))
                                reply = *link ? link : "I don't know"; // reply wil location link
                            else if (strstr(buf, "hutdown"))
                                abort = true, reply = "bye bye";
                            printf("Send SMS reply \"%s\" to \"%s\"\r\n", reply, num);
                            mdm.smsSend(num, reply);
                        }
                    }
        }
*/
        Thread::wait(wait);
    }

    mdm.disconnect();
    //DigitalOut led(LED1);
    mdm.powerOff();
    gps.powerOff();
    return 0;
}

3

mbed compile -j4 -t GCC_ARM -m UBLOX_C027 
Building project mbed-os-example-C027 (UBLOX_C027, GCC_ARM)
Scan: .
Scan: FEATURE_BLE
Scan: FEATURE_COMMON_PAL
Scan: FEATURE_LWIP
Scan: FEATURE_UVISOR
Scan: FEATURE_ETHERNET_HOST
Scan: FEATURE_LOWPAN_BORDER_ROUTER
Scan: FEATURE_LOWPAN_HOST
Scan: FEATURE_LOWPAN_ROUTER
Scan: FEATURE_NANOSTACK
Scan: FEATURE_NANOSTACK_FULL
Scan: FEATURE_THREAD_BORDER_ROUTER
Scan: FEATURE_THREAD_END_DEVICE
Scan: FEATURE_THREAD_ROUTER
Scan: FEATURE_STORAGE
Scan: env
Scan: mbed
Compile [  0.4%]: MQTTConnectClient.c
Compile [  0.8%]: SerialPipe.cpp
[Warning] SerialPipe.cpp@9,50: 'void mbed::SerialBase::attach(T*, void (T::*)(), mbed::SerialBase::IrqType) [with T = SerialPipe]' is deprecated (declared at ./mbed-os/drivers/SerialBase.h:117): The attach function does not support cv-qualifiers. Replaced by attach(callback(obj, method), type). [since mbed-os-5.1] [-Wdeprecated-declarations]
[Warning] SerialPipe.cpp@78,50: 'void mbed::SerialBase::attach(T*, void (T::*)(), mbed::SerialBase::IrqType) [with T = SerialPipe]' is deprecated (declared at ./mbed-os/drivers/SerialBase.h:117): The attach function does not support cv-qualifiers. Replaced by attach(callback(obj, method), type). [since mbed-os-5.1] [-Wdeprecated-declarations]
[Warning] SerialPipe.cpp@107,27: suggest braces around empty body in an 'else' statement [-Wempty-body]
Compile [  1.1%]: MQTTConnectServer.c
Compile [  1.5%]: GPS.cpp
[Warning] GPS.cpp@135,62: narrowing conversion of 'len' from 'int' to 'char' inside { } is ill-formed in C++11 [-Wnarrowing]
[Warning] GPS.cpp@135,57: narrowing conversion of '(len >> 8)' from 'int' to 'char' inside { } is ill-formed in C++11 [-Wnarrowing]
Compile [  1.9%]: MQTTDeserializePublish.c
Compile [  2.3%]: MQTTSerializePublish.c
Compile [  2.7%]: MQTTSubscribeClient.c
Compile [  3.0%]: MQTTPacket.c
Compile [  3.4%]: MQTTSubscribeServer.c
Compile [  3.8%]: MQTTUnsubscribeClient.c
Compile [  4.2%]: MDM.cpp
[Warning] MDMAPN.h@126,27: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@108,33: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@111,35: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@289,52: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@332,24: suggest braces around empty body in an 'if' statement [-Wempty-body]
[Warning] MDM.cpp@341,24: suggest braces around empty body in an 'if' statement [-Wempty-body]
[Warning] MDM.cpp@603,48: suggest braces around empty body in an 'if' statement [-Wempty-body]
[Warning] MDM.cpp@756,33: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@952,13: suggest braces around empty body in an 'if' statement [-Wempty-body]
[Warning] MDM.cpp@971,24: suggest braces around empty body in an 'if' statement [-Wempty-body]
[Warning] MDM.cpp@1043,24: suggest braces around empty body in an 'if' statement [-Wempty-body]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@13,45: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@1356,33: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@1385,35: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@19,46: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@19,46: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@19,46: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@2221,27: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MDM.cpp@2231,27: comparison between signed and unsigned integer expressions [-Wsign-compare]
Compile [  4.5%]: MQTTUnsubscribeServer.c
Compile [  4.9%]: AnalogIn.cpp
Compile [  5.3%]: main.cpp
[Warning] main.cpp@37,10: unused variable 'buf' [-Wunused-variable]
[Warning] main.cpp@77,18: unused variable 'i' [-Wunused-variable]
Compile [  5.7%]: BusInOut.cpp
Compile [  6.1%]: BusIn.cpp
Compile [  6.4%]: BusOut.cpp
Compile [  6.8%]: Milkcocoa.cpp
[Warning] Milkcocoa.cpp@8,1: "DBG" redefined
[Warning] MQTTmbed.h@23,28: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] MQTTClient.h@85,55: operation on '((MQTT::PacketId*)this)->MQTT::PacketId::next' may be undefined [-Wsequence-point]
[Warning] Milkcocoa.cpp@101,51: 'osStatus rtos::Thread::start(T*, M) [with T = void(const void*); M = Milkcocoa*]' is deprecated (declared at ./mbed-os/rtos/Thread.h:215): The start function does not support cv-qualifiers. Replaced by thread.start(callback(obj, method)). [since mbed-os-5.1] [-Wdeprecated-declarations]
[Warning] Milkcocoa.cpp@102,51: 'osStatus rtos::Thread::start(T*, M) [with T = void(const void*); M = Milkcocoa*]' is deprecated (declared at ./mbed-os/rtos/Thread.h:215): The start function does not support cv-qualifiers. Replaced by thread.start(callback(obj, method)). [since mbed-os-5.1] [-Wdeprecated-declarations]
[Warning] Milkcocoa.cpp@116,51: 'osStatus rtos::Thread::start(T*, M) [with T = void(const void*); M = Milkcocoa*]' is deprecated (declared at ./mbed-os/rtos/Thread.h:215): The start function does not support cv-qualifiers. Replaced by thread.start(callback(obj, method)). [since mbed-os-5.1] [-Wdeprecated-declarations]
[Warning] Milkcocoa.cpp@117,51: 'osStatus rtos::Thread::start(T*, M) [with T = void(const void*); M = Milkcocoa*]' is deprecated (declared at ./mbed-os/rtos/Thread.h:215): The start function does not support cv-qualifiers. Replaced by thread.start(callback(obj, method)). [since mbed-os-5.1] [-Wdeprecated-declarations]
Compile [  7.2%]: CAN.cpp
[Warning] CAN.cpp@29,23: comparison between signed and unsigned integer expressions [-Wsign-compare]
Compile [  7.6%]: Ethernet.cpp
Compile [  8.0%]: FileBase.cpp
Compile [  8.3%]: FilePath.cpp
Compile [  8.7%]: FileSystemLike.cpp
Compile [  9.1%]: FlashIAP.cpp
Compile [  9.5%]: I2CSlave.cpp
Compile [  9.8%]: I2C.cpp
Compile [ 10.2%]: LocalFileSystem.cpp
Compile [ 10.6%]: InterruptIn.cpp
Compile [ 11.0%]: InterruptManager.cpp
Compile [ 11.4%]: RawSerial.cpp
Compile [ 11.7%]: SPI.cpp
Compile [ 12.1%]: SPISlave.cpp
Compile [ 12.5%]: Serial.cpp
Compile [ 12.9%]: SerialBase.cpp
Compile [ 13.3%]: Stream.cpp
Compile [ 13.6%]: Ticker.cpp
Compile [ 14.0%]: Timeout.cpp
Compile [ 14.4%]: TimerEvent.cpp
Compile [ 14.8%]: Timer.cpp
Compile [ 15.2%]: equeue.c
Compile [ 15.5%]: equeue_posix.c
Compile [ 15.9%]: EventQueue.cpp
Compile [ 16.3%]: emac_lwip.c
Compile [ 16.7%]: emac_stack_lwip.cpp
Compile [ 17.0%]: equeue_mbed.cpp
Compile [ 17.4%]: lwip_checksum.c
Compile [ 17.8%]: lwip_memcpy.c
Compile [ 18.2%]: lpc_phy_dp83848.c
Compile [ 18.6%]: lwip_sys_arch.c
Compile [ 18.9%]: EthernetInterface.cpp
Compile [ 19.3%]: lpc17_emac.c
[Warning] lpc17_emac.c@405,18: unused variable 'ethhdr' [-Wunused-variable]
Compile [ 19.7%]: lwip_err.c
Compile [ 20.1%]: lwip_api_lib.c
Compile [ 20.5%]: lwip_netbuf.c
Compile [ 20.8%]: lwip_netdb.c
Compile [ 21.2%]: lwip_api_msg.c
Compile [ 21.6%]: lwip_netifapi.c
Compile [ 22.0%]: lwip_sockets.c
Compile [ 22.3%]: lwip_tcpip.c
Compile [ 22.7%]: lwip_autoip.c
Compile [ 23.1%]: lwip_etharp.c
Compile [ 23.5%]: lwip_icmp.c
Compile [ 23.9%]: lwip_igmp.c
Compile [ 24.2%]: lwip_dhcp.c
Compile [ 24.6%]: lwip_ip4.c
Compile [ 25.0%]: lwip_ip4_addr.c
Compile [ 25.4%]: lwip_dhcp6.c
Compile [ 25.8%]: lwip_ip4_frag.c
Compile [ 26.1%]: lwip_ethip6.c
Compile [ 26.5%]: lwip_icmp6.c
Compile [ 26.9%]: lwip_inet6.c
Compile [ 27.3%]: lwip_ip6.c
Compile [ 27.7%]: lwip_ip6_addr.c
Compile [ 28.0%]: lwip_nd6.c
Compile [ 28.4%]: lwip_mld6.c
Compile [ 28.8%]: lwip_ip6_frag.c
Compile [ 29.2%]: lwip_inet_chksum.c
Compile [ 29.5%]: lwip_def.c
Compile [ 29.9%]: lwip_dns.c
Compile [ 30.3%]: lwip_init.c
Compile [ 30.7%]: lwip_ip.c
Compile [ 31.1%]: lwip_mem.c
Compile [ 31.4%]: lwip_netif.c
Compile [ 31.8%]: lwip_memp.c
Compile [ 32.2%]: lwip_raw.c
Compile [ 32.6%]: lwip_pbuf.c
Compile [ 33.0%]: lwip_sys.c
Compile [ 33.3%]: lwip_stats.c
Compile [ 33.7%]: lwip_tcp_in.c
Compile [ 34.1%]: lwip_tcp.c
Compile [ 34.5%]: lwip_tcp_out.c
Compile [ 34.8%]: lwip_timeouts.c
Compile [ 35.2%]: lwip_ethernet.c
Compile [ 35.6%]: lwip_ethernetif.c
Compile [ 36.0%]: lwip_lowpan6.c
Compile [ 36.4%]: lwip_udp.c
Compile [ 36.7%]: lwip_stack.c
Compile [ 37.1%]: Dir.cpp
Compile [ 37.5%]: FileSystem.cpp
Compile [ 37.9%]: File.cpp
Compile [ 38.3%]: ccsbcs.cpp
Compile [ 38.6%]: HeapBlockDevice.cpp
Compile [ 39.0%]: SlicingBlockDevice.cpp
Compile [ 39.4%]: ChainingBlockDevice.cpp
Compile [ 39.8%]: greentea_serial.cpp
Compile [ 40.2%]: ff.cpp
Compile [ 40.5%]: FATFileSystem.cpp
Compile [ 40.9%]: greentea_metrics.cpp
[Warning] greentea_metrics.cpp@37,28: 'mutex' defined but not used [-Wunused-variable]
Compile [ 41.3%]: greentea_test_env.cpp
Compile [ 41.7%]: unity.c
Compile [ 42.0%]: mbed-utest-shim.cpp
Compile [ 42.4%]: unity_handler.cpp
Compile [ 42.8%]: utest_case.cpp
Compile [ 43.2%]: utest_default_handlers.cpp
Compile [ 43.6%]: utest_greentea_handlers.cpp
Compile [ 43.9%]: utest_stack_trace.cpp
Compile [ 44.3%]: mbed_trng.c
Compile [ 44.7%]: utest_harness.cpp
Compile [ 45.1%]: utest_shim.cpp
Compile [ 45.5%]: arc4.c
Compile [ 45.8%]: utest_types.cpp
Compile [ 46.2%]: aesni.c
Compile [ 46.6%]: aes.c
Compile [ 47.0%]: asn1write.c
Compile [ 47.3%]: asn1parse.c
Compile [ 47.7%]: base64.c
Compile [ 48.1%]: camellia.c
Compile [ 48.5%]: blowfish.c
Compile [ 48.9%]: certs.c
Compile [ 49.2%]: ccm.c
Compile [ 49.6%]: cmac.c
Compile [ 50.0%]: cipher.c
Compile [ 50.4%]: cipher_wrap.c
Compile [ 50.8%]: bignum.c
Compile [ 51.1%]: ctr_drbg.c
Compile [ 51.5%]: des.c
Compile [ 51.9%]: debug.c
Compile [ 52.3%]: dhm.c
Compile [ 52.7%]: ecdh.c
Compile [ 53.0%]: ecjpake.c
Compile [ 53.4%]: ecdsa.c
Compile [ 53.8%]: entropy.c
Compile [ 54.2%]: entropy_poll.c
Compile [ 54.5%]: ecp_curves.c
Compile [ 54.9%]: havege.c
Compile [ 55.3%]: error.c
Compile [ 55.7%]: ecp.c
Compile [ 56.1%]: gcm.c
Compile [ 56.4%]: md2.c
Compile [ 56.8%]: md4.c
Compile [ 57.2%]: hmac_drbg.c
Compile [ 57.6%]: md5.c
Compile [ 58.0%]: md.c
Compile [ 58.3%]: memory_buffer_alloc.c
Compile [ 58.7%]: net_sockets.c
Compile [ 59.1%]: md_wrap.c
Compile [ 59.5%]: padlock.c
Compile [ 59.8%]: oid.c
Compile [ 60.2%]: pk.c
Compile [ 60.6%]: pem.c
Compile [ 61.0%]: pk_wrap.c
Compile [ 61.4%]: pkcs11.c
Compile [ 61.7%]: pkcs12.c
Compile [ 62.1%]: pkcs5.c
Compile [ 62.5%]: platform.c
Compile [ 62.9%]: ripemd160.c
Compile [ 63.3%]: pkwrite.c
Compile [ 63.6%]: pkparse.c
Compile [ 64.0%]: sha1.c
Compile [ 64.4%]: ssl_cache.c
Compile [ 64.8%]: rsa.c
Compile [ 65.2%]: ssl_ciphersuites.c
Compile [ 65.5%]: sha512.c
Compile [ 65.9%]: sha256.c
Compile [ 66.3%]: ssl_cli.c
Compile [ 66.7%]: ssl_cookie.c
Compile [ 67.0%]: ssl_srv.c
Compile [ 67.4%]: ssl_ticket.c
Compile [ 67.8%]: threading.c
Compile [ 68.2%]: ssl_tls.c
Compile [ 68.6%]: timing.c
Compile [ 68.9%]: version.c
Compile [ 69.3%]: version_features.c
Compile [ 69.7%]: x509_create.c
Compile [ 70.1%]: x509.c
Compile [ 70.5%]: x509_csr.c
Compile [ 70.8%]: x509_crl.c
Compile [ 71.2%]: x509write_crt.c
Compile [ 71.6%]: x509write_csr.c
Compile [ 72.0%]: xtea.c
Compile [ 72.3%]: x509_crt.c
Compile [ 72.7%]: NetworkInterface.cpp
Compile [ 73.1%]: SocketAddress.cpp
Compile [ 73.5%]: NetworkStack.cpp
Compile [ 73.9%]: Socket.cpp
Compile [ 74.2%]: TCPServer.cpp
Compile [ 74.6%]: UDPSocket.cpp
Compile [ 75.0%]: TCPSocket.cpp
Compile [ 75.4%]: WiFiAccessPoint.cpp
Compile [ 75.8%]: mbed_lp_ticker_api.c
Compile [ 76.1%]: mbed_gpio.c
Compile [ 76.5%]: nsapi_dns.cpp
Compile [ 76.9%]: mbed_pinmap_common.c
Compile [ 77.3%]: mbed_us_ticker_api.c
Compile [ 77.7%]: mbed_ticker_api.c
Compile [ 78.0%]: mbed_alloc_wrappers.cpp
Compile [ 78.4%]: CallChain.cpp
Compile [ 78.8%]: mbed_assert.c
Compile [ 79.2%]: mbed_application.c
Compile [ 79.5%]: mbed_board.c
Compile [ 79.9%]: mbed_critical.c
Compile [ 80.3%]: mbed_error.c
Compile [ 80.7%]: mbed_interface.c
Compile [ 81.1%]: mbed_mem_trace.c
Compile [ 81.4%]: mbed_rtc_time.cpp
Compile [ 81.8%]: mbed_semihost_api.c
Compile [ 82.2%]: mbed_wait_api_no_rtos.c
Compile [ 82.6%]: mbed_stats.c
Compile [ 83.0%]: mbed_retarget.cpp
Compile [ 83.3%]: Mutex.cpp
Compile [ 83.7%]: Semaphore.cpp
Compile [ 84.1%]: RtosTimer.cpp
Compile [ 84.5%]: mbed_wait_api_rtos.cpp
Compile [ 84.8%]: rtos_idle.c
Compile [ 85.2%]: HAL_CM3.S
Compile [ 85.6%]: RTX_Conf_CM.c
Compile [ 86.0%]: HAL_CM.c
Compile [ 86.4%]: SVC_Table.S
Compile [ 86.7%]: Thread.cpp
Compile [ 87.1%]: rt_Event.c
Compile [ 87.5%]: rt_List.c
Compile [ 87.9%]: rt_Mailbox.c
Compile [ 88.3%]: rt_MemBox.c
Compile [ 88.6%]: rt_OsEventObserver.c
Compile [ 89.0%]: rt_Mutex.c
Compile [ 89.4%]: rt_Robin.c
Compile [ 89.8%]: rt_CMSIS.c
Compile [ 90.2%]: rt_Semaphore.c
Compile [ 90.5%]: rt_System.c
Compile [ 90.9%]: rt_Time.c
Compile [ 91.3%]: rt_Task.c
Compile [ 91.7%]: rt_Timer.c
Compile [ 92.0%]: mbed_overrides.c
Compile [ 92.4%]: C027_api.c
Compile [ 92.8%]: analogin_api.c
Compile [ 93.2%]: analogout_api.c
Compile [ 93.6%]: startup_LPC17xx.S
Compile [ 93.9%]: can_api.c
Compile [ 94.3%]: cmsis_nvic.c
Compile [ 94.7%]: system_LPC17xx.c
Compile [ 95.1%]: gpio_api.c
Compile [ 95.5%]: gpio_irq_api.c
Compile [ 95.8%]: ethernet_api.c
Compile [ 96.2%]: pinmap.c
Compile [ 96.6%]: i2c_api.c
Compile [ 97.0%]: port_api.c
Compile [ 97.3%]: pwmout_api.c
Compile [ 97.7%]: rtc_api.c
Compile [ 98.1%]: sleep.c
Compile [ 98.5%]: serial_api.c
Compile [ 98.9%]: spi_api.c
Compile [ 99.2%]: us_ticker.c
Compile [ 99.6%]: test_env.cpp
Compile [100.0%]: rt_Memory.c
Link: mbed-os-example-C027
Elf2Bin: mbed-os-example-C027
+---------------------+-------+-------+------+
| Module              | .text | .data | .bss |
+---------------------+-------+-------+------+
| Fill                |   149 |     0 |    9 |
| Misc                | 67746 |  2232 |  108 |
| drivers             |  2072 |     0 |   64 |
| features/filesystem |   627 |     0 |    0 |
| hal                 |   590 |     0 |    8 |
| platform            |  2235 |     4 |  297 |
| rtos                |   135 |     4 |    4 |
| rtos/rtx            |  5773 |    20 | 6870 |
| targets/TARGET_NXP  |  5014 |     4 |  364 |
| Subtotals           | 84341 |  2264 | 7724 |
+---------------------+-------+-------+------+
Allocated Heap: 2048 bytes
Allocated Stack: 3072 bytes
Total Static RAM memory (data + bss): 9988 bytes
Total RAM memory (data + bss + heap + stack): 15108 bytes
Total Flash memory (text + data + misc): 86605 bytes

Image: .\BUILD\UBLOX_C027\GCC_ARM\mbed-os-example-C027.bin

21:54:05 Build Finished (took 48s.816ms)

[4] Eclipse Environment. /media/uploads/Okoshi/eclipse---.png

Be the first to answer this question.