ラベル TOPPERS/ASP for LPC の投稿を表示しています。 すべての投稿を表示
ラベル TOPPERS/ASP for LPC の投稿を表示しています。 すべての投稿を表示

2012年10月8日月曜日

TOPPERS/ASP for LPCにおける複数UART対応コード(の誤ち)

ほぼ名前だけのメンテナー(私)による改悪

TOPPERS/ASP for LPCとは、酔漢さんがホストされているTOPPERS/ASPのNXPセミコンダクターズ社向けプロセッサへのポートです。

私はほぼ名前だけのメンテナーですが、過去にコミットした私のコードでちょっと良くない点があったので御紹介します。普通はこういう事は書かないのですが、何を考えてそうして、何が良くなかったのかを示してみたい衝動にかられました。

さて、問題のコードはTOPPERSの中でも悪名高きUARTに関連する箇所です。
オリジナルのtarget_config.cは以下のようになっていました。


SIO_PORTIDを参照して必要なコードを生成させるという記述です。
ちなみにPINSELは以下のようなマクロです。


シリアルポートは「ひとまずシステム唯一」という仮定を用い、ここでよろしくやってくれるわけです。
加えて、「使いたいポートと違ったらアプリケーション・プログラマがよろしくやってくれ!」と主張しています。

私はここでちょっと「え?」と思いました。
「イマドキの人」にそういうのって通じるの?という具合です。

ここから私の余計なお世話が始まりました。
まずはSIOポートの初期化です。

デフォルトでパワーオンされていないペリフェラルに対してパワーオンが必要です。
また、同じTXDやRXDであっても、割り当て可能なピンが幾つか存在します。

「一行記述を見れば何が割り当てられているのかわかるのが親切というものではないか!」という主張を基に、以下のような実装に改悪しました。


で、それらのマクロは以下のようにしました。


これでアプリケーションプログラマが「おや?私の使いたいピンと違うぞ!」と直ぐに気付く事ができるし、加えて予めマクロが全てのパターンで用意されているので差し替えるだけで準備オッケイ!と相成ります。

こりゃ便利だなんて思うわけです。

さて、何が改悪なのでしょうか?
一見便利になったように見えますが、実は壮大な問題が含まれています。

改悪による壮大な問題

さて、先ほどのコード、パッと見は良いのですが、オリジナルにない修正を加えています。
  1. SIO_PORTIDを参照して初期化するのではなく、SIO_BAUD_RATE_PORTNを見て初期化。
  2. target_uart_initの呼び出し。
さて、SIO_PORTIDを参照して初期化する場合、該当するある一つのシリアルポートのみが初期化されます。実はとあるプロジェクトで「複数のUARTポートを同等に扱いたいなぁ」と考えていました。
これが最初の改悪の動機になりました。

「SIO_BAUD_RATE_PORTNが定義されていたらそのシリアルポートを使う!」で良いんじゃない?
それって凄く便利かも~!です。

一見良さそうですが、他のポートは依然「SIO_PORTIDを参照して初期化」を期待しています。
先の改悪のコードは一切「UARTを初期化しない」というおかしな挙動を生む原因になります。

加えてtarget_uart_initの呼び出しです。
この関数はpdic/uart/uart.cの関数を呼び出しています。

「あれ?pdicって抽象化されたデバイスドライバだよね?」とはたと気づくわけです。
要するにここで行なっているのは、下層から上層への呼び出しという、主従関係が逆転する極めて重大な問題というわけです。

というわけで・・・

というわけで私の浅はかな判断により改悪したコードによって、メインコミッタである酔漢さんにご迷惑をおかけした次第です。
LPC1830を試す(3)でサラッと触れてありますが・・・。恐ろしくて真相は聞けません。

2011年2月23日水曜日

3千円で楽しめるARMマイコンとRTOSの世界 (TOPPERS/ASP on LPCXpresso LPC1768)

= 謝辞 =
TOPPERS/ASP for LPCは@suikan_blackfinさんによってポーティングされました。
氏は様々な鋭い洞察力で過去にも沢山の偉業を成し遂げている方です。
ここに過去の沢山の偉業を挙げることは出来ませんが、素晴らしいポーティングに感謝すると共に、厚くお礼を申し上げます。
ありがとうございます。

