2012年11月12日月曜日

project1

プロジェクトを新規作成してみる。

CCSから"File"-"New"-"CSS Project"("Project"-"New CSS Project"でもOK)を選択して、"New CSS Project"ダイアログを開く。
下記の設定を行ない、"Finish"。

  • "Project name" - プロジェクト名
    ここでは "project1" とする。
  • "Output type" - 出力形式、
    "Executable"(実行ファイル)
  • "Use default location" - 標準のフォルダを使用する。
    Checked
  • "Device" - ディバイスに関する設定
    • "Family"
      "ARM"
    • "Variant"
      "Cortex M","Stellaris LM4F120H5QR"
    • "Connection"
      "Stellaris In-Circuit Debug Interface"
  • "Advanced settings" - 高度な設定
    • Device endianess"
      "little"
    • "Compiler version"
      "TI v4.9.5"
    • "Output format"
      "eabi"
    • "Linker command file"
      ""
      "lm4f120e5qr.cmd" 自体の選択も可能だが、自動のまま。
      サンプルプロジェクトでは、個別の名前が振られていた。
    • "Runtime surpport libraly"
      ""
  • "Project templates and examples" - プロジェクトテンプレートと例
    "Empty Projects"-"Empty Project (with main.c)"

プロジェクトオプションの変更

StellarisWareを使用するために、project1をのプロパティを開き、下記のようにプロジェクトオプションを変更する。

  • インクルードファイルの指定
    • 左側のツリーの "Build" - "ARM Compiler" - "Include Options" を選択
      •  "Add dir to #include search path (--include_path, -I)"に "C:\StellarisWare" を追加する
  • ライブラリの指定
    • 左側のツリーの "Build" - "ARM Linker" - "File Search Path" を選択
      • "Include library file of command file as input (--library, -l)" に "driverlib-cm4f.lib"を追加する
      • "Add to library search path --search_path, -i)" に "C:\StellarisWare\driverlib\ccs-cm4f\Debug"を追加する
本来であれば、"Resource" - "Linked Resources" - "Path Variables" に "SW_ROOT","C:\StellarisWare"としておいて、 "Add dir to #include search path (--include_path, -I)"に "${SW_ROOT}" を追加したいところだが、正しく反映されないため

main.cの変更

プロジェクト新規作成のテストなので"project0.c"を参考にして、main.cを修正(新規入力)

#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"

#define RED_LED   GPIO_PIN_1
#define BLUE_LED  GPIO_PIN_2
#define GREEN_LED GPIO_PIN_3
#define ALL_LED   (RED_LED|BLUE_LED|GREEN_LED)

void main(void) {
    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, ALL_LED);
 
    while(1)
    {
        GPIOPinWrite(GPIO_PORTF_BASE, ALL_LED, RED_LED);
        SysCtlDelay(1000000);
        GPIOPinWrite(GPIO_PORTF_BASE, ALL_LED, BLUE_LED);
        SysCtlDelay(1000000);
        GPIOPinWrite(GPIO_PORTF_BASE, ALL_LED, GREEN_LED);
        SysCtlDelay(1000000);
    }
}

Build, Run

Stellaris LaunchPad を接続した状態で、"Run" - "Debug" とすると 
自動的に Buildされ、LaunchPadにダウンロードして、実行、main()関数でデバッグ状態で一時停止します。

2012年11月9日金曜日

Project0

注) Eclipseにすら慣れていないので適当にやっている内容です。

StellarisWareをインストールしたフォルダの下に、boards\ek-lm4f120xl フォルダがあり、Stellaris LaunchPadの単体でのサンプル集のようです。

Codo Composer Studioで開いてみる。

ここでは、サンプルプロジェクトを全部ワークスペースに取り込んでみる。
  1. "File" - "Import" で Importダイアログを開ける。
  2. "General - Existing Projects into Workspace" を選択し "Next >"
  3. "Select root directory:"を選択、"Browse..."でサンプル集のフォルダを指定する。"Projects"にいろいろ出てくる。
  4. 必要であれば、"Add project to working set" を指定する。
  5. "Finish"でワークスペースに取り込む。

