Экземпляр EthernetInterface прерывает программу - PullRequest
0 голосов
/ 10 декабря 2018

Я тестирую подключение Ethernet на плате обнаружения STM32F746G .Тем не менее, просто имея неподключенный экземпляр EthernetInterface , время между выборками двух временных меток время от времени значительно больше.

В приведенном ниже примере 100К раз берется временная метка и измеряется продолжительность с предыдущей временной метки.Без интерфейса Ethernet это постоянно занимает от 1 до 2 us .Наличие экземпляра Ethernet.Иногда это занимает до 20 долларов США .

Похоже, моя программа прерывается.У кого-нибудь есть идея, что на самом деле здесь происходит?

#include "mbed.h"
#include "EthernetInterface.h"

Serial              pc(SERIAL_TX, SERIAL_RX);   // serial for printf
//EthernetInterface   ethIf;                    // <= INFLUENCES TIMING

int main() 
{
    uint32_t        durationMax    = 0;         // statistics

    Timer timer;    // a timer
    timer.start();  // start it

    uint32_t timeStampLast = timer.read_us();   // sampling timestamp

    for (int i = 0; i < 100000; ++i)
    {
        const uint32_t timeStampNowUs   = timer.read_us();
        const uint32_t durationUs       = timeStampNowUs - timeStampLast;

        timeStampLast   = timeStampNowUs;
        durationMax     = std::max(durationMax, durationUs);    
    }
    pc.printf("Duration max: %u us\n", durationMax); // either 3 or 20 ?!
}
...