氏のウェブサイトはhttp://d.hatena.ne.jp/suikan+embedded/にあります。

また、LPCXpressoはNXPセミコンダクターズジャパンさんが積極的に国内市場への展開を行って下さっています。このような安価で優れたツールを手に入れることのできるのは、嬉しい限りです。
NXPセミコンダクターズジャパンさんが運営されている日本語サイト(LPCZone)はhttp://www.nxp-lpc.com/cgi-bin/linkv.htmlにあります。

いずれのサイトも沢山の面白い情報が盛り沢山ですので是非ご覧下さい。

= はじめに =
TOPPERS/ASP for LPCはTOPPERS/ASPをNXPセミコンダクターズのLPCシリーズ上で
動作するようにしたもので@suikan_blackfinさんがメインテナンスされています。
http://sourceforge.jp/projects/toppersasp4lpc/

公開当初から完成度が高く、私も簡単に動作させて楽しむことができました。

TOPPERS/ASPはプロジェクトの性質上、商用のツールを使う前提でソースコードや周辺ファイルが公開されている事が多いのですが、これが障壁となって沢山の人が挫折するような状況でした。


そこで、今回は沢山の方にTOPPERS/ASP for LPCを楽しんで頂くためにLPCXpressoさえあれば楽しめるようにしようと考えました。

従来は評価用ボードに加えて、JTAGデバッガ、環境構築など様々な準備が必要でしたが、TOPPERS/ASP on LPCXpressoを使えばLPCXpresso上で簡単に動作させることができるようになります。

そうです。
LPCXpresso LPC1768(あるいはLPC1769)さえあれば良いのです。
従来のように高価なデバッガやRTOSを購入する必要はありません。

= 対応環境について =
ホストOS環境はLPCXpressoが対応しているLinux環境に今回は限定しました。
TOPPERS/ASPのビルドシステムにはシェルとperlに依存する箇所があります。
Windowsでも様々な外部ツールを使って、依存する環境に近い状況を作り出す事が可能ですが、今回は作業負担を軽減させるために割愛しました。

最近ですとVMware Player上で簡単にLinux環境が構築できますし、WindowsとLinuxの両環境で対応できるように沢山の時間をかけるよりも、早く提供したいという思いが先行した結果でもあります。

参考までに動作を確認した環境を記します。

* Ubuntu 10.10
* LPCXpresso 3.8.2 [Build 129][31/01/2011]
* LPCXpresso LPC1768 REV A

今回公開するプロジェクトの源流になったものは、TOPPERS/ASP for LPCのリリースのうちMisc. / LEDBLINK LPCXPRESSO 1768 1.6.0です。

= オリジナルからの変更点 =
@suikan_blackfinさんがお作りになったオリジナルから行った変更について記します。
変更は
* デバッグをIDE上でできるようにすること。
* 極力TOPPERS/ASPのオリジナルとの差分を小さくすること。
* LPCXpressoのみで実現可能なこと。
を念頭に作業しました。

ソースコードとビルド用ファイルについては以下の変更を行っています。
* 元々あったlpc1768_sram.ldとlpc1768_rom.ldを削除しました。
* LPCXpressoが生成したDebugとReleaseのリンカスクリプトを使用しました。
-> ENTRY(ResetISR)をENTRY(_start)に変更しました。
-> STARTUP(start.o)を追加しました。
-> __bss_start, __bss_endを追加しました。
-> __idata_start, __idata_end, __data_startを追加しました。
-> init_hook関数をPROVIDEで追加しました。
-> .isr_vectorを.vectorに名称を変更しました。
* kernel/target/lpc1768_generic_gcc/Makefile.targetに以下を追加しました。
-> CDEFS=-DDEBUG -D__CODE_RED -D__REDLIB__
* Makefileで生成されるオブジェクトの名称を変更しました。
* Makefileで生成されるオブジェクトの拡張子を変更しました。

