Kompilatorer för Cortex M4

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Kompilatorer för Cortex M4

Inlägg av superx »

Jag håller på och utvärderar hur bra lite kod kör på Cortex-M4-platformen. Har hittills testat med NXPs LPC4337 och Code Red-miljön. Funkar ok, och går att köra på Mac, vilket jag tycker är bra.

Code Red använder sig av gcc om jag fattat det rätt, och nu funderar jag på om man kan förvänta sig markant bättre (snabbare) prestanda av någon annan kompilator? Om inte, så nöjer jag mig med Code Red så länge, även om Eclipse-miljön känns osmidig på Mac (dock bättre än att springa iväg till någon annan dator om det inte behövs).
jappelino_1
Inlägg: 81
Blev medlem: 13 april 2010, 14:40:04
Ort: Stockholm

Re: Kompilatorer för Cortex M4

Inlägg av jappelino_1 »

Jag kör Texas Cortex M4 och IAR. Det är väl något av en vanesak men jag trivs bra med den kompilatorn och debug miljön.
Det går att väcka CPUn med realtidsklockan men just den detaljen verkar inte debug miljön kunna hantera.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Kompilatorer för Cortex M4

Inlägg av Micke_s »

Markant bättre lär det inte bli, bättre att man skriver "markant" bättre kod istället.
Användarvisningsbild
psynoise
EF Sponsor
Inlägg: 7225
Blev medlem: 26 juni 2003, 19:23:36
Ort: Landvetter

Re: Kompilatorer för Cortex M4

Inlägg av psynoise »

Jag trodde allt fler strävade efter att just använda GCC för att inte hamna i ett dilemma där stora programmeringsprojekt blir obrukbara efter ett antal år när kompilatorn inte längre uppdateras. Sedan är väl framförallt idag datorkraft en mindre kostnad jämfört med utveckling och underhåll hos många projekt.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Kompilatorer för Cortex M4

Inlägg av superx »

Tack för hjälpen! Jag har ingen erfarenhet från ARM tidigare, men däremot från DSP-platformar som TI C67x, Motorola 56k och SHARC, och där kan det vara stor skillnad mellan olika kompilatorversioner iaf. Även på en vanlig PC är det stor skillnad mellan t.ex. GCC och Intels kompilator för signalbehandlingsgrejer. I det fallet handlar det mycket om SSE gissar jag, men det kanske är olika hur kompilatorerna för ARM fixar DSP-instruktionerna för Cortex M4 också tänkte jag.

Går det t.ex. att skriva C-kod som resulterar i 32x32->64 MAC-instruktionen?
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Kompilatorer för Cortex M4

Inlägg av superx »

Det är framförallt signalbehandling jag är intresserad av borde jag tillägga.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Kompilatorer för Cortex M4

Inlägg av Micke_s »

SIMD instruktionerna får du nog hantera själv.
Finns macros definerade för dessa i någon core.h fil..
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Kompilatorer för Cortex M4

Inlägg av superx »

SIMD är inte så intressant då de enbart funkar på 16- och 8-bitarstal. Mac-instruktionen med full precision borde man ju kunna uttrycka i C däremot kan man tycka, men det kanske är lite överkurs för kompilatorerna. Kanske finns macron för de instruktionerna också?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Kompilatorer för Cortex M4

Inlägg av Micke_s »

Finns nog, annars så gör man ett eget lite lätt. kolla i core_cmInstr.h t.ex
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Kompilatorer för Cortex M4

Inlägg av superx »

Menar du med inline assembler? Många kompilatorer får stora problem att optimera om det kommer inline assembler mitt i C-koden tyvärr, men det är också ett område där kompilatorer skiljer sig åt, så om någon har erfarenheter av detta så är jag nyfiken! Ofta är det bättre om det finns några intrinsics som kompilatorn vet vad de gör, och det är här jag gissar att mer specialiserade kompilatorer skulle kunna vara bättre än gcc.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Kompilatorer för Cortex M4

Inlägg av Korken »

Jag kör Linaros GGC distribution och den genererar MAC instruktioner, både för FPUn och heltal.
Vad är du ute efter lite mer specifikt? Är du osäker är det bara att köra en disassembly och kolla på assembly koden.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Kompilatorer för Cortex M4

Inlägg av superx »

Det är digitala IIR-filter jag är intresserad av.

Typiskt är väl något sånt här:

Kod: Markera allt

void filter(uint32_t* u, const int N, const uint32_t* A, uint32_t* x)
{
  uint32_t u1;
  uint64_t tmp;
  uint32_t s;
  uint32_t x0,x1,x2;
  uint32_t A0 = A[0];
  uint32_t A1 = A[1];
  uint32_t A2 = A[2];


  x0 = x[0];
  x1 = x[1];
  x2 = x[2];

  for(s=0; s<N; s++) {
    u1 = u[s];

    tmp =       (uint64_t)A1*(uint64_t)u1;
    tmp = tmp + (uint64_t)A2*(uint64_t)x0;
    tmp = tmp - (uint64_t)A0*(uint64_t)x1;

    x2 = (uint32_t)(tmp >> 32);
    x1 = x0;
    x0 = u1;
    
    u[s] = x2;
  }

  x[0] = x0;
  x[1] = x1;
  x[2] = x2;
}
Koden ovan funkar säkert inte, men är ett rimligt exempel på vad det handlar om. Och gcc som följer med LPCXPresso lyckas faktiskt använda instruktionerna UMULL och UMLAL ser jag nu, efter att ha typkonverterat på rätt sätt. Skoj! Det ser inte supereffektivt ut iof, men alltid något.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Kompilatorer för Cortex M4

Inlägg av Korken »

Om du är intresserade av IIR-filter, varför använder du inte bara DSP biblioteket som ARM ger ut med optimerad kod?
Bara att du tar och kör med deras BiQuad funktion.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Kompilatorer för Cortex M4

Inlägg av superx »

Tack för tippset! Jag har tänkt att kolla på den också, men koden jag behöver köra innehåller många varianter på filter, och jag gissar att deras bibliotek inte stödjer alla dessa. Ser iof att de har en biquad med dubbel precision på tillstånden i CMSIS-DSP-biblioteket, vilket var intressant. Använder du detta bibliotek själv?
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Kompilatorer för Cortex M4

Inlägg av Korken »

Japp, alla signalanays algoritmer jag skriver baserar jag på dom. :)
Är det något super special jag ska göra så kanske jag skriver en egen men det är väldigt sällan.
Skriv svar