Có thể chạy phần mềm thời gian thực?


60

Tôi biết nó chạy Linux và có các bản vá thời gian thực có sẵn cho Linux. Những bản vá đó sẽ làm việc?

Có ai đã thử một hệ điều hành thời gian thực khác trên Raspberry Pi chưa?

Ý tưởng là sử dụng bảng cho các công việc điều tiết và kiểm soát thời gian quan trọng.


2
Tôi sẽ nghĩ rằng lý do duy nhất xuất hiện trong đầu bạn tại sao bạn không thể là nếu giải pháp GPU đã bị cản trở. Với điều kiện bạn có thể quyết định bỏ qua GPU trong khi thực hiện các tác vụ thời gian thực của mình, tôi sẽ nghĩ rằng các tiện ích mở rộng thời gian thực có thể được thực hiện để hoạt động.
Chris Stratton

7
Toàn bộ hệ thống pi mâm xôi không mở để bạn sửa đổi; câu hỏi sẽ là nếu phần không (GPU) sẽ sẵn sàng tránh xa trong khi bạn đang thực hiện các tác vụ thời gian thực của mình, hoặc nếu điều đó chắc chắn sẽ đòi hỏi cả chu kỳ xe buýt để truy cập ram hoặc thậm chí là "sự chú ý "Từ lõi ARM theo cách làm nản lòng các mục tiêu thời gian khó khăn.
Chris Stratton

4
Rõ ràng RISCOS khá phù hợp với một số ứng dụng thời gian thực nhất định và cổng Raspberry Pi đang hoạt động tốt. * 8 ')
Đánh dấu gian hàng

4
RISCOS không phải là một hệ điều hành thời gian thực (theo liên kết Wikipedia của bạn), vậy nó có thể giúp gì?
Lars Pötter

4
Bản vá CONFIG_PREEMPT_RT đã được trình diễn trên một số bộ xử lý ARM chạy Linux. Có thể có một số vấn đề về độ trễ, nhưng những vấn đề này có thể đo lường được theo thứ tự micro giây.
Đột phá

Câu trả lời:


16

Bạn có thể quan tâm đến việc chạy Xenomai trên RaspberryPi. Ở đây bạn có thể tìm thấy một hướng dẫn về cách làm điều này. Tóm lại, Xenomai là một dự án tạo ra nhân Linux tùy chỉnh (họ cung cấp các bản vá phải được áp dụng cho các nguồn nhân) cho phép nó chạy một kernel khác (lõi Xenomai) là một nhân thời gian thực. Điều này cho phép chạy các ứng dụng Xenomai trên phạm vi phần cứng rộng mà không cần phải viết trình điều khiển cho chúng (vì Linux đang làm việc trên phạm vi phần cứng rất rộng). Điều này cho phép viết các ứng dụng không gian người dùng RT bằng cách sử dụng vài API RT khác nhau có sẵn.


1
Tần số tối đa tôi có thể nhận được với công cụ này là bao nhiêu? Tôi quan tâm đến việc điều khiển động cơ DC với tốc độ làm tròn 1 kHz
Nicolás Arias

19

Trong nhân Linux, việc bật PREEMPT_RTsẽ cung cấp độ trễ giới hạn và API thời gian thực. Bên cạnh việc cấu hình PREEMPT_RT, các chính sách SCHED_FIFOSCHED_RRcũng cần phải được chọn. Và các ứng dụng cần đặt tham số thời gian thực bằng cách gọi API phù hợp hoặc bằng cách sử dụng các tiện ích phù hợp.

Theo một khóa đào tạo điện tử miễn phí: Thời gian thực trong Linux nhúng , PREEMPT_RT là một dự án mang khả năng thời gian thực vào kernel. Nó đã gấp hoàn toàn thành luồng kernel 2.6.33 và 3.0. Xem tài liệu bạn sẽ tìm thấy mọi thứ.

Về cơ bản, đã có hai cách tiếp cận để mang lại khả năng thời gian thực cho nhân Linux:

  • Sửa đổi bên trong kernel, đó là PREEMPT_RTdự án.
  • Chạy thời gian thực phần side-by-side với một hạt nhân bình thường và dưới hạt nhân bình thường, đã có ba thế hệ: RTLinux, RTAI, và Xenomai. ( Aedosnhư Aviođề cập dưới đây?)

