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です。
- asp/cfgでconfigureしてmakeする。
- sample1プロジェクト用のディレクトリを作成する。
- asp/configure -T lpc1768_generic_gccを実行し、サンプルプログラムを生成する。
- 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);
}
上記手順で得られる生成物はasp.hexです。
LPCXpressoで書き込めるのはbinとaxfですので、ここではasp.hexからasp.binを生成します。
これはmake asp.binをするだけで良いです。
後は書き込んで試してみましょう。
0 件のコメント:
コメントを投稿