37

数年間、デスクトップおよび Web プログラミングの経験があります。組み込みシステムのプログラミングに移りたいと思います。最初の質問をした後、どのハードウェア/ソフトウェア IDE から始めればよいのだろうか...

それとも…関係ない?

習得とプログラミングが最も簡単な開発プラットフォームはどれですか (IDE の使いやすさを考慮してください)。

何か問題が発生した場合に最もデバッグしやすいのはどれですか?

私の目標は、 「IO ポートがどのように機能するか、ページングを含むメモリの制限/要件、サービス ルーチンの割り込み」について学ぶことです。 後で使用するものを学習する方が良いですか、それとも高レベルの概念をほとんどのマイクロコントローラーに引き継ぐ必要がありますか?

ありがとう!

更新:この開発キットはどうですか? コメント?提案?

4

14 に答える 14

19

個人的には、ARM Cortex-M3ベースのマイクロコントローラーをお勧めします。高電力のARMコアは非常に人気があり、これらの低電力バージョンは、独自の 8/16 ビット コアがまだ散らばっているスペースで十分に離陸する可能性があります。この件に関する最近の記事は次のとおりです。ARM Cortex-M3とMCU市場の収束

Arduinoは愛好家の間で非常に人気があります。Atmelのペリフェラル ライブラリは、プロセッサ タイプ全体でかなり一般的です。したがって、その後のAVRからARMへの移行がスムーズになります。

ARM が AVR やその他のコアよりも優れていると主張するつもりはありません。商用製品の MCU の選択は、通常、周辺機器と価格に帰着し、その後に既存のコード ベースと開発ツールが続きます。その上、マイクロコントローラは一般に、デスクトップ PC よりもはるかに単純です。したがって、コツをつかめば、次から次へと移動するのはそれほど難しくありません。

また、リアルタイム オペレーティング システム (RTOS) の開発に関心がある場合は、FreeRTOSを調べてください。これはオープン ソースであり、RTOS とは何か、RTOS がどのように実装されているかについて詳しく説明しています。実際、彼らのウォークスルーの例は、AVR をターゲットにしています。


組み込みシステムの開発ツールは、非常に高価になる可能性があります。ただし、ARM や AVR などのよりオープンなコアには、多くの場合、オープン ソースの代替手段があります。たとえば、WinARMおよびWinAVRプロジェクトを参照してください。

これらのツール チェーンは GCC に基づいているため、Windows 以外のプラットフォームでも使用できます (また、IMHO を使用する方が簡単です)。GCC の使用に慣れている場合は、好みに合わせてEMACSvi (私のお気に入り) からEclipseまで、豊富な「IDE」があることをご存知でしょう。

商用製品を使用すると、セットアップに関する多くの頭痛の種を取り除くことができます. ただし、どちらを選択するかは、ターゲット ハードウェアと予算によって大きく異なります。また、ハードウェアによっては直接 USB デバッグをサポートするものもあれば、高価なJTAGアダプタが必要になるものもあります。


その他のリンク:


低コストの Cortex-M3 ボード:


AVR マイクロコントローラーの代わりに ARM Cortex-M3 を利用する新しい Arduino。

于 2010-01-26T03:25:31.950 に答える
5

すでにプログラミングの経験がある場合は、Arduino を入手し、ファームウェアを一掃して、AVR Studio + WinAVR で独自の作業を行うことを検討することをお勧めします。Arduino は、その電子的側面を理解するための良い出発点となります。Arduino ブートローダを削除すると、Atmel の内部へのアクセスが改善されます。

設定した目標を達成するために、x86 プログラミングを通じてデスクトップ コンピューターをさらに深く調べることもお勧めします。たとえば、x86 オペレーティング システム カーネルを構築する場合があります。

于 2010-01-26T02:44:24.033 に答える
4

ARM は、最も広く使用されている組み込みアーキテクチャであり、複数のベンダーの膨大な範囲のデバイスと幅広いコストをカバーしています。つまり、ARM7、9、11、および Cortex デバイス (特に Cortex) の間には大きな違いがあります。ただし、専門的に組み込みシステムに携わることが目的である場合は、ARM の経験が役に立ちます。

8 ビット アーキテクチャは一般的に使いやすいですが、多くの場合、メモリ容量とコア速度の両方が非常に制限されます。また、8 ビット スキルは使い方が簡単なため、習得が比較的容易であり、潜在的な雇用主にとって魅力的ではないスキルです。社内で、または経験の少ない (したがって費用がかからない) スタッフで簡単に満たすことができるからです。

ただし、これがキャリアではなく趣味である場合、部品、ボード、およびツールの低コストと使いやすさが 8 ビットの魅力となる可能性があります。無料の avr-gcc ツールチェーンでサポートされているという理由だけで、AVR をお勧めします。一部の 8 ビット ターゲットは、別のオープン ソース C コンパイラである SDCC でサポートされています。Zilog は Z8 コンパイラを無料で提供していると思いますが、デバッグ用のハードウェアを支払う必要があるかもしれません (これは比較的安価です)。多くの商用ツール ベンダーは、評価および非商用目的でツールのコード サイズを制限したバージョンを提供していますが、ほとんどのデバッガーには高価な専用ハードウェアが必要であることに注意してください。低速。

何をするにしても、www.embedded.comを見てください。ARM を選択した場合、私は WinARM を商用プロジェクトでうまく使用していますが、快適に構築されているわけではありません。ARM リソースの適切なリストは、こちらから入手できます。AVR については、www.avrfreaks.netを確認してください。

周辺機器の組み合わせがアプリケーションに適している非常にコストに敏感なプロジェクトには、Microchip PIC パーツ (少なくともローエンドのもの) のみをお勧めします。組み込みシステムの学習用ではありません。PIC はアーキテクチャというよりはブランディングです。PIC12、16、18、24、および PIC32 のさまざまな範囲は互いに大きく異なります。そのため、1 つを学んでも、別のものを使用するのに役立つとは限りません。新しいツールを購入するために!とはいえ、PIC24 アーキテクチャに基づく dsPIC は、同時に簡単な DSP エクスペリエンスを取得したい場合に適しています。

いずれの場合も、コンパイラの可用性 (特に C++ サポートが必要な場合) とコスト、およびデバッガーのハードウェア要件を確認してください。多くの場合、これらは開発キットの最も高価な部品であり、ボードと部品は多くの場合、最も安価な部品です。

于 2010-01-26T22:45:49.000 に答える
2

理想的な答えは、何を学びたいかによって大きく異なるため、これは答えるのが難しい質問です。

あなたの目標が、コンピューティング システムの内部動作をもう少し深く掘り下げることだけである場合は、組み込みルートをやめて、Linux カーネル モジュールの作成に関する本を手に取ることをお勧めします。SMbus から温度センサーを読み取る単純なものなどを作成します。

高レベル (携帯電話など) の組み込みアプリケーション開発を検討している場合は、Android SDK をダウンロードしてください。Eclipse で Java をコーディングでき、優れたエミュレーターもあります。

「実際の」マイクロコントローラ空間に入り込み、低レベルのシステム プログラミングを実際に検討する場合は、AVR や PIC など、MMU のない非常に単純なアーキテクチャから始めることをお勧めします。

たとえば、MMU を備えた ARM と、Linux などの OS のようなものに飛び込むと、バックグラウンドがないとシステム プログラミングとハードウェア インターフェイスの両方が行われるため、少しショックを受けるでしょう。移行は非常にラフになると思います。非常に単純なアプリを作成したり、ボタンの押下を数えたりする以外に多くのことを行う予定がある場合。

于 2010-01-28T14:39:19.467 に答える
2

Texas Instruments は非常に興味深い開発キットを非常に低価格でリリースしました。eZ430-Chronos 開発ツールには、スポーツ ウォッチにディスプレイとさまざまなセンサーを備えた MSP430 が含まれており、USB デバッグ プログラマーと USB 無線アクセス ポイントが 50 ドルで含まれています。

また、情報が豊富な wikiもあります。

私はすでにeZ430-Chronos Kit のstackexchange 提案を作成しました。

于 2010-07-14T11:54:40.137 に答える
1

ARMを推奨する人もいます。学ぶための最初のプラットフォームとしてではなく、2 つ目のプラットフォームとしてお勧めします。ARM は、組み込みの低レベルの詳細を学習するためのプラットフォームとしては少し複雑です。これは、そのスタートアップ コードと初期化要件が他の多くのマイクロプロセッサよりも複雑であるためです。しかし、ARM は組み込み市場の大きなプレーヤーであるため、学ぶ価値は十分にあります。そのため、学習するための 2 番目のプラットフォームとしてお勧めします。

Atmel AVR は、次の 3 つの主な理由から、多くの組み込みの基本事項を学習するのに適しています。

  1. アーキテクチャはかなり単純です
  2. チュートリアル付きの優れた開発キットが利用可能
  3. 多くのリソースを備えたファン フォーラム

MSP430など、開発キットを備えた他のマイクロも良いかもしれませんが、そのようなファン フォーラムはないかもしれません。開発キットを使用することは、マイクロをすばやく起動して実行し、効果的な学習を促進することを目的としているため、良い方法です。彼らは、すぐに使い始めることを目的としたチュートリアルを持っている可能性があります。

そうですね、開発キットとそのチュートリアルでは、できるだけ早く LED を点滅させるためのコードを優先して、ブートローダーやスタートアップ コードなどを軽視している可能性が高いと思います。しかし、それは始めるには良い方法かもしれません。「電源投入」から「コード実行」までの一連のイベントを自分のペースで調べることができます。

私は PIC のファンではありません。少なくとも PIC16 はそのアーキテクチャのせいです。それはあまりCフレンドリーではありません。そして、メモリバンクは苦痛です。

于 2010-01-27T00:18:24.973 に答える
1

私はそれらのうちの1つだけを使用しました。

フリースケールは素晴らしいチップです。私は何年もの間、小さなプロジェクトで HC のようなチップを使用してきました。唯一の注意点は、10 フィートのポールが埋め込まれた CodeWarrier には触れないことです。無料の C コンパイラとアセンブラはほとんどありません (最後に使用したものの名前は覚えていません)。Codewarrior は巨大で紛らわしく、チップ アーキテクチャと C プログラミングについてどれだけ知っていても、常に物事を難しくしているように見えました。古い時代に Mac で Codewarrior を使用したことがあり、CW は非常に優れていると考えている場合は、そうではありません。埋め込まれた CWは漠然と似ていますが、動作大きく異なり、あまりうまく機能しません。

通常、コマンドライン コンパイラは問題ありません。大金を払うことができる専門家は高価な開発環境を手に入れます。彼らは物事をより良くすると確信していますが、それがなくても、1990 年にデスクトップ PC のアセンブリ コードを書くよりははるかに優れています。 . :-)

于 2010-03-19T14:45:25.080 に答える
1

何をするにしても、良い開発環境を手に入れるようにしてください。私は Microchip 社のマイクロコントローラは好きですが、Microchip 社の開発ツールのファンではありません (私は MPLAB + ICD で何度もやけどを負い、手間がかかりすぎて機能不全に陥っています)。TI の 2800 シリーズ DSP は非常に優れており、100 米ドル未満で利用できる Eclipse ベースの C++ 開発環境を備えています (28335 用のような「controlCARD」ベースの実験用キットの 1 つを入手してください) -- デバッガ通信リンク本当にしっかりしています。ときどきクラッシュしますが、IDE は良好です。

どこかにもっと優れた IC やボードがあります。私は組み込みマイクロコントローラーの状況にあまり詳しくありませんが、すべてのバグを回避する方法を見つけなければならないさらに別のソフトウェア ツール チェーンを使用する貧弱な IDE にはあまり忍耐がありません。