LPCXpressoのプロジェクトに対しては以下の変更を行っています。
* Debug ConfigurationsのDebuggerタブでStop on startup at: main_taskに変更しました。
* Debug ConfigurationsのDebuggerタブでVector catch: Trueに変更しました。
* PropertiesのC/C++ BuildでGenerate Makefiles automaticallyのチェックを外しました。これによりLPCXpressoは外部Makefileを参照するようになります。
* PropertiesのC/C++ BuildでBuild directoryからDebugとReleaseを削除しました。
これによりプロジェクトのルートディレクトリを参照する形になりMakefileとの整合性が確保されます。

= 使い方 =
Linux上のLPCXpressoで使用できます。
ダウンロードしたzipファイルは展開せずにLPCXpressoの「Import Example project(s)」で使用します。


Browseボタンを押してダウンロードしたzipファイルを選択します。


Nextボタンを押すとzipファイル内にあるプロジェクトが表示されます。


Finishボタンを押すとワークスペースにプロジェクトがインポートされます。


インポートができたらLPCXpresso上でビルドして下さい。


場合によって、コンフィギュレータのビルドが必要かもしれません。
展開したディレクトリのトップにconfigureがありますので、それを実行して下さい。

ビルドが完了したらDebug 'TOPPERS-ASP_LPCXpresso-LPC1768'でデバッグできます。


Debugを選択してOKボタンを押してください。
以下のようにmain_taskで実行が停止すると思います。


ここまで来れば色んな事がIDE上で楽しめるようになっています。

RunメニューからResumeを選択してみて下さい。
LPCXpresso上のLEDがチカチカ点滅すると思います。

次にRunメニューからSuspendを選択して下さい。
実行が停止し、停止した箇所のソースコードが表示されます。


Disassemblyパネルを見ればC言語のソースとアセンブラの両方を確認しながらデバッグできます。


また、RTOS関連では欠かせないCPUレジスタも以下のように簡単に確認することができます。


上記のようにLPCXpresso購入後、今回のTOPPERS/ASP on LPCXpresso LPC1768のzipファイルをダウンロードするだけで、TOPPERS/ASPのアプリケーション開発を体験することができます。
IDE上でソースコードを見ながらResume, Suspendなど便利な機能が使用できる点も見逃せません。

皆さんご存知のとおりLPCXpressoを購入することで使用できるLPCXpresso IDEはコードサイズ128KBの制限があります。
しかしながら、手軽にRTOSを楽しむことのできる環境を構築できることを考えると、なかなか優れた投資効果が得られると言えるのではないでしょうか。

= ダウンロード =
このファイルを使ったことによる如何なる結果も当方では責任を負えませんので、この点を御了承頂いた上で御利用下さい。
ファイルのダウンロード:こちらをクリック
(今後バージョン管理システムへの移行を考えています。)

= 最後に =
今回の対応は既存のTOPPERS/ASPのビルドの枠組みを超えない形で行ないました。
本来であれば、LPCXpresso上のプリビルドやポストビルドを駆使してカーネルに
対するコンフィギュレーションなどを行うのが筋ですが、先に述べたとおり早めの
公開を目指して割愛したものです。

もし、何かシンプルな方法でコンフィギュレータまでを包括的に処理させることが
できる方法を思いついた場合、是非ご一報頂ければと思います。

= お勧め書籍 =
今回の対応作業で参考にさせて頂いた書籍を紹介します。
* 起動プログラム ブート・ローダ入門
  邑中雅樹さんの「TOPPERSで学ぶuITRONのブート・シーケンス」は必携です。

* uITRON準拠 TOPPERSの実践活用
  邑中雅樹さんの「TOPPERS/JSPのよりどころとなっているuITRON4.0仕様」にある本文とコラムを楽しく拝見しました。
  高田広章さん(というか先生!)の「TOPPERSプロジェクトの概要と展開」にある本文とコラムを楽しく拝見しました。
  邑中雅樹さんの「XScaleへのデバイス・ドライバの移植とカーネル移植の完了」にある本文とコラムを楽しく拝見しました。
  中村健真さんの「Blackfin DSPへの移植」にある本文とコラムを楽しく拝見しました。

