Vraag:
Welke IPC-mechanismen bestaan ​​er voor de i.MX 7 (of i.MX 6) multi-core processors?
Patrick
2015-08-03 19:48:51 UTC
view on stackexchange narkive permalink

Ik overweeg om de i.MX 7-processor te gebruiken voor een nieuw ontwerp. De algehele architectuur lijkt vergelijkbaar te zijn met de i.MX 6, althans door het vergelijken van de blokdiagrammen.

Welke mechanismen bestaan ​​er voor communicatie tussen de Cortex-M4-kern en de Cortex-A7-kern (en)? Biedt de standaard Linux-kernel dergelijke mechanismen (die waarschijnlijk zouden veronderstellen dat een specifieke RTOS of firmware op de M4 draait), of is deze aangepaste firmware voor beide processors in het aanbod van Freescale? De processors lijken vrijwel alles te delen, dus ik kan me voorstellen dat je een gedeelde geheugenbuffer zou kunnen implementeren met een atomaire semafoor, of zoiets.

Idealiter zou ik willen dat de M4-firmware 'neemt over "sommige randapparatuur terwijl de A7-processor in een energiebesparende modus staat (dwz beheer periodieke communicatieoverdrachten of wat data-analyse totdat er iets" interessants "gebeurt waarvoor de A7 iets moet doen). Uit de blokschema's en de i.MX 6 SoloX referentiehandleiding blijkt dat de hardware dit niet uitsluit.

Een antwoord:
bnewbold
2015-08-05 04:56:09 UTC
view on stackexchange narkive permalink

De algemene term voor multi-core systemen die verschillende kernels (of bare metal code) draaien op verschillende cores is Asynchrone multi-processing ( AMP ). Andere verwante termen zijn Heterogeneous Computing , dat verwijst naar meerdere cores van verschillende typen in hetzelfde systeem, en Multiprocessor System-on-Chip ( MPSoC ).

Freescale heeft toevallig een overzichtsdocument (pdf) waarin enkele terminologie- en ontwerpproblemen met betrekking tot dergelijke systemen worden besproken, wat goed kan zijn achtergrond, hoewel het een ander besturingssysteem (QNX) en productlijn (PowerPC) bespreekt. Een veel besproken combinatie van vrije software is Linux op een processor en FreeRTOS op de microcontroller. Verschillende bestaande chips van zowel Freescale als andere leveranciers hebben architecturen die vergelijkbaar zijn met de i.MX7, zoals TI's OMAP 4/5. Er is ook veel discussie over en voorbeeldcode voor AMP op Xilinx's dual-core Zynq ARM + FPGA-chips.

Sinds ongeveer 2012 heeft de mainline Linux-kernel optionele ondersteuning voor de frameworks Remote Processor (remoteproc) en Remote Processor Messaging (rpmsg). remoteproc is een generieke interface voor de Linux-kernel om de "remote" core te besturen (aan / uit zetten, firmware laden). rpmsg is de generieke interface voor het verzenden van berichten tussen kernen. De gekoppelde documentatiepagina's beschrijven hun API's en geven meer context. Een ontwikkelaar zou een aangepaste applicatiespecifieke Linux-kerneldriver moeten schrijven met behulp van dit raamwerk om I / O aan de gebruikersruimte bloot te stellen, en dan bijvoorbeeld FreeRTOS-firmware moeten schrijven die rpmsg "spreekt". Het rpmsg-framework lijkt over het algemeen gedeeld geheugen te gebruiken om de communicatie tussen de kernen daadwerkelijk te implementeren.

Als er nog geen bestaat, neem ik aan dat Freescale binnenkort documentatie en voorbeelden zal uitbrengen die specifiek zijn voor AMP met de i.MX7 en Linux. Misschien wil je de Freescale Linux git repositories in de gaten houden terwijl ze i.MX7-ondersteuning implementeren; deze branches zullen vermoedelijk te zijner tijd in de hoofdlijn worden samengevoegd.

Ik ben echt benieuwd of dit eigenlijk de beste methode is voor deze specifieke hardware, en welke alternatieven er zijn. Update alsjeblieft als je problemen tegenkomt (bijv. Doorvoer of latentie) of leer over betere interfaces!


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...