Project0を開いてみる。

  • target_config.ccxml
    ターゲットの設定情報 : 設定専用のエディタが表示される。
  • macros.ini_initial
    プロジェクトのマクロ定義。
    SW_ROOT = ../../../..
    のみ記載されている。プロジェクトのプロパティを表示してみると、"Build"-"ARM Compiler"-"Include Options"などに"${SW_ROOT}"の記述があるので...
  • project0_ccs.cmd
    CCSリンカの設定ファイル。
  • startup_ccs.c
    下記の定義
    • 割り込みベクタテーブル
    • ResetISR(リセット時の処理)
    • NmiSR(ノンマスカブル割り込み処理)
    • FaultISR(フォルト割り込み処理)
    • IntDefaultHandler(割り込みの標準処理)
  • project0.c
    プログラム本体

Project0.cを読んでみる。

インクルードファイル
  • "inc/hw_types.h" - 共通の型定義
  • "inc/hw_memmap.h" - Stellarisのためのメモリマップ定義
  • "driverlib/sysctl.h" - システムコントローラーのためのプロトタイプ
  • "driverlib/gpio.h" - GPIO APIのための定義とマクロ
ピンとLEDカラーのマッピング
  • RED_LED   BLUE_LED  GREEN_LED の定義
メイン関数
  • 50 MHzで実行するようにシステムクロックを設定
    SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
  • LED動作のためのGPIOポートを有効にする。
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
  • LED動作のためのGPIOポートを設定
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED);
  • 赤LEDを点灯
    GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, RED_LED);
  • 少し待つ
    SysCtlDelay(2000000);
  • 青LEDを点灯
    GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, BLUE_LED);
  • 少し待つ
    SysCtlDelay(2000000);

Project0を実行してみる。

Stellaris LaunchPadを接続して、CCSの "Run" - "Debug" とすると Make、Programされ
int main(void) で停止している。
あとは実行でもステップ実行でも....

LM Flash Programmerで書き込んでみる。

同じプログラムを書き込んでも良くわからないので、最初にチップに書き込まれていたプログラム"qs-rgb.bin"(StellarisWareをインストールしたフォルダの"boards\ek-lm4f120xl\qs-rgb\ewarm\Exe"にインストールされています。)を書き込んでみます。
  • LM Flash Programmerを起動。
  • "Configration"タブ(初回のみ、以後この設定が保持されている。)
    • "Quick Set"を "LM4F LaunchPad"に設定する。
  • "Program"タブの
    • "Select .bin file" : "..... qs-rgb.bin" を指定する。
    • "Options" : ディフォルト
    • "Program" ボタンで書き込み。
    • 電源の再投入やリセットボタンで再起動して確認。



2012年11月7日水曜日

Stellaris LaunchPad インストール

導入のメモ

同梱されていたチラシの日本語版 - http://www.tij.co.jp/jp/lit/ml/jajb057/jajb057.pdf
Stellaris LaunchPad の日本語Webページ - http://www.tij.co.jp/tool/jp/ek-lm4f120xl (ここから、日本語のクイックガイドもダウンロードできます。)
LaunchPad 評価プラットフォームのホームページ - http://www.tij.co.jp/ww/launchpad/home_head.html

開発ツールの入手

  1. Texas Instruments のアカウントを作る。
  2. Code Composer Studio™ をダウンロード。(EK-LM4F120XL-CCS-733.ZIP)
    この中に、ICDIドライバ、FlashProgrammer、StellarisWareも同梱されている。(わざわざダウンロードのリンクがあり、ダウンロードしてしまったが必要なかった)
Note: ”Code Composer Studio は、Stellarisローンチパッドや他の TI 製の組込みプロセッサをサポートする TI のソフトウェア開発環境です。Stellaris 評価ボード上で使用する場合には無料です 。” とあるので、こちらを使用することにした。

開発ツールのインストール


  1. とりあえず展開。(ディスクトップに展開するとインストーラーが正常に動作しない、=非ASCII文字のフォルダはだめみたい)
  2. ICDIドライバのインストール
    LaunchPadの電源選択スイッチをDebg側にして接続すると、ドライバのインストールが始まる。
    当然見つからないので、”Software\ICDI”から探すようにフォルダの指定をする。
    インストールをスキップしていれば、ディバイスマネージャから上記のものを探し更新する。
  3. CCSのインストール
    Software\CSS\ccs_setup_5.2.1.00018.exeを実行
    初回実行時に License Setup Wizardが実行されるので、FREE LICENSEを選択。
    (LaunchPad 評価プラットフォームのホームページで「Stellaris 評価ボード上で使用する場合には無料です」とあるので)
  4. LM Flash Programmerのインストール
    Software\LMFlashProgrammer\LMFlashProgrammer.msiを実行
  5. StellarisWareのインストール
    Software\StellarisWare\SW-EK-LM4F120XL-9453.exeを実行