* ARM Cortex-M3 システム開発ガイド
  レジスタに関する詳細説明を日本語で楽しむことができます。

2010年12月12日日曜日

LPCXpresso LPC1768にJTAGKey2Pを接続してOpenOCDで楽しむ

先の記事ではLPCXpresso LPC1768のデバッガとターゲットを切り離しました。
ターゲットを独立させたのはJTAGKey2Pを接続して使いたいためです。
ここでは実際にLPCXpresso LPC1768にJTAGKey2Pを接続してみました。
OpenOCDはgitリポジトリから2010/12/12現在のものを取り出して使用しました。
まずはOpenOCDのビルドです。

JTAGKey2Pではlibftd2xxを使用します。
http://www.ftdichip.com/Drivers/D2XX.htm
2010/12/12現在のバージョンはlibftd2xx1.0.0.tar.gzです。
ダウンロードして展開しておきます。

tar xvfz libftd2xx1.0.0.tar.gz

次にOpenOCDのソースコードです。

git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
cd openocd
./bootstrap
./configure --enable-ft2232_libftdi --with-ftd2xx-linux-tardir=/path/to/libftd2xx1.0.0
make

ビルドにはautomakeも必要です。
予めビルド環境に入れておいてください。

ビルドできたらmake installして出来上がりです。

ここで試しにsuikanさんがポーティングされたTOPPSER/ASP for LPCのバイナリをOpenOCD経由でフラッシュに書き込んでみましょう。
まずはOpenOCDを起動します。

その前に・・・OpenOCDの設定ファイルを確認します。

openocd.cfgは以下のようにしました。

source [find /usr/local/share/openocd/tcl/interface/jtagkey2p.cfg]
source [find /usr/local/share/openocd/tcl/target/lpc1768.cfg]

jtagkey2p.cfgはgitリポジトリに入っている物と同じです。
lpc1768.cfgについてはSWDを使う設定になっていました。
これについては以下のように修正して使用しました。

# NXP LPC1768 Cortex-M3 with 512kB Flash and 32kB+32kB Local On-Chip SRAM,
# # LPC17xx chips support both JTAG and SWD transports.
# # Adapt based on what transport is active.
# source [find target/swj-dp.tcl]
if { [info exists CHIPNAME] } {
        set  _CHIPNAME $CHIPNAME
} else {
        set  _CHIPNAME lpc1768
}
# After reset the chip is clocked by the ~4MHz internal RC oscillator.
# When board-specific code (reset-init handler or device firmware)
# configures another oscillator and/or PLL0, set CCLK to match; if
# you don't, then flash erase and write operations may misbehave.
# (The ROM code doing those updates cares about core clock speed...)
#
# CCLK is the core clock frequency in KHz
if { [info exists CCLK ] } {
        set _CCLK $CCLK
} else {
        set _CCLK 4000
}
if { [info exists CPUTAPID ] } {
        set _CPUTAPID $CPUTAPID
} else {
        set _CPUTAPID 0x4ba00477
}
#delays on reset lines
adapter_nsrst_delay 200
jtag_ntrst_delay 200
# LPC2000 & LPC1700 -> SRST causes TRST
reset_config srst_pulls_trst
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
#swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m3 -chain-position $_TARGETNAME
# LPC1768 has 32kB of SRAM In the ARMv7-M "Code" area (at 0x10000000)
# and 32K more on AHB, in the ARMv7-M "SRAM" area, (at 0x2007c000).
$_TARGETNAME configure -work-area-phys 0x10000000 -work-area-size 0x8000
# LPC1768 has 512kB of flash memory, managed by ROM code (including a
# boot loader which verifies the flash exception table's checksum).
# flash bank (name) lpc2000 (base) (size) 0 0 (target#) (variant) (clock) [calc checksum]
set _FLASHNAME $_CHIPNAME.flash
# flash bank $_FLASHNAME lpc2000 0x0 0x80000 0 0 $_TARGETNAME lpc1700 $_CCLK calc_checksum
flash bank $_FLASHNAME lpc2000 0x0 0x80000 0 0 $_TARGETNAME lpc1700 120000
# Run with *real slow* clock by default since the
# boot rom could have been playing with the PLL, so
# we have no idea what clock the target is running at.
jtag_khz 500
$_TARGETNAME configure -event reset-init {
        # Do not remap 0x0000-0x0020 to anything but the flash (i.e. select
        # "User Flash Mode" where interrupt vectors are _not_ remapped,
        # and reside in flash instead).
        #
        # See Table 612. Memory Mapping Control register (MEMMAP - 0x400F C040) bit description
        # Bit Symbol Value Description Reset
        # value
        # 0 MAP Memory map control. 0
        # 0 Boot mode. A portion of the Boot ROM is mapped to address 0.
        # 1 User mode. The on-chip Flash memory is mapped to address 0.
        # 31:1 - Reserved. The value read from a reserved bit is not defined. NA
        #
        # http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC1768&type=user
        mww 0x400FC040 0x01
}
init
reset init

次にOpenOCDを起動します。

shinta@greenpad:~/Projects/ledblink_lpcxpresso_1768$ sudo openocd 
[sudo] password for shinta: 
Open On-Chip Debugger 0.5.0-dev-00651-gc6e0705 (2010-12-11-21:58)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
none srst_pulls_trst
500 kHz
Info : max TCK change to: 30000 kHz
Info : clock speed 500 kHz
Info : JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Info : lpc1768.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Warn : Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals


無事に起動したらtelnet localhost 4444でOpenOCDと接続します。
halt, flash probe 0, flash write_image erase (バイナリファイル名), resetでLPCXpresso LPC1768上にあるLEDがチカチカする事を確認してみましょう。

shinta@greenpad:~$ telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
> flash probe 0
flash 'lpc2000' found at 0x00000000
> flash write_image erase /home/shinta/Projects/ledblink_lpcxpresso_1768/asp.bin
auto erase enabled
wrote 32768 bytes from file /home/shinta/Projects/ledblink_lpcxpresso_1768/asp.bin in 5.705619s (5.609 KiB/s)
> reset
JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals

OpenOCD側の端末ではクライアントから受けたコマンドの動作が記されていると思います。

target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x1fff0080 msp: 0x10001ffc
Info : accepting 'telnet' connection from 4444
flash 'lpc2000' found at 0x00000000
auto erase enabled
wrote 32768 bytes from file /home/shinta/Projects/ledblink_lpcxpresso_1768/asp.bin in 5.705619s (5.609 KiB/s)
Info : JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Warn : Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals

この文書ではLPCXpresso LPC1768をJTAGKey2Pで使用するための狭い範囲のドキュメントとして作成しました。
TOPPERS/ASP for LPCに関するドキュメントはsuikanさんがお書きになった以下のドキュメントも参照してください。

2010年10月31日日曜日

LPCXpresso LPC1768でTOPPERS/ASPの動作を確認する


2011年2月23日の記事、3千円で楽しめるARMマイコンとRTOSの世界 (TOPPERS/ASP on LPCXpresso LPC1768)でLPCXpressoさえあればTOPPERS/ASPを楽しめるようにしました。



