䟋ずしおSTM32を䜿甚したARMのIDEずしおの厇高なテキスト

画像



2019幎の曎新

この蚘事は、 vscodeやatomのような優れた無料の゚ディタヌの出珟ずはあたり関係ありたせん。

説明されたアセンブリシステムも進化しおおり、珟圚、 ここずここで芋぀けるこずができたす 。



この蚘事では、マむクロコントロヌラ、特に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



All Articles