2011-10-25 40 views
8

Các RTOS nào mà Ada có các trình biên dịch chéo miễn phí/nguồn mở có hỗ trợ đa nhiệm/đa luồng?RTA đa nhiệm Ada được hỗ trợ với các trình biên dịch mã nguồn mở

Tôi có chip Atmel AT90USB162 mà tôi muốn lập trình bằng Ada. Lựa chọn đầu tiên của tôi là sử dụng AVR-Ada để lập trình nó, nhưng vì nó không có sự hỗ trợ nhiệm vụ, nó không được lựa chọn (và bây giờ tôi không có bất kỳ đầu mối nào về việc nó hỗ trợ nhiệm vụ như thế nào). Vì vậy, tôi cần một cách tiếp cận mạnh mẽ hơn. Tôi đã nghĩ đến việc sử dụng QNX, nhưng nó phức tạp hơn nhiều so với con chip của tôi.

Tôi nhận được thông tin chip AVR hỗ trợ uC/OS-II và FreeRTOS. Có các trình biên dịch chéo Ada miễn phí cho FreeRTOS hay uC/OS-II không?

Cảm ơn.

Trả lời

6

RTEMS hỗ trợ GNAT ít nhất cho một số kiến ​​trúc. Tuy nhiên, vì bạn đã đề cập đến kiến ​​trúc Atmel AVR, điều này có lẽ không được hỗ trợ do các ràng buộc kiến ​​trúc (bộ nhớ có sẵn chủ yếu). RTEMS rất trưởng thành (nó là nguồn mở trước khi Linux được phát minh), và đã được chứng minh rất hữu dụng trong nhiều dự án.

Tùy chọn khác là MarteOS, hỗ trợ tại Ada. Tuy nhiên, sự hỗ trợ của kiến ​​trúc đã rất hạn chế (ban đầu chỉ x86).

Vì vậy, tùy thuộc vào chế dự án của bạn nhiều khả năng bạn có ba tùy chọn:

  1. Stay with AVR, và viết runtime của riêng bạn hỗ trợ tác vụ cho Ada;
  2. Xem xét lại nếu bạn thực sự cần hỗ trợ thời gian chạy cho nhiệm vụ; hoặc
  3. Nâng cấp kiến ​​trúc của bạn lên kiến ​​trúc được hỗ trợ bởi RTOS hỗ trợ Ada.

(Tôi đã sử dụng lần đầu RTEMS với GNAT Ada cho một dự án độc quyền dựa trên ARM9TDMI lõi trong khoảng 2004-2005.)

+1

Hi Schedler. Tôi đã kiểm tra trong tài liệu README.configure của RTEMS, AVR cũng được hỗ trợ. Vì vậy, tôi sẽ đọc các tài liệu chi tiết hơn bây giờ, nhưng tôi đoán nó rất promissing để sử dụng trong dự án của tôi. Cảm ơn bạn. – Rego

+0

Bộ phần mềm văn phòng mà công ty phát triển RTEMS, OAR Corporation, nằm ở ngay cạnh tòa nhà nơi tôi đang làm việc ngay bây giờ. Tôi đi dạo quanh công viên vào bữa trưa hàng ngày và đi qua ngay biển báo OAR lớn. –

+0

@MarcC - Bạn không muốn lên một con lạch mà không có chúng! ;-) –

6

Vâng, trình biên dịch Ada duy nhất mà tôi biết là phần mềm miễn phí là Gnat. Vì vậy, làm giảm câu hỏi của bạn để "Những gì RTOSes Gnat hỗ trợ với nhiệm vụ?"

ACT giữ một danh sách supported platforms here. Cột bên phải trông giống như hầu hết RTOS hoặc RTOS giả. FreeRTOS và uC/OS-II dường như không có trong danh sách.

Tôi chú ý cách xuống phía dưới danh sách của họ trong "bảng trống" một mục đọc "định dạng ELF vi điều khiển AVR (được lưu trữ trên Windows)". Đó có thể là những gì bạn đang tìm kiếm. Tuy nhiên, tôi muốn nói rằng có một cơ hội tốt mà các cảng trống của họ cũng không hỗ trợ nhiệm vụ. Trong thực tế, suy nghĩ về nó, đó có thể là tên của ACT cho AVR-Ada. Bạn sẽ phải kiểm tra với ACT.

Ngoài ra, cần lưu ý rằng rất khó để tìm các tệp nhị phân "miễn phí" cho nhiều mục tiêu gcc bí truyền hơn. Điều này có nghĩa là bạn có thể bị buộc phải tự xây dựng trình biên dịch từ các nguồn (thậm chí không phải từ xa cho người yếu tim), hoặc thực sự đi mua gói hỗ trợ từ ACT để lấy nó.

5

Tôi là một trong những nhà phát triển RTEMS gốc và được dẫn đầu dự án RTEMS từ nó đã chuyển từ một chương trình nghiên cứu quân đội sang một dự án phần mềm tự do truyền thống. Chúng tôi cố gắng hết sức để giữ cho RTEMS như một sản phẩm chất lượng cao với một cộng đồng tuyệt vời.