TOPPERS/ASP for LPC(http://sourceforge.jp/projects/toppersasp4lpc/)においてsuikanさんがTOPPERS/ASPをLPCプロセッサで動作させるためのポーティングをされています。


suikanさんがお使いのボードは株式会社日新テクニカで販売されているNXP ARM/Cortex-M3 LPC1768開発キット(http://www.nissin-tech.com/2010/01/nxp-armcortex-m3-lpc1768.html)です。






Embedded Artistsで公開されているFreeRTOSポート(http://www.embeddedartists.com/products/lpcxpresso/lpc1768_xpr.php?tab=res)ではP0[22]のLED(ボード上ではLED2とシルクが打ってある)が点滅するデモになっています。内部では二つのタスクが起動し、一方が送信し一方が受信、そして受信側がLEDをトグルするデモです。




これを踏まえて先のTOPPERS/ASPでもLPCXpresso LPC1768でLEDがチカチカするようにしてみました。Subversionのリポジトリがrevision 1となっているのは私のローカルリポジトリのバージョンです。http://svn.sourceforge.jp/svnroot/toppersasp4lpcからダウンロードしてきたバージョンはrevision 206です。
  1. asp/cfgでconfigureしてmakeする。
  2. sample1プロジェクト用のディレクトリを作成する。
  3. asp/configure -T lpc1768_generic_gccを実行し、サンプルプログラムを生成する。
  4. make depend; makeする。
変更点を以下に示します。


Index: sample1/sample1.c
===================================================================
--- sample1/sample1.c (revision 1)
+++ sample1/sample1.c (working copy)
@@ -108,6 +108,7 @@
 #include "syssvc/syslog.h"
 #include "kernel_cfg.h"
 #include "sample1.h"
+#include "util.h"


 /*
  *  サービスコールのエラーのログ出力
@@ -146,6 +147,10 @@


  SVC_PERROR(ena_tex());
  while (1) {
+                if (tskno == 1) {
+                    toggle_led();
+                }
+
  syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
  tskno, ++n, graph[tskno-1]);
  for (i = 0; i < task_loop; i++);
Index: sample1/util.h
===================================================================
--- sample1/util.h (revision 0)
+++ sample1/util.h (revision 0)
@@ -0,0 +1,6 @@
+#ifndef UTIL_H
+#define UTIL_H
+
+void toggle_led(void);
+
+#endif
Index: sample1/Makefile
===================================================================
--- sample1/Makefile (revision 1)
+++ sample1/Makefile (working copy)
@@ -130,7 +130,7 @@
 #
 #  共通コンパイルオプションの定義
 #
-COPTS := $(COPTS) -g
+COPTS := $(COPTS) -g -D__NEWLIB__
 ifndef OMIT_WARNING_ALL
   COPTS := $(COPTS) -Wall
 endif
@@ -156,7 +156,7 @@
   APPL_CXXOBJS = $(APPLNAME).o
   APPL_COBJS =
 else
-  APPL_COBJS = $(APPLNAME).o
+  APPL_COBJS = $(APPLNAME).o util.o
 endif
 APPL_CFLAGS =
 APPL_LIBS =
Index: sample1/util.c
===================================================================
--- sample1/util.c (revision 0)
+++ sample1/util.c (revision 0)
@@ -0,0 +1,10 @@
+
+#include "LPC17xx.h"
+
+void toggle_led(void)
+{
+    uint32_t s = LPC_GPIO0->FIOPIN;
+    LPC_GPIO0->FIOCLR = s & (1 << 22);
+    LPC_GPIO0->FIOSET = ((~s) & (1 << 22));
+}
+
Index: asp/target/lpc1768_generic_gcc/target_config.c
===================================================================
--- asp/target/lpc1768_generic_gcc/target_config.c (revision 1)
+++ asp/target/lpc1768_generic_gcc/target_config.c (working copy)
@@ -114,6 +114,12 @@
  *  バナー出力用のシリアル初期化
  */
  target_uart_init(SIO_PORTID);
+
+        /*
+         * P0[22] on LPCXpresso LPC1768 is LED.
+         */
+        LPC_PINCON->PINSEL1 &= (~(3 << 12));
+        LPC_GPIO0->FIODIR |= (1 << 22);
 }




2010年10月28日木曜日

TOPPERS/ASP for LPC


2011年2月23日の記事、3千円で楽しめるARMマイコンとRTOSの世界 (TOPPERS/ASP on LPCXpresso LPC1768)でLPCXpressoさえあればTOPPERS/ASPを楽しめるようにしました。


TOPPERS/ASP for LPCをLPCXpresso LPC1768で試してみることにしました。
http://sourceforge.jp/projects/toppersasp4lpc/

  1. Ubuntu 10.10をVMware Player上にインストール。
  2. 環境構築用スクリプトを使って環境を構築し、コンフィギュレータをビルド。
  3. サンプルプログラムをコンパイルするところまでを確認。

環境構築用スクリプトはUbuntu 10.4用に構成されています。.bashrcでのPATH設定を一箇所変更する必要がありましたが、それ以外はスムーズに進行。
次は実機での動作確認ですが、これはまた後日。