2009/05/25 からのアクセス回数 6771 ARMは、CPUコアは同じでも周辺IOの処理が各社まちまちなのが難点でした。 ARMlibは、安価に使えるLPC2000やAT91シリーズのCPUをターゲットに
を提供し、ARMの組み込み開発を容易にします。 armlib †AVRlibを出しているProcyonから、 Procyon ARMlib が出ています。 最初は、LPC2000をベースに開発していたみたいですが、atmelのat91シリーズ、aduc7000も 不完全ながら、サポートしているみたいです。 SAM7S256でarmlibを使う †ARMlibのサンプルでは、SAM7S256用のサンプルがないので、この例題はAT91シリーズの ユーザによい例になると思います。 ARMlibのインストール †Procyon ARMlib のページにアクセスし、
これで、インストール完了です。 詳しくは、 Installing ARMlib Manually を見てください。 makefileの変更 †サンプルから、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を設定 †次に、必要なファイルは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 †最後に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 -s 1 -p none -b 9600 /dev/cu.usbserial-FTBOK946 Jerminal v0.8095 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 candy Type "Ctrl-M ~ ." to exit. ispeed 9600 ospeed 9600 jermの初期メッセージ途中省略 Hello World と出たら、成功です。 Armlibを使うととても簡単にRS232Cを使って端末ソフトと通信できます。 また、使用するARMのアーキテクチャをLPC等他のCPUに変えても、プログラムの変更は少なくてすみます。 コメント †この記事は、 皆様のご意見、ご希望をお待ちしております。 Tweet |