arm/armlibを使ってみる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
2009/05/25 からのアクセス回数 &counter;
#contents
ARMは、CPUコアは同じでも周辺IOの処理が各社まちまちなのが...
ARMlibは、安価に使えるLPC2000やAT91シリーズのCPUをターゲ...
- タイマー
- RS232C通信
- I2Cマスター
- SPIインタフェース
- FATファイルシステム
- ネットワークライブラリ
を提供し、ARMの組み込み開発を容易にします。
** armlib [#f69648d7]
AVRlibを出しているProcyonから、
[[Procyon ARMlib>http://hubbard.engr.scu.edu/embedded/arm...
が出ています。
最初は、LPC2000をベースに開発していたみたいですが、atmel...
不完全ながら、サポートしているみたいです。
** SAM7S256でarmlibを使う [#o18c7761]
ARMlibのサンプルでは、SAM7S256用のサンプルがないので、こ...
ユーザによい例になると思います。
*** ARMlibのインストール [#p31e65f9]
[[Procyon ARMlib>http://hubbard.engr.scu.edu/embedded/arm...
のページにアクセスし、
- ARMlib including docs and examples (zip file, 1.3M , Mo...
をクリックするとZIPファイルがダウンロードされます。
- 適当な場所に解凍します、私は~/local/arm/armlibに入れま...
- 環境変数ARMLIBにarmlibの場所をセットします、私はターミ...
以下のように設定しました。
#pre{{
export ARMLIB=$HOME/local/arm/avrlib
}}
これで、インストール完了です。
詳しくは、
[[Installing ARMlib Manually>http://hubbard.engr.scu.edu/...
を見てください。
*** makefileの変更 [#o590ad91]
サンプルから、&ref(makefile); をコピーし、以下の項目を変...
- TRG : ターゲット名は、Armlibを使い慣れるまでmainを使い...
- ARMLIB : armlibのインストール場所を設定します。
- ARMLIB_ARCH_SRC, ARMLIB_SRC : 使用するライブラリのソフ...
- LDFLAGS : リンクコマンドファイル名を指定します。
makefileの設定例を抜粋します。
#pre{{
TRG = main
ARMLIB = $(HOME)/local/arm/armlib
ARCH = at91
ARMLIB_ARCH_SRC = processor.c uart.c
ARMLIB_SRC = rprintf.c
}}
Armlibを使った最初の、例題は、RS232C経由でターミナルにHel...
使用する評価ボードはOlimexの
[[AT91SAM7S256ボード>http://www.olimex.com/dev/sam7-p256....
です。
- ARCH : at91を指定します
- ARMLIB_ARCH_SRC : processor.c uart.cはCPUタイプに依存...
- ARMLIB_SRC : rprintf.cはライブラリ共通なので、ARMLIB_S...
- LDFLAGS : at91sam7s256-rom.ldをリンクコマンドとして指定...
*** global.hを設定 [#j76b466a]
次に、必要なファイルは&ref(global.h);です。
最初はどうやって設定すればよいか分かりませんでした。
AT91SAM7S256のサンプルプログラムのコメントを頼りに、以下...
- F_CPU : 外付けクリスタルの周波数を設定します、ここでは1...
- OSC_DIV : サンプルのコメントでは、OSC_DIVを5としている...
- PLL_MUL : PLLとF_CPUの関係は以下のようになっています、...
-- PLL = (18.432/OSC_DIV*(PLL_MUL+1) => 95.8464MHz
-- F_CPU = PLL/2 =>47.9232MHz
#pre{{
#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 [#mff3a5c0]
最後に&ref(main.c);について説明します。
- インクルードファイル
-- global.h : 使用するボードの設定情報をインクルード(マ...
-- 使用するライブラリのヘッダファイルをインクルードする
- main関数
-- processorInit : 使用するCPUの初期設定を行う
-- uart0Init : RS232Cライブラリの初期設定を行う(ボーレー...
-- rprintfInit : rprintf の初期設定を行う、rprintfで使用...
-- rprintf : hello world\nを出力する。
#pre{{
#include "global.h" // include our global project setti...
#include "processor.h" // include processor initializati...
#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;
}
}}
** プログラムの書き込みと実行 [#yc6e1387]
[[arm/LED点灯の作成とデバッグ]]と同様に作成したプログラム...
ROMへの書き込みには、script.ocdとopenocd-rom.cfgを使用し...
ターミナルで、プロジェクトディレクトリに移動した後、
#pre{{
$ make
$ openocd -f openocd-rom.cfg
}}
書き込みが完了したら、
- RS232Cケーブルを接続し、
- 端末ソフトを起動、ここではjermを起動します。
- TAGライターをケーブルを外して、ボードの電源を入れ直して...
- AT91SAM7S256ボードのジャンパーは、RXD0, TXD0に(写真手...
&ref(uart.jpg);
#pre{{
$ jerm -s 1 -p none -b 9600 /dev/cu.usbserial-FTBOK946
Jerminal v0.8095 Copyright (C) 2000, 2001, 2002, 2003, 2...
Type "Ctrl-M ~ ." to exit.
ispeed 9600 ospeed 9600
jermの初期メッセージ途中省略
Hello World
}}
と出たら、成功です。
Armlibを使うととても簡単にRS232Cを使って端末ソフトと通信...
また、使用するARMのアーキテクチャをLPC等他のCPUに変えても...
** コメント [#qf94e4e2]
この記事は、
#vote(おもしろかった,そうでもない,わかりずらい)
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
2009/05/25 からのアクセス回数 &counter;
#contents
ARMは、CPUコアは同じでも周辺IOの処理が各社まちまちなのが...
ARMlibは、安価に使えるLPC2000やAT91シリーズのCPUをターゲ...
- タイマー
- RS232C通信
- I2Cマスター
- SPIインタフェース
- FATファイルシステム
- ネットワークライブラリ
を提供し、ARMの組み込み開発を容易にします。
** armlib [#f69648d7]
AVRlibを出しているProcyonから、
[[Procyon ARMlib>http://hubbard.engr.scu.edu/embedded/arm...
が出ています。
最初は、LPC2000をベースに開発していたみたいですが、atmel...
不完全ながら、サポートしているみたいです。
** SAM7S256でarmlibを使う [#o18c7761]
ARMlibのサンプルでは、SAM7S256用のサンプルがないので、こ...
ユーザによい例になると思います。
*** ARMlibのインストール [#p31e65f9]
[[Procyon ARMlib>http://hubbard.engr.scu.edu/embedded/arm...
のページにアクセスし、
- ARMlib including docs and examples (zip file, 1.3M , Mo...
をクリックするとZIPファイルがダウンロードされます。
- 適当な場所に解凍します、私は~/local/arm/armlibに入れま...
- 環境変数ARMLIBにarmlibの場所をセットします、私はターミ...
以下のように設定しました。
#pre{{
export ARMLIB=$HOME/local/arm/avrlib
}}
これで、インストール完了です。
詳しくは、
[[Installing ARMlib Manually>http://hubbard.engr.scu.edu/...
を見てください。
*** makefileの変更 [#o590ad91]
サンプルから、&ref(makefile); をコピーし、以下の項目を変...
- TRG : ターゲット名は、Armlibを使い慣れるまでmainを使い...
- ARMLIB : armlibのインストール場所を設定します。
- ARMLIB_ARCH_SRC, ARMLIB_SRC : 使用するライブラリのソフ...
- LDFLAGS : リンクコマンドファイル名を指定します。
makefileの設定例を抜粋します。
#pre{{
TRG = main
ARMLIB = $(HOME)/local/arm/armlib
ARCH = at91
ARMLIB_ARCH_SRC = processor.c uart.c
ARMLIB_SRC = rprintf.c
}}
Armlibを使った最初の、例題は、RS232C経由でターミナルにHel...
使用する評価ボードはOlimexの
[[AT91SAM7S256ボード>http://www.olimex.com/dev/sam7-p256....
です。
- ARCH : at91を指定します
- ARMLIB_ARCH_SRC : processor.c uart.cはCPUタイプに依存...
- ARMLIB_SRC : rprintf.cはライブラリ共通なので、ARMLIB_S...
- LDFLAGS : at91sam7s256-rom.ldをリンクコマンドとして指定...
*** global.hを設定 [#j76b466a]
次に、必要なファイルは&ref(global.h);です。
最初はどうやって設定すればよいか分かりませんでした。
AT91SAM7S256のサンプルプログラムのコメントを頼りに、以下...
- F_CPU : 外付けクリスタルの周波数を設定します、ここでは1...
- OSC_DIV : サンプルのコメントでは、OSC_DIVを5としている...
- PLL_MUL : PLLとF_CPUの関係は以下のようになっています、...
-- PLL = (18.432/OSC_DIV*(PLL_MUL+1) => 95.8464MHz
-- F_CPU = PLL/2 =>47.9232MHz
#pre{{
#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 [#mff3a5c0]
最後に&ref(main.c);について説明します。
- インクルードファイル
-- global.h : 使用するボードの設定情報をインクルード(マ...
-- 使用するライブラリのヘッダファイルをインクルードする
- main関数
-- processorInit : 使用するCPUの初期設定を行う
-- uart0Init : RS232Cライブラリの初期設定を行う(ボーレー...
-- rprintfInit : rprintf の初期設定を行う、rprintfで使用...
-- rprintf : hello world\nを出力する。
#pre{{
#include "global.h" // include our global project setti...
#include "processor.h" // include processor initializati...
#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;
}
}}
** プログラムの書き込みと実行 [#yc6e1387]
[[arm/LED点灯の作成とデバッグ]]と同様に作成したプログラム...
ROMへの書き込みには、script.ocdとopenocd-rom.cfgを使用し...
ターミナルで、プロジェクトディレクトリに移動した後、
#pre{{
$ make
$ openocd -f openocd-rom.cfg
}}
書き込みが完了したら、
- RS232Cケーブルを接続し、
- 端末ソフトを起動、ここではjermを起動します。
- TAGライターをケーブルを外して、ボードの電源を入れ直して...
- AT91SAM7S256ボードのジャンパーは、RXD0, TXD0に(写真手...
&ref(uart.jpg);
#pre{{
$ jerm -s 1 -p none -b 9600 /dev/cu.usbserial-FTBOK946
Jerminal v0.8095 Copyright (C) 2000, 2001, 2002, 2003, 2...
Type "Ctrl-M ~ ." to exit.
ispeed 9600 ospeed 9600
jermの初期メッセージ途中省略
Hello World
}}
と出たら、成功です。
Armlibを使うととても簡単にRS232Cを使って端末ソフトと通信...
また、使用するARMのアーキテクチャをLPC等他のCPUに変えても...
** コメント [#qf94e4e2]
この記事は、
#vote(おもしろかった,そうでもない,わかりずらい)
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc