1

現在、余暇のプロジェクトをアップグレードして、Microchip の 8 ビット マイクロの代わりに ARM を使用するようにしています。

しかし、残念ながら私はいくつかの問題に遭遇しました:

プログラミング方法の違いがよくわかりません: - ROM へのプログラミング - RAM へのプログラミング (私の場合は 32K しかありません)

私はすでに、IAR IDE を使用していくつかの「hello world」テストを実行しました。ここでは、コンパイル/プログラミングは、私が心配していなかった特定の構成で行われました。しかし、IAR IDE と IAR コンパイラの 32K 制限が気に入らなかったので、新しい環境をセットアップすることにしました (以下の構成を参照)。

Eclipse 環境をセットアップした後、IAR から提供された例を使用して、ARM を RAM にプログラムすることができました。しかし、ARM を ROM にプログラムしたいと思ったとき、プログラムは何もしないようです。ROM または RAM への何らかのマッピングを行ったと思われる makefile の例を使用しました。

ROMは読み取り専用メモリであり、電源が切断された後も空にならず、RAMの方が高速ですが、毎回プログラムをARMにダウンロードする必要があることを私は知っています.

プログラムを ROM と RAM の部分に分割する必要がありますか、それとも、電源投入時に ARM がコードを RAM に再マップするようにすべてを ROM にプログラムできますか?

現在、次の構成を使用しています。

  • Codesourcery GCC
  • エクリプス C/C++
  • Segger Jlink プログラマー (GDB サーバー)
  • CMSIS または LPCOpen ライブラリ (まだ完全には機能していません)
  • NXP LPC1766 コーテックス M3
  • Windows 8 64 ビット
  • LPC1768 および CMSIS の IAR の例
  • NXP の例: lpc17xx.cmsis.driver.library

ROMとRAMのさまざまな用途と、ROMとRAMメモリを利用するためにコンパイラ/メイクファイルを設定する方法を理解するのを手伝ってくれませんか。

最後に、毎回再プログラムしなくてもARMの電源をオフにできるように、ARM(私は思う)をROMにプログラムできるようにしたいと考えています。

4

1 に答える 1

1

サンプルで提供されているリンカー マップ ファイルを確認する必要があると思います。これらのファイルには拡張子があり、多くの場合、ファイル名に.ld文字RAMまたはROMまたはが表示されます。Flashリンカー ファイルは単なるテキスト ファイルなので、Eclipse エディターで調べることができます。重要な部分は、.textセクションが ROM に配置されていることです。

GDB のランチャーには、起動スクリプトも関連付けられています。Configure...これは、 GDB を開始するのと同じ Eclipse メニュー項目の下の選択を使用して編集できます。スクリプトは次のような行で終了する必要があります

monitor flash device = LPC1343
monitor flash download = 1

GDBのmonitorコマンドは、残りの行を GDB サーバーに送信します。flashコマンドは、JLink GDB サーバーのマニュアルで説明されています。

編集:.textセクションは、リンカーが実行可能コードに使用するデフォルトのセクションです。私のgcc_arm.ldファイルにはこれがあります:

SECTIONS
{
    .text :
    {
        KEEP(*(.isr_vector))
        *(.text*)

    } > FLASH

リセット ベクトルと割り込みベクトルをそれぞれのセクションに配置し、リンカーにこれらを実行可能コードの先頭に配置させます。

于 2014-04-06T14:11:46.020 に答える