2011-10-25 15 views
8

どのRTOSがAdaを利用していますか?オープンソース/クロスコンパイラはマルチタスク/マルチスレッドをサポートしていますか?Ada multitasking RTOSでopensourceクロスコンパイラをサポート

私はAdaを使ってプログラムしたいAtmel AT90USB162チップを持っています。私の最初の選択肢は、AVR-Adaをプログラムに使用することでしたが、タスクサポートがないため選択肢がありません(今のところ、どのようにタスクをサポートするかについては何の手掛かりもありません)。ですから私はより強固なアプローチが必要です。私はQNXを使うことを考えましたが、私のチップよりはるかに複雑です。

私はAVRチップがuC/OS-IIとFreeRTOSをサポートしているという情報を得ました。 FreeRTOSまたはuC/OS-II用のAdaクロスコンパイラは無料ですか?

ありがとうございました。

答えて

6

RTEMSは、少なくとも一部のアーキテクチャではGNATをサポートしています。しかし、Atmel AVRアーキテクチャについて言及して以来、アーキテクチャ上の制約(ほとんどの場合、使用可能なメモリ)が原因でサポートされていない可能性があります。 RTEMSは非常に成熟しており(Linuxが発明される前はオープンソースであった)、多くのプロジェクトで非常に有用であることが証明されています。

もう1つのオプションはMarteOSで、Adaをサポートしています。しかし、アーキテクチャのサポートは非​​常に限られていました(最初のx86のみ)。

だから、あなたのプロジェクトの制約に応じて、あなたが最も可能性の高い3つのオプションがあります:AVRと

  1. 滞在を、そしてエイダのためのタスク支える独自のランタイムを書きます。
  2. タスクの実行時サポートが本当に必要な場合は、もう一度検討してください。または
  3. AdaをサポートするRTOSでサポートされているアーキテクチャにアーキテクチャをアップグレードしてください。

(私が最初に周りの2004年から2005年にARM9TDMIコアをベースに独自のプロジェクトのためにGNATエイダとRTEMSを使用しています。)

+1

Hi Schedler。私はRTEMSのREADME.configureのドキュメントをチェックし、AVRもサポートされています。だから私は今より詳細にドキュメントを読むだろうが、私はそれが私のプロジェクトで使用するために非常に約束していると思う。ありがとうございました。 – Rego

+0

OAR CorporationのRTEMSを開発した会社が、私が今働いている建物の近くにあります。私は毎日昼食の公園を散策し、大きなOARサインを過ぎて行く。 –

+0

@MarcC - あなたはそれらなしでクリークを上げたくないです! ;-) –

6

私が知っている唯一のAdaコンパイラはFree SoftwareがGnatです。つまり、Gnatがタスク処理をサポートするRTOSは何ですか?

ACTはsupported platforms hereのリストを保持します。右の列は、主にRTOSまたは疑似RTOSのように見えます。 FreeRTOSとuC/OS-IIはリストに載っていないようです。

"裸のボード"の下に、 "AVRマイクロコントローラのELFフォーマット(Windowsでホストされている)"と表示されています。それはあなたが探しているものかもしれません。しかし、私は彼らの裸の港はどちらかの仕事をサポートしていない可能性が高いと言いたい。実際、それについて考えてみると、それはACTのAVR-Adaの名前かもしれません。あなたはACTで確認する必要があります。

また、もっと難解なgccターゲットの多くで「無償」バイナリを見つけることは非常に難しいことに注意してください。これはソースからコンパイラを構築することを余儀なくされるかもしれないし(ACTのサポートパッケージを実際に手に入れて入手する)こともできる。

5

私は元RTEMSの開発者の一人だとするのでRTEMSプロジェクトリーダーとなってそれは陸軍の研究プログラムから伝統的なフリーソフトウェアプロジェクトに移行した。 私たちは、RTEMSを素晴らしいコミュニティーを備えた高品質な製品として保つことを非常に頑張っています。

AVRは非常に小さいターゲットであり、RTEMSポートは不完全です。RTEMSポートが完成したとしても、GNAT/RTEMSをサポートするのに十分なアドレス空間を持つAVRはないと思います。 GNATはGNU/Linuxと同じように各AdaタスクをPOSIXスレッドにマップし、「実際のAda」環境の実行時間は大きくなります。私は、PowerPC上の400Kコード範囲の最小限の実行可能ファイルを思い出します。これと比較して、RTEMSの最小実行可能ファイルはおそらく同じターゲット上で32〜40kの範囲にあります。

私はAVR-Adaに精通していませんが、完全なAda環境を提供する可能性は低いと私は同意します。

RTEMSプロジェクトには、GNUツールを構築してテストするためのスクリプトがあります。自分の奇妙な目標のためのツールを構築することに興味があるなら、それらは良い指針になることができます。この手順は、埋め込まれたターゲットの多くは変わりません。

Marc C ..ハンツビルにいるので、時々一緒に昼食を取る必要があります。私たちのオフィスはブリッジストリートの向かいにあります。私は本当に多くのRTEMSユーザーに会うことはできません。 :(

+0

あなたの回答を非常に明確にする@、ありがとうございます。 @Schedlerがそれについて話したとき、RTEMSのドキュメンテーションを見てきました(それまでのRTEMSについては知らなかった)。完全なポートを持っていないにもかかわらず、AVRで使用することは非常に面白いことがわかりました。少なくとも学習目的のために。 AVRチップの大部分は、PowerPCまたはSPARCアーキテクチャと比較すると非常に限られています。私はVxWorksのPower PCでいくつかのアプリケーションを開発しましたが、単純に全く異なるプログラミングパラダイムがあります。 – Rego

+0

しかし、AVRユーザーは通常このような制限に慣れており、通常はそれを使用するアプリケーションは深いリアルタイムの制約を必要としません。 RTEMSドキュメントRTEMS CPU Architecture Supplementでは、AVRで使用できる機能が非常に興味深かったので、RTEMSを挑戦としてAVRでいくつかの機能を実装する可能性について私のMSCの学生に提案しました。 – Rego

+0

AVR-Adaは素晴らしいオープンソースプロジェクトですが、今は完全ではありません。それが非常に直感的な方法で実装されているので、可能ならばこれを使用することを選択します。その目的は、一部のマイクロコントローラ向けに8ビットのWindowsクロスコンパイラを実装することでしたが、Adaを使用するのに適したいくつかの優れたAda機能はまだありません。たとえば、タスクをサポートしておらず、例外もサポートしていません。それはまだ今年も新しいリリースになるだろうが、残念ながら現在の最先端技術は先制的なアプリケーションには使用できません。私は次のリリースでこれを修正して欲しい。 – Rego

3

我々はAVRのポートはより完全になるのを見てみたい!当社の開発メーリングリストに参加し、質問をする学生を奨励する。

RTEMSは、VxWorksのようなRTOSの同じクラスである。それは与えることRTEMSは非常に拡張性がありますが、そうでない場合には、RTEMSは非常にスケーラブルです。どのような機能セットがそのクラスCPU上で意味を持つのか分かりませんが、具体的な目標はありません。すべてのターゲットアーキテクチャ。 SimulAVRは私が積極的にポートで作業していたときに使っていたものでした。 AdaCoreはavrtestと呼ばれるものを使用しましたが、より制限されていました。

+0

ありがとうございます。私は彼らにリストに参加するように勧めます。私は彼らが学ぶ良い機会だと思う。 – Rego