Spørgsmål:
Hvilke IPC-mekanismer findes der til i.MX 7 (eller i.MX 6) multi-core processorer?
Patrick
2015-08-03 19:48:51 UTC
view on stackexchange narkive permalink

Jeg overvejer at bruge i.MX 7-processoren til et nyt design. Den overordnede arkitektur ser ud til at ligne i.MX 6, i det mindste ved at sammenligne blokdiagrammerne.

Hvilke mekanismer findes der til kommunikation mellem Cortex-M4-kernen og Cortex-A7-kernen / kernerne? Tilbyder lager Linux-kernen sådanne mekanismer (som sandsynligvis antager en bestemt RTOS eller firmware, der kører på M4), eller er denne brugerdefinerede firmware til begge processorer i Freescales tilbud? Processorerne ser ud til at dele stort set alt, så jeg kunne forestille mig, at du kunne implementere en delt hukommelsesbuffer med en atomær semafor eller noget i retning af disse linjer.

Ideelt set vil jeg gerne have M4-firmwaren "tage over "nogle perifere enheder, mens A7-processoren er i en lavt strømtilstand (dvs. administrere periodiske kommunikationsoverførsler eller noget dataanalyse, indtil der sker noget" interessant ", der kræver, at A7 gør noget). Fra blokdiagrammerne og i.MX 6 SoloX referencehåndbogen ser det ud til, at hardware ikke udelukker dette.

En svar:
bnewbold
2015-08-05 04:56:09 UTC
view on stackexchange narkive permalink

Det generiske udtryk for multi-core-systemer, der kører forskellige kerner (eller bare metal-kode) på forskellige kerner, er Asynchronous multi-processing ( AMP ). Andre relaterede udtryk er Heterogen Computing , der refererer til flere kerner af forskellige typer i det samme system, og Multiprocessor System-on-Chip ( MPSoC ).

Freescale har tilfældigvis et oversigtsdokument (PDF), der diskuterer nogle af terminologi- og designproblemerne i forbindelse med sådanne systemer, hvilket kan være godt baggrund, selvom det diskuterer et andet OS (QNX) og produktlinje (PowerPC). En ofte diskuteret gratis softwarekombination er Linux på en processor og FreeRTOS på mikrocontrolleren. Flere eksisterende chips både fra Freescale og andre leverandører har arkitekturer svarende til i.MX7, såsom TIs OMAP 4/5. Der er også en masse diskussion af og eksempelkode til AMP på Xilinx's dual-core Zynq ARM + FPGA-chips.

Siden 2012 har Linux-kernen i hovedlinjen haft valgfri support til rammerne for Remote Processor (remoteproc) og Remote Processor Messaging (rpmsg). remoteproc er en generisk grænseflade til Linux-kernen til at styre den "fjerne" kerne (tænd / sluk, indlæs firmware). rpmsg er den generiske grænseflade til afsendelse af meddelelser mellem kerner. De sammenkædede dokumentationssider beskriver deres API'er og giver mere sammenhæng. En udvikler bliver nødt til at skrive en brugerdefineret applikationsspecifik Linux-kernedriver ved hjælp af denne ramme for at udsætte I / O for brugerområdet og derefter skulle skrive f.eks. FreeRTOS-firmware, der "taler" rpmsg. Rpmsg-rammen synes generelt at bruge delt hukommelse til faktisk at implementere kommunikation mellem kernerne.

Hvis man ikke allerede findes, antager jeg, at Freescale snart frigiver dokumentation og eksempler, der er specifikke for AMP med i.MX7 og Linux. Du vil måske holde øje med Freescale Linux git repositories, når de implementerer i.MX7 support; disse filialer vil sandsynligvis blive slået sammen til hovedlinjen i god tid.

Jeg er virkelig nysgerrig, om dette faktisk er den bedste praksis for denne specifikke hardware, og hvilke alternativer der er. Opdater venligst hvis du løber ind i problemer (f.eks. Gennemløb eller latenstid) eller lærer om bedre grænseflader!


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...