2009/05/25 からのアクセス回数 6785
ARMは、CPUコアは同じでも周辺IOの処理が各社まちまちなのが難点でした。
ARMlibは、安価に使えるLPC2000やAT91シリーズのCPUをターゲットに
を提供し、ARMの組み込み開発を容易にします。
AVRlibを出しているProcyonから、 Procyon ARMlib が出ています。
最初は、LPC2000をベースに開発していたみたいですが、atmelのat91シリーズ、aduc7000も 不完全ながら、サポートしているみたいです。
ARMlibのサンプルでは、SAM7S256用のサンプルがないので、この例題はAT91シリーズの ユーザによい例になると思います。
Procyon ARMlib のページにアクセスし、
export ARMLIB=$HOME/local/arm/avrlib
これで、インストール完了です。 詳しくは、 Installing ARMlib Manually を見てください。
サンプルから、makefile をコピーし、以下の項目を変更します。
makefileの設定例を抜粋します。
TRG = main ARMLIB = $(HOME)/local/arm/armlib ARCH = at91 ARMLIB_ARCH_SRC = processor.c uart.c ARMLIB_SRC = rprintf.c
Armlibを使った最初の、例題は、RS232C経由でターミナルにHello worldを表示するものです。 使用する評価ボードはOlimexの AT91SAM7S256ボード です。
次に、必要なファイルはglobal.hです。
最初はどうやって設定すればよいか分かりませんでした。 AT91SAM7S256のサンプルプログラムのコメントを頼りに、以下のように設定しました。
#ifndef GLOBAL_H #define GLOBAL_H // global ARMLIB defines #include "armlibdefs.h" // global ARMLIB types definitions #include "armlibtypes.h" // project/system dependent defines // 18.432MHz Ex-Osc. // PLL = (18.432/OSC_DIV*(PLL_MUL+1) => 95.8464MHz // F_CPU = PLL/2 =>47.9232MHz #define F_CPU 47923200 #define OSC_DIV 5 #define PLL_MUL 25 #endif
最後にmain.cについて説明します。
#include "global.h" // include our global project settings #include "processor.h" // include processor initialization functions #include "uart.h" // include uart library functions #include "rprintf.h" // include printf library functions int main(void) { // initialize processor processorInit(); // initialize uarts uart0Init(UART_BAUD(9600), UART_8N1); rprintfInit(uart0SendByte); // run the test rprintf("Hello World\n"); return 0; }
arm/LED点灯の作成とデバッグと同様に作成したプログラムをROMに書き込みます。 ROMへの書き込みには、script.ocdとopenocd-rom.cfgを使用します。
ターミナルで、プロジェクトディレクトリに移動した後、
$ make $ openocd -f openocd-rom.cfg
書き込みが完了したら、
$ jerm hello world
と出たら、成功です。
Armlibを使うととても簡単にRS232Cを使って端末ソフトと通信できます。 また、使用するARMのアーキテクチャをLPC等他のCPUに変えても、プログラムの変更は少なくてすみます。
この記事は、
皆様のご意見、ご希望をお待ちしております。