例としてSTM32を使用したARMのIDEとしての崇高なテキスト

画像

2019年の更新:
この記事は、 vscodeatomのような優れた無料のエディターの出現とはあまり関係ありません。
説明されたアセンブリシステムも進化しており、現在、 ここここで見つけることができます

この記事では、マイクロコントローラ、特にSTM32F10xの開発環境として使用できる、追加のプログラムを使用してSublime Textアセンブリを作成する方法について説明します。 そのため、Sublime Textを使用して作成するタスクに直面しています。これには、作成時の静的分析とコード補完、makefileを使用してプロジェクトをビルドするシステム、コンパイラー、リンカー、マイクロコントローラーファームウェア、デバッグが含まれます。 さらに、アセンブリはインストールせずに動作します。

ディレクトリ構造の作成とbatファイルの起動:


まず、必要なプログラムをダウンロードする必要があります。

1. Sublime Text 3ポータブル自体
2. GCC ARM Embedded Toolchain(アーカイブ済み)
3.静的コード分析用のClang(LLVM)
4.プロジェクト、ファームウェア、およびデバッグの構築を自動化する
5.ファームウェアおよびデバッグ用のOpenOCD

次に、アセンブリ用のディレクトリを作成し、各プログラムを事前に作成したディレクトリに解凍します。 Clangの場合、最初にダウンロードしたLLVMをインストールする必要があります。次に、LLVMのディレクトリをインストールパスからアセンブリのディレクトリにコピーするだけです。
アセンブリディレクトリのルートにbatファイルを作成します。 次のようになります。

画像

追加のプログラムのパスを含むPATH変数でSublime Textを起動するには、Batファイルが必要です。 batファイルに次のように記述します。

::  DEVELOP_ROOT,     () bat- set DEVELOP_ROOT=%~dp0 ::    PATH PATH %DEVELOP_ROOT%GCC ARM none eabi\bin;%DEVELOP_ROOT%LLVM\bin;%DEVELOP_ROOT%make;%DEVELOP_ROOT%openOCD\bin;%PATH% :: Sublime Text start "" "%DEVELOP_ROOT%Sublime Text\sublime_text.exe" 

必要なプラグインをインストールして構成します。


Package Controlのインストール:Sublime Textを実行し、ブラウザーでPackage Control Webサイトリンクに移動して、コンソールにPackage Controlインストール行を挿入し(Ctrl +〜)Sublime Text、再起動します。

Sublime Textで、必要なプラグインをインストールします(Ctrl + Shift + Pを使用して、Install Pakageを記述します)。


すべてのオートコンプリート-コードをその場で完了するためのプラグイン。 Sublime Textタブで開いているファイルの適切な組み合わせを提供します。

ARMアセンブリ-アセンブラ構文を強調します。

次に、これらのプラグインの設定を規定する必要があります。 設定は以下のとおりです。

設定->パッケージ設定-> SublimeLinter->設定-ユーザー:

 { "user": { "debug": true, "delay": 0.25, "error_color": "D02000", "gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme", "gutter_theme_excludes": [], "lint_mode": "background", "linters": { "clang": { "@disable": false, "args": [], "excludes": [], "extra_flags": "", "include_dirs": [] } }, "mark_style": "outline", "no_column_highlights_line": false, "passive_warnings": false, "paths": { "linux": [], "osx": [], "windows": [] }, "python_paths": { "linux": [], "osx": [], "windows": [] }, "rc_search_limit": 3, "shell_timeout": 10, "show_errors_on_save": false, "show_marks_in_minimap": true, "syntax_map": { "html (django)": "html", "html (rails)": "html", "html 5": "html", "javascript (babel)": "javascript", "php": "html", "python django": "python" }, "warning_color": "DDB700", "wrap_find": true } } 

設定->パッケージ設定-> SublimeGDB->設定-ユーザー:

 { "file_group": 0, "session_group": 1, "session_open": true, "console_group": 1, "console_open": true, "variables_group": 1, "variables_open": true, "callstack_group": 2, "callstack_open": true, "registers_group": 2, "registers_open": true, "disassembly_group": 1, "disassembly_open": true, "threads_group": 3, "threads_open": true, "breakpoints_group": 3, "breakpoints_open": true } 

設定->パッケージ設定->ターミナル->設定-ユーザー:

 { "terminal": "cmd" } 

プロジェクトファイルのセットアップ:


