Migracja z Cortex-M3 do Cortex-M4

Debugowanie

Rdzenie Cortex-M4, tak samo jak Cortex-M3, są debugowane poprzez standardowe złącze JTAG lub SWD (Serial Wire Debug). Do podłączenia do systemu hosta wymagane jest proste, standardowe złącze zewnętrzne.

Zasilanie

Zarządzanie energią

Cortex-M4, tak samo jak Cortex-M3, ma cztery tryby zasilania: aktywny, uśpienia, tryb gotowości, oraz wyłączania. Na rysunku 8 przedstawiono cztery tryby zasilania:

 

Rys. 8.

Rys. 8.

 

 

Power consumption – pobór mocy
Power Off – Tryb wyłączenia
Standby – Tryb gotowości
Sleep – Tryb uśpienia
Acitve – Tryb aktywny

Porównanie mocowe

Z poniższej tabeli wynika, że Cortex-M4 sprawuje się dużo lepiej niż Cortex-M3 w zakresie efektywności energetycznej.

 

Tab. 4.

  Cortex-M3 Cortex-M4
Proces TSMC 90nm G Proces niskiej mocy 65nm
Typ optymalizacji Szybkość zoptymalizo-wana Obszar zoptymalizo-wany Szybkość zoptymalizo-wana Obszar zoptymalizo-wany
Standardowa biblioteka komórkowa ARM SC9 ARM SC9 ARM SC12 ARM SC9
Wydajność w liczbach całkowitych (razem DMIPS) 344 63 375 188
Częstotliwość (MHz) 275 50 300 150
Efektywność energetyczna (DMIPS/mW) TBD 12.5 24 38
Powierzchnia (mm2) 0.083 0.047 0.21 0.11
Powierzchnia FPU (mm2) NA NA 0.08 0.06

 

Migracja oprogramowania

Informacje ogólne

Ponieważ Cortex-M4 jest rozszerzonym rdzeniem Cortex-M3, oprogramowanie na poziomie systemowym może być stosowane na obu platformach. W szczególności, stos, pamięć, kod oraz umiejscowienie danych, jak również przerwania w obu rdzeniach są takie same, ponieważ mają one tę samą architekturę ARMv7-M oraz ten sam zestaw instrukcji Thumb/Thumb-2. Migrację oprogramowania z Cortex-M3 do M4 można przeprowadzić bardzo łatwo z niewielkimi zmianami. Jeśli kod jest opracowany w języku C, nie ma potrzeby żadnych zmian. Kompilatory przystosowane dla rdzenia Cortex-M4 automatycznie wywołują 32-bitową jednostkę obliczeniową MAC oraz instrukcje SIMD do realizacji zadań cyfrowego przetwarzania sygnałów (DSP). Jednak, mimo w pełni kompatybilnego kodu, występują dodatkowe uwarunkowania:

  • wszystkie nieużywane rejestry SCS (System Control Space) oraz pola rejestrów rdzenia należy traktować jako niemodyfikowalne,
  • należy skonfigurować następujące bity w rejestrze kodów warunków CCR (Condition Code Register): bit STKALIGN na 1, bit UNALIGN_TRP na 1, pozostawić oryginalne wartości pozostałych bitów rejestru CCR.
Przykładowy kod

W poniższym przykładzie występuje funkcja matematyczna, zapisana za pomocą instrukcji kodu źródłowego, używana do implementacji cyfrowego filtru o nieskończonej odpowiedzi impulsowej IIR oraz zliczenia liczb cykli, jakie potrzebują na to rdzenie Cortex-M3 i M4.

Funkcja:

y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] – a1 * y[n-1] – a2 * y[n-2]

O autorze