AVR là một mục tiêu khá nhỏ và cổng RTEMS chưa hoàn thành.Ngay cả khi cổng RTEMS đã hoàn thành, tôi không nghĩ rằng có một AVR với đủ không gian địa chỉ để hỗ trợ GNAT/RTEMS. GNAT ánh xạ mỗi tác vụ Ada tới một chuỗi POSIX giống như trên GNU/Linux và dấu chân thời gian chạy cho một môi trường "thực sự Ada" là lớn. Tôi nhớ lại các tệp thực thi tối thiểu trong phạm vi mã 400K trên PowerPC. Trong khi đó, bản thực thi C tối thiểu của RTEMS có thể nằm trong phạm vi 32-40k trên cùng một mục tiêu đó.

Tôi không quen thuộc với AVR-Ada nhưng tôi đồng ý rằng rất khó có thể cung cấp cho bạn một môi trường Ada đầy đủ.

Dự án RTEMS có các tập lệnh mà chúng tôi sử dụng để xây dựng các công cụ GNU và kiểm tra chúng. Nếu bạn quan tâm đến việc xây dựng các công cụ cho mục tiêu kỳ quặc của riêng bạn, chúng có thể là một hướng dẫn tốt. Quy trình này không thay đổi nhiều cho các mục tiêu được nhúng.

Marc C .. vì bạn đang ở Huntsville, đôi khi chúng tôi sẽ phải cùng nhau ăn trưa. Văn phòng của chúng tôi ở gần đường Bridge. Tôi thực sự không gặp nhiều người dùng RTEMS. :(

+0

Rất rõ phản hồi của bạn, @, cảm ơn bạn. Tôi đã xem qua tài liệu RTEMS, khi @Schedler nói về nó (và tôi chưa biết về RTEMS cho đến lúc đó). Và mặc dù không có một cổng hoàn chỉnh, tôi thấy nó rất thú vị để sử dụng với AVR, ngay cả với tất cả các hạn chế. Ít nhất cho mục đích học tập. Hầu hết các chip AVR rất hạn chế nếu bạn so sánh chúng với một số kiến ​​trúc Power PC hoặc SPARC. Tôi đã phát triển một số ứng dụng trong Power PC trên VxWorks và đơn giản là chúng có các mô hình lập trình hoàn toàn khác nhau. – Rego

+0

Nhưng người dùng AVR thường được sử dụng với những hạn chế này, và các ứng dụng sử dụng nó thường không yêu cầu các ràng buộc thời gian thực sâu. Trong tài liệu RTEMS RTEMS CPU Architecture Supplement Tôi thấy khá thú vị các tính năng có sẵn để sử dụng với AVR, vì vậy tôi đề nghị một số sinh viên MSc của tôi làm việc về khả năng thực hiện một số tính năng trong AVR bằng RTEMS như một thách thức. – Rego

+0

AVR-Ada là một dự án mã nguồn mở tuyệt vời, nhưng bây giờ nó không hoàn chỉnh. Và tôi sẽ chọn sử dụng điều này nếu tôi có thể, bởi vì nó được thực hiện một cách rất trực quan. Mục đích là để thực hiện một cửa sổ 8-bit qua biên dịch cho một số vi điều khiển, nhưng nó thiếu một số tính năng Ada tốt, đó là những người có thị hiếu tốt của việc sử dụng Ada. Ví dụ, nó không hỗ trợ tác vụ, không ngoại lệ. Có vẻ như đó sẽ là một bản phát hành mới trong năm nay, nhưng không may là nhà nước hiện đại không thể sử dụng cho các ứng dụng ưu tiên. Tôi hy vọng bản phát hành tiếp theo sẽ sửa lỗi này. – Rego

3

Chúng tôi rất thích nhìn thấy cảng AVR càng hoàn thiện! Khuyến khích học sinh tham gia danh sách gửi thư của chúng tôi phát triển và đặt câu hỏi.

RTEMS là trong cùng một lớp của RTOS như VxWorks. Điều đó mang lại cho nó một bộ tính năng phong phú mà phải được cắt để vừa với các CPU 8 bit nhỏ hơn (một số) 16 bit. Thử thách của chúng tôi là xác định một hồ sơ tính năng "Tiny/RTEMS" nhằm mục đích. RTEMS thực sự rất có khả năng mở rộng nhưng khi bạn không biết tập hợp tính năng nào sẽ có ý nghĩa trên lớp CPU đó, nó khiến chúng tôi không có mục tiêu cụ thể nào. Vui lòng giúp xác định các yêu cầu của người dùng và mục tiêu. mọi kiến ​​trúc mục tiêu. SimulAVR là những gì tôi đã sử dụng khi tôi đang tích cực làm việc trên cảng. AdaCore sử dụng một cái gì đó gọi là avrtest nhưng nó đã được giới hạn hơn - hữu ích nhưng hạn chế.

+0

Cảm ơn bạn. Tôi sẽ đề nghị họ tham gia vào danh sách. Tôi đoán đó là cơ hội tốt để họ học hỏi. – Rego

Các vấn đề liên quan