Biên tập:


2
Chào mừng bạn đến với Raspberry Pi, câu trả lời hay! Các RT PREEMPT patchbằng Ingo Molnar sử dụng cùng với High Resolution Timers(HRT) hỗ trợ, cho phép các hạt nhân để đạt được cứng thời gian thực khả năng. Hiện tại, sự hỗ trợ của nó đạt tới 3,4.11 hạt nhân và "tin tốt" là bản vá "đang bị thu hẹp", do đó có vẻ như hầu hết chúng đều được đưa vào các nguồn nhân chính. Bạn có thể tìm thấy một hướng dẫn xuất sắc cho cách áp dụng và sử dụng nó ở đây .
Avio

1
Uh, và đừng quên trích dẫn Adeos trong số các lựa chọn thay thế để cung cấp hỗ trợ thời gian thực cứng trong Linux.
Avio

2
Tôi phải đề cập đến việc làm cho PREEMPT_RT hoạt động với hạt nhân Raspberry Pi không phải là vấn đề khó khăn, chỉ cần áp dụng bản vá sẽ tạo ra một hạt nhân không hoạt động. Ngoài ra, có rất nhiều trình điều khiển mới trong nhân Raspberry Pi và những trình điều khiển này chưa được thử nghiệm với PREEMPT_RT, và chúng cũng không bị xóa khỏi giấc ngủ quá dài. Đây là một công việc đang tiến triển, đó là.
Khỏa thân

2
Bất kỳ cập nhật về cái này? Các trình điều khiển bây giờ có đủ ổn định để sử dụng bản vá kernel này không? Tôi thích một hướng dẫn làm việc cho những người chưa biên dịch kernel.
fabb

@fabb: Thậm chí sau nhiều năm vẫn sẽ có những tài xế gặp trục trặc so với yêu cầu rt. Bạn sẽ chỉ tìm ra bằng cách chạy nó. Nhân tiện, gần đây tôi thấy một số trục trặc mạng một khi đã vượt qua các ưu tiên của một số ứng dụng không gian người dùng, thật bất ngờ. Mặc dù tất cả các loại tình huống này là cấu hình cao và ứng dụng cụ thể.
minghua

6

Wyolum mas là aLaMode (tôi gọi nó là Almond Pi) để đặt lên trên Pi theo cách có thể xếp chồng lên nhau. Nó có đồng hồ thời gian thực, sử dụng aTiny 328, nguồn cấp dữ liệu của GPIO Real UART / power và có thể flash theo nhiều cách khác nhau. Thật tuyệt vời vì Pi có thể làm bất cứ điều gì bạn muốn, máy chủ web / cơ sở dữ liệu trong khi Arduino chạy theo thời gian thực.

nhập mô tả hình ảnh ở đây


1
Có vẻ hơi không thực tế khi có 2 bộ vi điều khiển đang chạy, nhưng mặt khác điều này đảm bảo hoạt động theo thời gian thực nếu các phương pháp khác không đủ nhanh.
fabb

1
Bất kỳ gợi ý nào về cách RPi sẽ liên lạc sạch sẽ với các CAC khác mà không làm chậm vòng điều khiển của nó xuống?
fabb

1
Đúng, nhưng LítC sẽ phải thăm dò UART mà tôi đoán để không làm gián đoạn UART hoãn lại việc ngắt bộ đếm thời gian của vòng điều khiển. Sau đó, tôi sẽ thăm dò UART ở đầu vòng điều khiển và đảm bảo rằng tôi không đọc nhiều byte để không mất quá nhiều thời gian? Hoặc bộ đệm UART có thể tràn quá dễ dàng theo cách đó? Hoặc tần số của vòng điều khiển sẽ cao hơn nhiều so với tốc độ UART đến mức đọc một byte mỗi vòng lặp, nếu có, sẽ là quá đủ?
fabb

1
Đề nghị tốt đẹp. BTW Raspberry Pi Alamode đã là một cách chơi chữ. Chế độ Ala là khi bạn đặt kem vào bánh.
Dan

1
Có thật không ? Hehe. Tôi tự hỏi điều đó có nghĩa là gì. Làm cho ý nghĩa ngay bây giờ :)
Piotr Kula

2

