作成日:2011-5-7

LPCXpresso IDEの使い方 その2 〜サンプルプロジェクトのインポートとデバッグ〜

サンプルのインポート

前回の LPCXpresso IDEの使い方 〜その1 インストールとアクティベーション〜のダウンロードファイルに少しありましたが、 今回はサンプルのインポートとデバッグをしてみましょう。

まず、LPCXpressoを起動しましょう。下のWindowが現れます。
LPCXpressoでは Workspace単位で起動するようになっています。
ここでは C\workspace\test1フォルダを作りました。
場所はどこでも良いですが、全角文字が入るのはダメですので注意しましょう。
LPCXpresso起動時のworkspace選択画面

起動した後は下の画面になります。
赤線で囲んだ ”Import Exsample project(s)” をクリック。
LPCXpresso画面1

クリックするとWindowが現れます。今回はインストール時にハードデスク内にコピーされた
C:\nxp\lpcxpresso_3.6\Examples\NXP\LPC1000\LPC17xx\LPCXpresso1768.zip
を使います。
LPCXpresso画面1

Nextをクリックすると、
LPCXpresso インポート画面2

初期状態では、全てのチェックボックスが選択されています。このままFinishしてください。

ビルド

LPCXpresso画面2

画面の左上に Project Exprlorer内に このWorkspaceのProjectファイルが表示されています。
ここでは、LPCXpresso1768_systick というProjectを使います。
main関数は systic_main.c 内 (@, A)です。

既に Buldされているので、このままDebugも可能ですが、Buldしてみましょう。
前回と全く同じProjectはBuildされないかもしれません、その場合何か変えてください、たとえば改行をひとつ入れてBuildしててみてください。
Buldは画面 左下の Quick Panel内にあります(B)のでクリック。
PCXpresso1768_systick プロジェクトフォルダー上で左クリックして、Build Project でも同じです。

エラー無くBuldが正常に行われると、右下のConsole内にCの数字が示されます。これはプログラム(Flsh)と必要なメモリサイズ(RAM)を示しています。

text+data がプログラムサイズ。 data+bass が 使われるメモリサイズです。 単位はバイトです。
詳細はこちら(英語)です。
LPCXpresso(無料)はプログラムサイズの制限は128KBです。

code_red サポート内、 FAQページには有益な情報がいろいろありますので、分からないことはここを調べるとよいです。

デバッグ

PCとLPCXpressoをUSBケーブルで接続してください。 下の画面の(0)Debug ’LPCXpresso1768_systick’[Debug] をクリックしてください。
初めてLPCXpressoを使う場合は、ドライバのインストールが行われます、2個です。 1つは DFU、もう1つは LPC-Kinkです。
ドライバの場所は C:\nxp\lpcxpresso_3.6\Drivers 内です。

LPC-Linkの初期化が行われ、デバッグ画面になります。
LPCXpressoデバッグ画面1

デバッグをクリックした後は、main関数の最初で止まります(@)。右上にDebugタグが現れ、Aのボタンで 一般的なIDEと同様 Run、ステップ実行等が行えます。エディタ画面の左端をダブルクリックするとブレークポイントが張れます(B)。

このプロラムはsystick(System Tick Timer)タイマを使って、LPCXpresso LPC1768ターゲット上のLEDを2秒ごとに点滅させています。
SystickタイマはCortex-Mコア(M0/M3/M4)が持っているOS向けの24-bitタイマーを使っています。OS以外でも、もちろん使えます。通常 初期設定は10msですが、ここでは下記関数を使って1ms毎に割り込みをし、2000回割り込みがあったところで、LEDのON/OFFを繰り返しています。

SysTick_Config のところにポインタを持っていってみてください。関数が現れます。
/**
 * @brief  Initialize and start the SysTick counter and its interrupt.
 *
 * @param   ticks   number of ticks between two interrupts
 * @return  1 = failed, 0 = successful
 *
 * Initialise the system tick timer and its interrupt and start the
 * system tick timer / counter in free running mode to generate 
 * periodical interrupts.
 */
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{ 
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */
                                                               
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 
                   SysTick_CTRL_TICKINT_Msk   | 
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}

ではこの関数はどこにあるのかと思います。
SysTick_Config にポインタを持っていき、右クリック → Declarations → Project をクリック。
Declaration は宣言という意味ですので、関数を宣言している箇所がでます。
関数の宣言

検索結果は、右下のSearchタブに現れます。
関数の宣言 検索結果

この関数は CMSIS(シーエムシス) の core_cm3.h 内にあります。 CMSISについては別の機会で。

私のPCでの問題

私のPCでは何故かうまくLPC-Linkドライバーが動きませんでした。下記エラーが出てデバック画面に行かないんです。
LPC-Linkエラー

先ほどのcode_redのFAQページに何か情報がないかと探し回りましたがありません。ググって探し回ると、ありました、解決策LPCXpressoフォーラムの中でした。

これは私が使っているコマンドファイルです。デバッグの前にこのファイルを実行LPCXpresoを実行するとエラーが出ません。一度実行すれば毎回は必要ありません。USBケーブルを抜き差しした場合は実行が必要です。
使われる場合はテキストファイルで拡張子を .txt から .cmd に変えてください。ダブルクリックして使います。
下記画面が出てくると思います。
LPC-Linkエラー2

これでOKです。
普通はこんなことしなくてもLPC-Linkは正常に動くと思います。

作成日:2011-5-7