2012-05-01 12 views
4

PICマイクロコントローラのために、組み込みのブートローダと書き込むカーネルを使ってオペレーティングシステムを書くことができると聞きました。私はRTOSでなければならないとも聞いた。PICマイクロコントローラのオペレーティングシステム

  1. これは本当ですか?実際にPIC用にオペレーティングシステムカーネル(C/C++を使用)を作成できますか?
  2. 「はい」に1を設定した場合は、この例はありますか?
  3. 「はい」の場合は、カーネルを作成するためのソフトウェアが必要ですか?
  4. マイクロチップ社はPICマイクロコントローラを製造する唯一の企業ですか?
  5. PICマイクロコントローラをMacでプログラミングすることはできますか?

ありがとう!

+1

なぜPICのような小型のマイクロコントローラでオペレーティングシステムが必要だと思いますか? –

+0

@PaulR私は小さなデバイスのために多くのことをすることができる小さなOSを書いています。 PICは小さく、サポートされ、モダンで安価です。 – Coder404

+0

@PaulR - プロのエンベデッドプログラマとして、私は、PIC上でRTOSを使用することは、ほとんど常により良いアイデアだと思っています。 –

答えて

4

FreeRTOSをチェックアウトすることをお勧めします。

+0

私はそれを見て、それについて疑問に思っていました。どのようにコンパイルして、それをPICに保存しますか?また、ボタンを検出し、ボタンが押されたかどうかを判断するために、RTOSが必要です。 – Coder404

+0

サポートされているツールの「サポートされているMCU」ページをチェックしてください。ボタンについては、これはあなたの仕事です。 – Oliver

+0

参照:http://www.freertos.org/a00090.html#MICROCHIP –

7
  1. はい、あなた自身のカーネルを書くことができます(自分自身で2つ書きました)。はい、PICのためにC言語で記述することができます。プリエンプティブスケジューリングが必要な場合は、コンテキストスイッチを作成するときにアセンブリを完全に回避するのに非常に苦労します。一方で、を簡単ににすることができます。純粋にC言語で協調カーネルを書くことができます。 (オペレーティングシステムの作成は簡単な作業ではありません。純粋なC言語で最初に足を濡らし、次にOSを2つ使用してから、1つを作成してみてください)

  2. この優れた例FreeRTOSです。 PIC24F、PIC33F、およびPIC32MX(他のベンダーのデバイス用の20以上の奇妙な公式ポート)のために、既存のポート(Explorer16デモボードで変更なしで実行されるMPLABプロジェクト)があります。 PIC18Fはサポートされていますが、それほど複雑ではありません。

  3. カーネルを作成するには、MPLABが必要です(Microchipは無料です)。これは、Cおよびアセンブリと互換性があります。プロセッサに応じて、C30とC32のコンパイラの無償版がMPLABに付属しています。

  4. PICはマイクロコントローラの一種で、Microchipの商標です。他の多くの企業がマイクロコントローラを作り、別のもの(例えばAVR、LPC、STM32)と呼んでいます。

  5. はい、新しいバージョンのMPLAB Xは、Mac、Linux、Windowsでサポートされています。

+0

私の質問に完全に答えるために+1!ありがとうございました! – Coder404

+0

CIC、Pascal、BasicをサポートしているmikroeletronikaのIDE + Cコンパイラの中で、ccsinfo.comのccs cのようなPICマイクロコントローラをプログラミングするには、他のIDEを使用することができますPICおよびAVR。 –

2

私はFreeRTOSの投票を2回続けます。私たちはPIC24デザインでこれを常に使用しています。ポートはうまく動作し、大量のメモリを使用しません。

Microchip supports many third party RTOSes.

大半は、あなたが非常に簡単にExplorer16ボード上に、ダウンロードMPLABでビルドして、プログラムすることができます無料デモプロジェクトを持っています。その後、あなたの心のコンテンツを試すことができます。

1

PICは単一のアーキテクチャではありません。 PIC10はPIC24とかなり異なりますが、PIC10とPIC間のすべてのPICは共通性を共有しています。一方、MIPSベースのPIC32はまったく異なるアーキテクチャです。だからあなたはあなたが何を指しているのかを明確にしなければなりません。

であるとは限りませんが、デバイスが使用されているアプリケーションドメインには理想的に適しているため、リアルタイム対応ではないものは多少役に立たなくなります。

すでにPIC用にRTOS portsが多数あります。

カーネルスケジューラについては、開発方法に関しては何も特別なものはありません。ほとんどの場合、小さなアセンブラが必要です。特別なツールはありません。 100%アセンブラを使用しても構いませんが、アセンブラの知識がコンパイラの知識よりも優れている場合に限り、最小/最速のコードを得るためにはこれが必要かもしれません。

PICはマイクロチップに固有のものですが、Parallax SXは多かれ少なかれクローンです。例えば、ARMとは異なり、マイクロチップ社はサードパーティのチップメーカやIPプロバイダにアーキテクチャのライセンスを与えていません。いずれにしても誰もそれを望んでいない。はるかに優れたアーキテクチャがあります。 ARM Cortex-Mは特にRTOSカーネルの実装に適しており、AVRの命令はCソースコードからの効率的な変換を目的として設計されています。長年の8051でも、RTOSの実装に適しています。その8つのレジスタバンクはコンテキストスイッチを非常に速く(最大8スレッドまで)行い、ARMと同様に複数の製造元から8051アーキテクチャのデバイスを入手できます。

+0

コメントありがとうございます。私はあなたのアドバイスのおかげで、ARM Cortex-Mに基づいて私のプロジェクトFreeRTOSを作ることにしました。 – Coder404

0

PIC 18F CPUのハードウェアスタックはわずか31バイトです。他のRAMメモリはスタックとして使用できません。 8051 IRAMメモリでも128バイトのスタックがあります。私は8051、ARM、PIC 18FのRTOSを行っており、PIC 18Fではうまくいきません。 PIC32のRAM(16K〜64K)をスタックとして使用できる場合、スタックポインタが16ビットの場合、PIC18Fタイプよりもはるかに優れています。誰もそれを知っていますか?

関連する問題