Giải pháp tốt nhất tôi từng thấy là X10i - Bảng điều khiển thời gian thực cho Raspberry Pi từ Heber.

X10i là bộ điều khiển thời gian thực phổ quát, mạnh mẽ và an toàn, cho phép kiểm soát nhiều đầu vào / đầu ra, thông qua USB, từ bất kỳ hệ thống PC nào. Heber hiện cung cấp hỗ trợ trong nhiều ngôn ngữ lập trình để giúp các lập trình viên, nhà phát minh và nhà phát triển dễ dàng hơn trong việc kết nối với thế giới bên ngoài từ PC của họ.

Liên kết ở trên cung cấp tài liệu tuyệt vời và rộng rãi và họ cố gắng cập nhật trình điều khiển với phiên bản Debian cho Pi mới nhất.


VẬY, bạn cần một đầu nối ruy băng từ Pi đến đây? Không thể tìm thấy một bức ảnh thuê của điều đó nhưng nó trông thực sự cồng kềnh. Nó có sự phân bổ của các ví dụ nên tôi cho là tốt. +1
Piotr Kula

Tôi không thể nói rằng tôi đã sử dụng nó, nhưng tôi sẽ mong như vậy, mặc dù tôi dường như nhớ anh chàng sử dụng giao diện USB trong bản demo. Nó là khá cồng kềnh mặc dù có.
Jivings

1

Đây là một bài viết (tiếng Pháp được dịch bởi google dịch) trên Raspberry Pi chạy với Xenomai .


5
Chào bạn Thông thường, chúng tôi không khuyến khích các câu trả lời đơn giản là các liên kết trong trường hợp trang được liên kết di chuyển. Bạn có thể tóm tắt thông tin trên trang đó trong câu trả lời của bạn? Sau đó, bạn có thể bao gồm các liên kết như là một tài liệu tham khảo. Cảm ơn!
Jivings

1

RODOS là một lựa chọn khác. Đây là một dự án mã nguồn mở được phát triển bởi Trung tâm hàng không vũ trụ Đức và đội ngũ sinh viên của Đại học Giáo sư Montenegro.

Đó là sử dụng C ++, được viết hoàn toàn theo cách hướng đối tượng và hỗ trợ ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ...

Nó hiện đang được sử dụng trong TET vệ tinh và trong các máy LoTTo nếu tôi không hiểu sai.

Tất nhiên tôi thích chạy nó hơn Linux (những gì có thể) để có được cả hai thế giới tốt nhất - nhưng sau đó vẫn còn những câu hỏi THỜI GIAN, bởi vì tôi không chắc liệu Linux có thể cung cấp API chính xác hay không.

Để có được RODOS, người ta phải viết một thông điệp cho Giáo sư Sergio Montenegro hoặc DLR (Trung tâm hàng không vũ trụ Đức).


1

Bên cạnh linux, có các hệ điều hành thời gian thực. khá phổ biến trong số những người có nguồn mở là ChibiOS / RT:

là một RTOS hoàn chỉnh, di động, mã nguồn mở, nhỏ gọn và cực kỳ nhanh chóng (Hệ điều hành thời gian thực)

một giới thiệu ngắn gọn là tại http://chibios.org/dokuwiki/doku.php?id=chibios:document:int sinhtion . khác với linux bạn cũng có thể thích các bài đọc của

Vâng, có một số lựa chọn thiết kế nên được giải thích và góp phần làm cho ChibiOS / RT trở thành một thiết kế đặc biệt. Không có gì thực sự mới trong bản thân nó nhưng toàn bộ là thú vị.

hay không. nếu bạn thích nó - thử nghiệm trên pi có thể đáng để trải nghiệm tại https://github.com/steve-bate/ChibiOS-RPi :

ChibiOS ngã ba cho thử nghiệm Raspberry PI.

tác giả thêm một hướng dẫn tốt đẹp tại

http://www.stevebate.net/chibios-rpi/GettingStarted.html

Cá nhân, khi nói đến rtos, đối với tôi, linux giống như mang các thiết bị xuyên núi cho các nhu cầu của đất nước đồng bằng. bạn có thể không cần nó thậm chí một pi có thể là quá nhiều. hãy xem http://forum.arduino.cc/index.php?topic=144715.0 để biết trọng lượng thậm chí ít hơn :)


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.