この段階で、 STM32F10xのテストプロジェクトを既に開くことができます。 以下は、テストプロジェクトファイル(* .sublime-project)の内容です。

 { "build_systems": [ { "cmd": ["make"], "name": "ARM build", "working_dir": "${project_path}", "file_regex": "^(^\\S.*\\.\\w+):(\\d+):(\\d+): (\\w+ ?\\w+?): (.*)$" } ], "folders": [ { "follow_symlinks": true, "path": "." } ], //   "SublimeLinter": { "linters": { "clang": { // ,    ,   "include_dirs": [ "${project}/CMSIS", "${project}/StdPeriphLib", "${project}/user-code", "${project}/user-code/FatFs" ], //   Clang "extra_flags":"-DSTM32F10X_MD_VL" } } }, "settings": { "sublimegdb_workingdir": "${project_path:out/hex/}", "sublimegdb_commandline": "arm-none-eabi-gdb --interpreter=mi *.elf" } } 

このファイルをより詳細に分析します。 プロジェクトをビルドするときに起動するコマンドを定義します(Ctrl + B):

 "cmd": ["make"] 

build_systemの名前(任意):

 "name": "ARM build" 

プロジェクトの作業ディレクトリは、このパスに関連して、「cmd」フィールドでコマンドを実行します。

 "working_dir": "${project_path}" 

プロジェクト構築ログのメッセージに応じたクイックジャンプの正規表現(F4、Shift + F4に準拠):

 "file_regex": "^(^\\S.*\\.\\w+):(\\d+):(\\d+): (\\w+ ?\\w+?): (.*)$" 

ソースコードを含むプロジェクトディレクトリへのパスはメイクファイルに書き込まれますが、Clangはそれらをメイクファイルから削除しないため、「SublimeLinter」->「linters」->「clang」->「include_dirs」セクションのプロジェクト設定で、パスを指定する必要がありますソースコード分析のためにClangに渡されるこれらのディレクトリ。 そうでない場合、「そのようなヘッダーファイルが見つかりませんでした」という形式のエラーがClangから取得されます。

同じことがプリプロセッサディレクティブにも当てはまります。この場合は「-DSTM32F10X_MD_VL」です。 このディレクティブはmakefileで記述されていますが、Clangのプロジェクト設定に追加する必要があります:「SublimeLinter」->「linters」->「clang」->「extra_flags」。 そうしないと、Clangはこのタイプのコード(stm32f10x.hファイル内)を検証できません。

 #if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" #endif 

プロジェクト設定の次は「設定」セクションです。SublimeGDBプラグインのプロジェクト設定は次のとおりです。

elfファームウェアファイルへのパス:

 "sublimegdb_workingdir": "${project_path:out/hex/}", 

デバッガーを開始するコマンド:

 "sublimegdb_commandline": "arm-none-eabi-gdb --interpreter=mi *.elf" 

この段階で、プロジェクトの構築はすでに完了しています。 Ctrl + Bを押して、ビルドログを表示します。

画像

また、「out」ディレクトリがプロジェクトディレクトリに再作成され、ファームウェア、リスト、およびオブジェクトファイルが対応するディレクトリにあることがわかります。

ファームウェア:


openOCDを使用してマイクロコントローラーをフラッシュします。 特異性があります:openOCDは標準のST-LINKプログラマードライバーでは動作しません。 デフォルトでは、ST-LINKは「USB大容量記憶装置」として定義されています。つまり、 Zadigプログラムを使用してUSBSTORドライバーをWinUSBに置き換える必要があります。 ダウンロードして実行し、オプションで「すべてのデバイスを一覧表示」を選択し、「STM32 STLink」デバイスを選択して、「ドライバーの交換」ボタンをクリックします。

画像

画像

できた! マイクロコントローラーをフラッシュするには、プログラマーを接続し、makefileフォルダーでターミナルを開いて「make program」を実行する必要があります(Sublime Textでプロジェクトフォルダーを直接選択し、Ctrl + Shift + Tを押してターミナルをすばやく開くことができます)。

画像

別のプログラマを使用するには、メイクファイル内の対応する行を変更する必要があります。
常に便利というわけではありませんが、プロジェクトのビルド時にマイクロコントローラーを自動的にフラッシュする場合は、メイクファイルの行のコメントを解除する必要があります。

 # $(MAKE) program 

そのため、デバッグに対処する必要があります。

デバッグ:


GDBサーバーを起動します。makefileのあるディレクトリでターミナルを開き、「make debug」を実行します

画像

Sublime TextでF5(SublimeGDBの設定で変更可能)を押すと、SublimeGDBプラグインインターフェイスが開き、入力するプラグインコマンドラインで次のようになります。
target remote localhost:3333


画像

できた これでデバッグを使用できます。 ここで明確にする価値があります。現時点では、ARMポイズン自体のレジスタのみを表示できますが、周辺は表示できません。 カーネルレジスタの値を通常の形式にするだけでなく、この問題の解決策を探しています。 すべてのデバッグホットキーは、SublimeGDBプラグインの設定で変更できます。

画像

Sublime Textでデバッグを終了するには、Ctrl + F5を押す必要があります(設定で変更することもできます)

新しいプロジェクトの作成:


既存のプロジェクトに基づいて新しいプロジェクトを作成するには、次のものが必要です。

1.新しいプロジェクト名で既存のプロジェクトディレクトリをコピーします。
2.プロジェクトファイル* .sublime-projectの名前を新しいプロジェクトの名前に変更します。
3. makefileで、TARGET変数の値を新しいプロジェクトの名前に変更します。

 #  : TARGET = STM32-test2-FatFs 

プロジェクトのディレクトリ構造を変更する必要がある場合は、makefileのSRCDIR変数の値を変更するだけです。

 #      : SRCDIR = $(BASE) SRCDIR += $(BASE)\CMSIS SRCDIR += $(BASE)\StdPeriphLib SRCDIR += $(BASE)\user-code SRCDIR += $(BASE)\user-code\FatFs 

また、プロジェクト設定の「include_dirs」フィールド(* .sublime-project)。

上記のすべてを説明するビデオ:



カスタマイズされたSublime Textと追加プログラムのダウンロードリンク

この記事で説明したテストプロジェクトをダウンロードするためのリンク

UDP 1. Linuxで、openocdがST-Linkと連携するには、次の方法でUSBデバイスのルールを追加する必要があります。/usr / share / openocd / contribディレクトリから、「99-openocd.rules」ファイルを/etc/udev/rules.dディレクトリにコピーします。 その後、システムを再起動します。

UDP 2.次のプロジェクトが追加されました。
STM32F4
MSP430
ESP8266

Source: https://habr.com/ru/post/J270789/


All Articles