poor man's nRF51822 development environment 2 of 2

Eclipseデバッグ

前回GNU Tools for ARM Embedded Processorsでビルド環境を立ち上げる方法を説明しましたが、今回はEclipseデバッグ環境を立ち上げる方法を説明します。

Eclipseのセットアップ

Eclipse IDE for C/C++ Developers

Eclipse IDE for C/C++ Developersをダウンロードしてインストールします。
私はeclipse-cpp-juno-SR2-macosx-cocoa-x86_64.tar.gzを使いました。

CDT Main featuresとGDB Hardware Debugging

Help→Install New Softwareを選択して、Work with:欄にhttp://download.eclipse.org/tools/cdt/releases/junoを入力します。

CDT Main featuresとCDT Optional Featuresの下の C/C++ GDB Hardware Debuggingをインストールします。

embsysregview

Help→Install New Softwareを選択して、Work with:欄にhttp://embsysregview.sourceforge.net/updateを入力します。

embsysregviewをインストールします。

register view file

nrf51.xmleclipse/plugins/org.eclipse.cdt.embsysregview_0.2.3/data/cortex-m0/Nordicディレクトリにコピーします。

J-Link softwareのインストール

J-Link software & documentation pack for MACをインストールします。
私はJLink_MacOSX_V478k.pkgを使いました。

/Applications/SEGGER/JLinkにパスを張ります。

デバッグを行うにはJLinkGDBServerを立ち上げておく必要があります。

インターフェースはSWDを用いるので、その指定を行います。

% JLinkGDBServer -if SWD

プロジェクトのインポート

File → Import からExisting Code as Makefile Projectを選択して、

f:id:ytakeuch:20131222163726p:plain

プロジェクト名を入力し、Makefileのある場所nrf51_sdk_v5_0_0_34603/nrf51822/Board/nrf6310/blinky_example/gccを選択します。

f:id:ytakeuch:20131222164015p:plain

デバッガの設定

Run → Debug Configurationを選択します。

GDB Hardware Debuggingで右ボタンを押してNewを選択します。

バイナリファイルのある場所を選択します。

f:id:ytakeuch:20131222164316p:plain

Debuggerタブを選択します。GDBコマンドをarm-none-eabi-gdbに変更します。また、Remote Target boxのポート番号を2331に変更します。

f:id:ytakeuch:20131222164454p:plain

Startupタブを選択します。Initialization Commandboxに

mon speed 10000
mon endian little
mon flash download=1
mon flash device=NRF51822
mon reset 0

を入力します。

次にSet breakpoint at欄にmainを入力し、Resumeをチェックします。

Debugをクリックするとデバッグ実行が開始されます。

f:id:ytakeuch:20131222164849p:plain



poor man's nRF51822 development environment 1 of 2

はじめに

Nordic SemiconductorのARM® Cortex™-M0 SoC nRF51822の開発環境ですが、標準だとKeilのMDK-ARM Liteが必要になります。この場合ROM容量が32KiBに制限されるのですが、他にもっと大きな問題があります。Windows版しか提供されていないのです。私は気軽に持ち運びできるPCがMBAしかないので不便に思っていました。

というわけで、Mac OSX上にnRF51822の開発環境をセットアップしてみまたので、その手順を説明します。

前提条件

Windows上でMDK-ARM Liteで開発環境のセットアップの経験があるという前提で説明します。Mac/Windows共通なファイルとかの説明はしません。

参考にするドキュメントはnRF51 Development with GCC and Eclipseです。

GCCのインストール

GNU Tools for ARM Embedded Processorsからインストールします。
私は、gcc-arm-none-eabi-4_7-2013q3-20130916-mac.tar.bz2を使いました。

Core Utility / Make utility

Windowsではインストールする必要はありますが、Macではインストール不要です。

Makefileの書き換え

Makefile.common

$(SDK_PATH)Source/templates/gcc/Makefile.common を書き換えます。

< include $(TEMPLATE_PATH)Makefile.windows
---
> include $(TEMPLATE_PATH)Makefile.osx

Makefile.osxの追加

Makefile.windowsを基にMakefile.osxを作成します.

7,8c7,8
< GNU_INSTALL_ROOT := $(PROGFILES)/GNU Tools ARM Embedded/4.7 2013q1
< GNU_VERSION := 4.7.3
---
> GNU_INSTALL_ROOT := /Users/ytakeuch/Nordic/gcc-arm-none-eabi-4_7-2013q3
> GNU_VERSION := 4.7.4

コンパイル

プロジェクトルート下のgccディレクトリでmakeを実行します。

(例) nrf51_sdk_v5_0_0_34603/nrf51822/Board/nrf6310/blinky_example/gcc

% make

実行すると_buildディレクトリ下にhexファイルが生成されます。

blinky_gcc_xxaa.hex

次回予告

Eclipseのセットアップの方法を説明します。



Marmalade 7がリリースされました

最近Marmalade 7がリリースされました。

Announcing Marmalade 7

/Applications の下に Marmalade.app と言うアプリがインストールされ、実行するとMarmalade Hubという開発を開始するためのGUIが立ち上がります。



f:id:ytakeuch:20131024015524p:plain

チュートリアルも刷新されて豊富になっています。

f:id:ytakeuch:20131024015605p:plain



Marmalade SDKでARMでコンパイラ出来ない時の対処方法

Marmalade SDKでARM版のコンパイルが出来ない?

Marmalade SDKをインストール後、Xcodex86コンパイルはできるがARMのコンパイルが出来ない場合があります。

このようなメッセージが出ます。

Unsupported compiler 'com.apple.compilers.marmalade' selected for architecture 'i386'

原因と対処方法

原因はインストールされたプラグインが読み込まれていないためです。

対処方法はXcodeを立ち上げ直す、です。

参考URL



Marmalade SDKでHelloWorld

Marmalade SDKとは?

Marmalade SDKマルチプラットフォーム対応のゲームエンジンです。

Marmalade(SDK)

3分間でHelloWorld

ダウンロードやライセンスの取得の時間はかかりますが、それが完了した前提でHelloWolrdをiOS Deviceで実行する方法を説明します。

ドキュメント「Creating an Application」をベースに進めています。

プロジェクトディレクトリの作成

お好みの場所にプロジェクトディレクトリ(HelloWorld)を作成します。
% mkdir HelloWorld

付随するディレクトリを作成します。
% mkdir HelloWorld/data
% mkdir HelloWorld/source

MKBファイルの作成

HelloWorld/HelloWorld.mkb

files
{
    (source)
    HelloWorld.cpp
}

subprojects
{
    iwgx
}

ICFファイルの作成

HelloWorld/data/app.icf

[S3E]
SplashscreenBkR=255
SplashscreenBkG=255
SplashscreenBkB=255

MemSize = 1000000

#### ソースファイルの作成
HelloWorld/source/HelloWorld.cpp

// Include header files for S3E (core system) and IwGx (rendering) modules                                                                                     
#include "s3e.h"
#include "IwGx.h"

// Standard C-style entry point. This can take args if required.                                                                                               
int main()
{
    // Initialise the IwGx drawing module                                                                                                                      
    IwGxInit();

    // Set the background colour to (opaque) blue                                                                                                              
    IwGxSetColClear(0, 0, 0xff, 0xff);

    // Loop forever, until the user or the OS performs some action to quit the app                                                                             
    while(!s3eDeviceCheckQuitRequest()
          && !(s3eKeyboardGetState(s3eKeyEsc) & S3E_KEY_STATE_DOWN)
          && !(s3eKeyboardGetState(s3eKeyAbsBSK) & S3E_KEY_STATE_DOWN)
        )
        {
            // Clear the surface                                                                                                                               
            IwGxClear();

            // Use the built-in font to display a string at coordinate (120, 150)                                                                              
            IwGxPrintString(120, 150, "Hello, World!");

            // Standard EGL-style flush of drawing to the surface                                                                                              
            IwGxFlush();

            // Standard EGL-style flipping of double-buffers                                                                                                   
            IwGxSwapBuffers();

            // Sleep for 0ms to allow the OS to process events etc.                                                                                            
            s3eDeviceYield(0);
        }

    // Shut down the IwGx drawing module                                                                                                                       
    IwGxTerminate();

    // Return                                                                                                                                                  
    return 0;
}

ビルド

HelloWorldディレクトリでmkbコマンドを実行します。
% mkb

xcodeが立ち上がり、HelloWorldプロジェクトのビルド準備ができています。

ターゲットの確認

SchemaでDebug GCC ARMを選択していることを確認します。
f:id:ytakeuch:20131019182844p:plain

Build & Run

Build & Runを押すとHelloWorldがMarmalade Simulatorで実行されます。
f:id:ytakeuch:20131019183118p:plain

iOS Deviceで実行

/Developer/Marmalade/6.4/Applications/ にあるDeploy Toolを実行します。
f:id:ytakeuch:20131019183338p:plain

HelloWorld/build_helloworld_xcode/deploy_config.py を選択します。
f:id:ytakeuch:20131019183513p:plain

Select Build:でARM GCC Debugを選択してNextボタンを押します。
f:id:ytakeuch:20131019184343p:plain

そのままNextボタンを押します。
f:id:ytakeuch:20131019184431p:plain

Select Platform:でiOS(iPhone, iPad, iPod)を選択してNextボタンを押します。
f:id:ytakeuch:20131019184558p:plain

そのままNextボタンを押します。
f:id:ytakeuch:20131019184651p:plain

そのままNextボタンを押します。
f:id:ytakeuch:20131019184721p:plain

Deploy Allボタンを押します。
f:id:ytakeuch:20131019184754p:plain

完了のメッセージが出ます。この時点でiTunesにHelloWorldアプリが入っているので、iOS Deviceと同期を取ります。
f:id:ytakeuch:20131019184915p:plain

iOS Deviceでの画面は次のようになっています。
f:id:ytakeuch:20131019185005p:plain

HelloWorldアイコンを押すと...
f:id:ytakeuch:20131019185123p:plain
debug画面が出て...

f:id:ytakeuch:20131019185021p:plain
Splash Screenが出て...
f:id:ytakeuch:20131019185137p:plain
HelloWorldアプリが実行されます。

最後に

Marmalade SDKの日本語ドキュメントが見当たらなかったので、駆け足ですがブログを書いてみました。

もっと深掘りしていきたいです。12月にMarmalade SDKアドベントカレンダーをやってみようかなと考えています。

25日分書ける自信がイマイチありませんが^_^;)



KiCadに移行します

きっかけ

いままで基板設計にはEagle Light Edition(商用ライセンス版)を使っていました。 最近になって、4層基板 and/or 大型基板を設計したくなってきたのですが、さすがにStandard Editionを購入するのは躊躇してしまいます。

...というわけでGPLKiCadに移行します。

ビルド

とりあえずWindows版をビルドしました。KiCad Windows Builderというビルドツールがあるので、こちらを使ってビルドしました。ビルドしたバイナリの実行画面は次の通りです。

使用感

スミマセン。まだ使い方が全然ワカリマセン orz...

konashiを使ってみました

ユカイ工学株式会社のkonashi(旧称:monaka)を使ってみました。

http://konashi.ux-xu.com/

ミツミ電機BluetoothモジュールWML-C69を使用したフィジカル・コンピューティング・ツールキットです。

http://www.ceatec.com/2012/ja/news/webmagazine_detail.html?mag_vol=100&mag_type=Web_C_00

f:id:ytakeuch:20130221093807j:plain

初めてYouTubeにアップロードしてみました。

http://www.youtube.com/watch?v=3UJIPOLparA

次はAndroidへの移植にしようか、Kivyへの移植にしようか、迷っています。