2016-06-25 10 views
2

나는 Zynq 보드에서 응용 프로그램을 개발할 것입니다. 내 작업은 기본적으로 Microblaze에서 실행되는 기존 응용 프로그램을 이중 코어 ARM에 이식하는 것입니다.Petalinux와 FreeRTOS의 질적 비교

궁금한 점은 O.S입니다. 나는이 분야에서 전혀 경험이 없으므로 새 시스템에서 사용합니다.

1) Petalinux (두 개의 코어를 사용)

2) Petalinux + FreeRTOS (두 개의 코어를 사용)

3) FreeRTOS (만 사용 핵심 : 네 가지 방법이 있다는 것을 나에게 보인다)

4) Baremetal (사용 만 코어)

내 응용 프로그램이해야 할 것을

이더넷 및 다수의 사용자 정의 링크 사이의 데이터의 큰 금액을 이동하는 것입니다, 그래서 인터럽트 및 명령의 많은 서비스를 제공 할 수있다 많은 DMA 운영 이온.

baremetal 또는 FreeRTOS와 관련하여 Petalinux가 인터럽트 서비스에 도입 한 오버 헤드는 얼마입니까? 이런 종류의 작업을 위해 어떤 OS없이 실행되는 단일 코어 애플리케이션, 예를 들어 OS의 오버 헤드 (세마포어 또는 뮤텍스와 같은 동기화 메커니즘)가있는 Petalinux 애플리케이션이 더 빠르다고 생각하십니까?

나는 정확하고 애매한 질문이 아니라는 것을 알고 있지만 현장에서 경험이 없으면 초기 힌트가 강하게 필요합니다.

감사합니다.

답변

1

당신이 말했듯이, 이것은 당신의 애플리케이션에 정말로 달려 있기 때문에 너무 애매합니다. 리눅스에서 사용할 수있는 '물건'이 모두 필요하다면 부팅 할 때 문제가되지 않습니다. 실제 실시간 동작, 빠른 부팅 시간, 단순성이 필요하고 Linux와 관련된 특정 작업이 필요하지 않은 경우 FreeRTOS가 최선의 선택 일 수 있습니다. 다음과 같은 BSD 스타일 소켓 인터페이스 (리눅스와 같은)를 사용하는 Zynq FreeRTOS TCP 프로젝트가 있습니다 : http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCPIP_FAT_Examples_Xilinx_Zynq.html

+0

당신의 의견에 감사드립니다. 필자의 가장 큰 의문은 더 많은 오버 헤드를 가지고 있지만 코어와 FreeRTOS 솔루션을 모두 사용하는 petalinux 어플리케이션 간의 성능상의 단점입니다. 내가 찾고있는 것은 주로 인터럽트 서비스의 속도이다. – Alessandro

1

일반적으로 성능은 많이 다릅니다. 잘 최적화 된 컴파일러로 리눅스를 컴파일한다면 베어 메탈에 비해 더 빨리 할 수있는 좋은 기회입니다.

하지만 하드 실시간이 필요한 경우 Linux는 적합하지 않습니다.

가 알테라에서 좋은 백서는하지만 너무 자일링스에 적합해야합니다 whitepaper on real time jitter

+0

매우 유용한 답변입니다. 대신 커널과 사용자 공간 간의 메모리 복사는 어떻게됩니까? 나는 크게 이더넷 (TCP)에 의존해야한다. 그래서 petalinux 솔루션을 사용한다면 버스 점유율은 훨씬 높을 것이다. – Alessandro

+0

하드웨어 구현 간에는 큰 차이가있다. 이더넷 IP 코어를 사용하는 솔루션은 팔을 사용하지 않고 (따라서 리눅스를 사용합니다.) 존재합니다. 일반적으로 실시간 이더넷은 불가능합니다 (실시간 구현이 몇 가지 있습니다).하지만 대부분의 경우에는 필요하지 않습니다. 또 다른 것은 당신을위한 실시간, 초당 패킷, 1us, 1ms, 1 초 지연입니까? –

+0

난 하드 실시간에 관심이 아니지만 처리량에 – Alessandro