すべてが機能するように、環境とコンパイラをダウンロードするだけです。 コンパイラ-GCC; タイトル通り、Qt Creator。
必要なものをダウンロードする
-Qt Creatorは、 公式のQt Webサイトからダウンロードでき、WindowsとLinuxの両方に簡単にインストールできます。 どこでも賭けることができます。
-次に、GCC for ARMをダウンロードします。 ここからリンクを取りました 。 できればディスクのルートからそれほど遠くない場所にある便利な場所に解凍してください。
-MilanderのサイトからCMSISおよびSPLライブラリをダウンロードします。 どこでも開梱できます。 または、ここで記事の最後に投稿したテンプレートを使用して、そこからライブラリを使用することもできます。 しかし、さらに調べたい場合は、ライブラリファイルを追加する必要があります。 それらは公式ウェブサイトで見つけることができます。
それだけです、他に何も必要ありません。
テンプレートを作成
したがって、必要なものをすべてインストールして展開したら、プロジェクトの作成とコードの記述を開始できます。 ここに書かれているのは、WindowsとLinuxの両方で有効です(プロジェクトアセンブリはUbuntuでテストされています)。
始めましょう:
-Qt Creatorを開き、QBSビルドシステムで新しいプロジェクトを作成します。 たとえば、「Habr」と呼びましょう。
シンプルなHello Worldを取得します。 次に、main.cファイルからすべてを削除し、空のファイルを残します。 少し後で説明します。
-Habr.qbsファイルを開き、そこからすべてを同様に削除し、空白を残します。 その後、そこに次のコードを記述します。
import qbs Project { name: "simple" Product { name: "micro" type: "hex" Group { name: "sources" files: ["main.c", "system_MDR32F9Qx.c", "startup_Cortex_M3.c"] fileTags: ['c'] } Rule { inputs: ["c"] Artifact { fileTags: ['obj'] filePath: input.fileName + '.o' } prepare: { var args = []; args.push("-mcpu=cortex-m3") args.push("-mthumb") args.push("-g") args.push("-ffunction-sections") args.push("-O0") args.push("-Wall") args.push("-Wunused") args.push("-DM3") args.push('-c'); args.push(input.filePath); args.push('-o'); args.push(output.filePath); var compilerPath = "C:/4.9_2014q4/bin/arm-none-eabi-gcc.exe" var cmd = new Command(compilerPath, args); cmd.description = 'compiling ' + input.fileName; cmd.highlight = 'compiler'; cmd.silent = false; return cmd; } } Rule{ multiplex: true inputs: ['obj'] Artifact{ fileTags:['elf'] filePath: project.name + '.elf' } prepare:{ var args = [] args.push("-mcpu=cortex-m3") args.push("-mthumb") args.push("-g") args.push("-nostartfiles") args.push("-O0") args.push("-Wl,--gc-sections") for(i in inputs['obj']) args.push(inputs["obj"][i].filePath); args.push("-TC:/Source/Qt/ARM_Test_QBS/arm-gcc-link.ld") args.push('-o'); args.push(output.filePath); var compilerPath = "C:/4.9_2014q4/bin/arm-none-eabi-gcc.exe" var cmd = new Command(compilerPath,args); cmd.description = "linking"+project.name return cmd; } } Rule{ inputs: ['elf'] Artifact{ fileTags:['hex'] filePath: project.name + '.hex' } prepare:{ var args = [] args.push("-O") args.push("ihex") args.push(input.filePath) args.push(output.filePath) var hexcreator = "C:/4.9_2014q4/bin/arm-none-eabi-objcopy.exe" var cmd = new Command(hexcreator,args); cmd.description = 'create_hex'+project.name return cmd; } } } }
このコードでは、16進数ファイルのコンパイラ、リンカ、および作成者とそのパラメータが1つずつ呼び出されます。
もちろん! コンパイラー、リンカー、およびgcc-objcopyへのパスをCompilerPath変数に書き込みます。
その後、cmsisとsplのファイルとリンカースクリプトをソースフォルダーに追加します。 次のようになります。
そこに何かを書いている間、待機しているmain.cファイルに、次を挿入します。
#include "MDR32F9x.h" // #include "system_MDR32F9Qx.h" // long check = 0; void InitPortLED(void)// { MDR_PORTD->FUNC &= ~((0x3FF << (10 << 1))); MDR_PORTD->ANALOG |= (1<<14|1<<13|1<<12|1<<11|1<<10); MDR_PORTD->PWR |= (0x155 << (10 << 1)); MDR_PORTD->RXTX &= ~(1<<14|1<<13|1<<12|1<<11|1<<10); MDR_PORTD->OE |= (1<<14|1<<13|1<<12|1<<11|1<<10); } int main() { SystemInit();// , InitPortLED(); while(1)// { check++; if(check == 1000) MDR_PORTD->RXTX |= 1<<14|1<<10|1<<12;//vkl diod if(check == 4000) { check = 0; MDR_PORTD->RXTX &= (0<<11|0<<13); } } }
ポートの選択は、Milderデバッグボードでの作業によるものです。
コンパイルを開始し、すべてがコンパイルされ、hexファイルの所有者になったことを確認します。
すべてが正常であるため、このファイルをコントローラーにフラッシュして、点滅するダイオードを楽しむことができます。
私が言ったように、私はテンプレートをソースコードとともに投稿します 。
ご覧いただきありがとうございます!
UPD: GitHubにテンプレートを投稿しました