2016-06-25 41 views
2

Ich beginne mit der Entwicklung einer Anwendung auf einem Zynq-Board. Meine Aufgabe besteht hauptsächlich darin, eine bestehende Anwendung, die auf einem Microblaze auf dem Dual-Core-ARM läuft, zu portieren.Qualitativer Vergleich zwischen Petalinux und FreeRTOS

Worüber ich mich wundere ist, welche O.S. auf dem neuen System zu verwenden, weil ich in diesem Bereich überhaupt keine Erfahrung habe. Es scheint mir, dass vier Hauptansätze gibt es:

1) Petalinux (beide Kerne

2) Petalinux + FreeRTOS (füllen Sie beide Kerne)

3) FreeRTOS (nur verwenden) einen Kern

)

4) BareMetal (nur ein Kern)

Was meine Anwendung zu tun hat, ist eine große Menge von Daten zwischen Ethernet und mehreren benutzerdefinierten Links zu bewegen, so hat es eine Menge von Interrupts und Befehl dienen viel DMA operiert Ionen.

Wie hoch ist der Overhead, der von Petalinux im Interrupt-Service für Baremetall oder FreeRTOS eingeführt wurde? Denkst du, dass für diese Art von Arbeit eine einzelne Kernapplikation schneller ohne Betriebssystem läuft oder zB eine Petalinux-Anwendung, die den Overhead des Betriebssystems (und der Synchronisationsmechanismen wie Semaphoren oder Mutex) hat?

Ich weiß, die Frage ist nicht präzise und ziemlich vage, aber ohne Erfahrung auf dem Gebiet brauche ich dringend einige erste Hinweise.

Vielen Dank.

Antwort

1

Wie Sie sagen, ist dies zu vage, um eine überlegte Antwort zu geben, weil es wirklich von Ihrer Anwendung abhängt (wann nicht). Wenn Sie all die "Sachen" brauchen, die für Linux verfügbar sind und die Startzeit kein Problem ist, dann gehen Sie damit fort. Wenn Sie echtes Echtzeitverhalten, schnelle Boot-Zeit und Einfachheit benötigen und nichts Linux-spezifisches benötigen, dann ist FreeRTOS die beste Wahl. Es gibt ein Zynq FreeRTOS TCP-Projekt, das die BSD-Stil Sockets-Schnittstelle (wie Linux) hier verwendet: http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCPIP_FAT_Examples_Xilinx_Zynq.html

+0

Dank für Ihren Kommentar dankt. Mein Hauptbezweifelt ist der Leistungsabfall zwischen einer petalinux-Anwendung, die mehr Overhead hat, aber beide Kerne verwendet, und einer FreeRTOS-Lösung, die stattdessen nur einen einzelnen Kern verwendet. Was ich suche, ist vor allem Geschwindigkeit in Interrupt-Diensten. – Alessandro

1

Normalerweise sollte die Leistung nicht viel abweichen. Wenn Sie Ihren Linux mit einem gut optimierenden Compiler kompilieren, besteht eine gute Chance, schneller zu sein als Bare Metal.

Aber wenn Sie harte Echtzeit benötigen, ist Linux für Sie nicht geeignet.

Es gibt ein gutes White Paper von Altera sollten aber auch für Xilinx passen: whitepaper on real time jitter

+0

Sehr nützliche Antwort. Was ist stattdessen mit den Speicherkopien zwischen Kernel und Userspace? Ich muss mich stark auf Ethernet (mit TCP) verlassen, also frage ich mich, ob die Busbelegung bei Verwendung einer petalinux-Lösung (viel) höher sein wird – Alessandro

+0

Schwer zu sagen, was passiert, es gibt einen großen Unterschied zwischen der Hardware-Implementierung. Es gibt Lösungen mit Ethernet IP-Core ohne den Arm (und damit Linux) zu verwenden. Im Allgemeinen ist Echtzeit-Ethernet nicht möglich (es gibt einige Echtzeit-Implementierungen), aber in den meisten Fällen ist es nicht notwendig. Eine andere Sache, was ist Echtzeit für Sie, Pakete pro Sekunde, 1us, 1ms, 1s Verzögerung? –

+0

Ich bin nicht in harter Echtzeit interessiert, aber im Durchsatz – Alessandro