于 2010-01-26T04:48:31.957 に答える
1

単純なシステムから始めて、徐々に経験を積む必要があります。シンプルであるということは、それほど強力ではないという意味ではなく、使いやすさ、セットアップのしやすさなどを意味することに注意してください。

これらの 1 つ (MBED 開発者ボード) を使い始めました。私にとっての大きなセールス ポイントは、C または C++ でコーディングできること、USB 経由で簡単に接続できること、洗練されたオンライン開発環境 (ローカル ツールのインストールはまったく必要ありません!) でした。

http://mbed.org/

ボックスを開けてから 5 分後に、次のプログラムを実行するサンプルの点滅プログラム (埋め込みワールドの「hello world」) を用意しました。

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

それでおしまい!以上が完全なプログラムです!

ARM Cortex M3 に基づいており、組み込みプロジェクト用の高速で十分なメモリ (100mhz、256k フラッシュ、32k RAM) を備えています。オンライン開発ツールには、非常に優れたライブラリと多くの例があり、非常に活発なフォーラムがあります。デバイスを MBED などに接続するための多くのヘルプ

私は組み込みシステム (ARM 7/9、Renases M8/16/32、Coldfire、Zilog、PIC など) で十分な経験を持っていますが、それでも、このシステムは本格的な機能を持ちながら、すっきりと簡単に理解できるシステムであることがわかりました。

最初に基本的なブレッドボードで遊んだ後、私はこれらの人からベースボードを購入しました: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. これには、I / Oデバイスの山があります(ミニチュアOLEDと3軸加速度計を含む)。同じサイトから、LCPExpresso プロセッサ ボードの 1 つも購入しました。これは安価で、MBED よりも電力/メモリが少ないですが、小規模なジョブには最適です (それでも PIC/Atmega プロセッサのがらくたを叩きます)。ベース ボードは、LCPExpresso と MBED の両方をサポートします。LCPExpress プロセッサ ボードを購入すると、付属の JTAG デバッガとオフラインの開発環境 (Code Red の GCC/Eclipse ベースの開発キット) も入手できました。これは、オンラインの MBED 開発環境よりもはるかに複雑ですが、MBED で経験を積んだ後の論理的な進歩です。

MBEDコントローラーはLPCExpressoコントローラーよりもはるかに機能的ですが、使用と学習ははるかに簡単です。

于 2010-02-04T11:30:05.127 に答える
0

あなたはRoBoardを検討するかもしれません。さて、このボードは、マイクロコントローラーに関してあなたが探しているものではないかもしれませんが、Windows や DOS を実行できるという利点があるため、Microsoft .NET や C/C++ 開発ツールを使って調整することができます。サーボやセンサーなどを使って、さらにはロボットを作ってみましょう! それは実際にはちょっと楽しいです。

ATmega640 プロセッサを搭載したAxon IIもあります。

いずれにせよ、両方のボードが目標の達成に役立つはずです。

ロボット工学に焦点を当てて申し訳ありません。私が興味を持っていて、あなたにも役立つかもしれないと思ったものです。

于 2010-01-26T03:51:22.203 に答える
0

私は PIC を使用していますが、今日選択する場合は Arduino を検討します。しかし、あなたの目標から:

  • IO ポートの仕組み
  • メモリの制限/要件
  • 割り込みサービス ルーチン

Linuxカーネルをハッキングするのが最善の策でしょうか?

于 2010-02-12T12:22:42.307 に答える
0

BBCマイクロビット

https://en.wikipedia.org/wiki/Micro_Bit

この安価な小さなボード(約 20 ポンド)は、ARM Holdings が教育用デバイスとして作成したもので、100 万ユニットが英国の学生に無料で配布されました。

これには、すべての最小の ARM コアである ARM Cortex-M0 が含まれています。

幅広い入手可能性、低コスト、シンプルさ、そしてARMアーキテクチャを紹介するという事実から、最初のマイクロコントローラボードとしてお勧めします.

于 2019-01-06T10:15:59.783 に答える