2009年12月28日月曜日
無線LAN環境の構築 (corega CG-WLR300GNHの無線LANアクセスポイント使用)
最近、ノートPC、プレイステーション3を購入して、自宅のLAN環境を再構築します。
1.LAN再構築概要
1)現在のLAN環境
●HUB PCi EH-505 ポート数 5 [10Base-T]
●ブロードバンドルータ(KDDI ひかりOne) NEC Aterm BL170 ポート数 4 [100Base-T]
で 有効LANポート数 8
2)再構築LAN環境(画像)
●無線LANルータ corega CG-WLR300GNH ポート数 4 [1GBase-T]
●ブロードバンドルータ(KDDI ひかりOne) NEC Aterm BL170 ポート数 4 [100Base-T]
●HUB PCi EH-505 ポート数 5 [10Base-T]
で 有効LANポート数 10 + 無線LAN
※写真 手前から NEC Aterm BL170, corega CG-WLR300 , Modem, PCi EH-505
2.無線LANルータ選択について。
1)まず、手っ取り早く、必要なポートを増設することを考え、、、
今回、無線LANルータ corega CG-WLR300GNH を選択しました。はじめ、8ポートの100Base-TのHUBを考え、安いもので3千円程度、これを増設することで、有効LANポート数 16(+6)に増える、それで凌ごうと思っていました。
2)どうせなら、将来を考え、一纏めに、、、
しかし10Base-TのHUBを外すと、有効LANポート数 13、当然将来を考えると、一纏めにして、16ポートHUB 6千円程度もありと考えました。
3)ノートPCを使うようになって、、、
そのとき、さっさと購入してしまえばよかったのですが、今まで、デスクトップPCのみ使っていたのですが、アウトレットで購入したノートPCを使うようになり、使う毎に、HUBのポートに7mのケーブルを付け替えての使用で、当然、無線LANアクセスポイントが欲しくなりました。安いもので1万円程度、標準で3~5万円、今度は費用の面で躊躇。
4)無線LANルーターのアクセスポイント使用を知り、、、
無線LANルーターでは、有線LANポートが4ポート程度あり、低価格で魅力的だと思うのですが、現在のKDDI ひかりOneの環境では、なんとなく、無線LANルーター導入不可と思っていました。
(無線LANルーターに置き換えると、ひかりOne電話が使えなくなると思い。)
ふと、単純に、無線LANルーターでネットワークを増やしてしまえば可能ではないかと思い、各メーカーのサイトで仕様、取り扱い説明書をチェックしました。
ネットワークを増やすためには、無線LANルーターで、既存ネットワークアドレス(ルーターの外側)と、増設ネットワークアドレス(ルーターの内側)の設定が必要と思うのですが、どうもそのような設定は出来ないようです。
そのような事を調べているうちに、無線LANルーターのルーター機能を無効に出来る事(アクセスポイント使用)を知りました。それで、ようやく無線LANルーターの購入に踏み切りました。
メーカーおよび、機種については、仕様、価格の面で corega CG-WLR300GNH にしました、6千円で購入できました。
2.無線LANルータの設定(ノートPC Win7)
1)無線LANを試す。
①とりあえず、ルータのパッケージを開封し、電源アダプターをつなげ(電源ON)、ノートPCを立ち上げました。
②コントロールパネル/ネットワークの状態とタスクの表示(ネットワークと共有センター)で 「新しい接続または。ネットワークのセットアップ」を実行 「ワイヤレスネットワークを手動で接続します」を選択。
③ルータの底面にあるネットワーク名、セキュリティの種類を[WPA2-パーソナル]、暗号化の種類を[TKIP]、初期PINコード(->セキュリティキー)を設定する。
④ネットワークと共有センターで「ネットワークに接続」を選ぶと、ワイヤレスネットワーク接続の選択リストが表示される。ここで③で設定したネットワークを選択する。
⑤ルータの設定画面を確認
●webブラウザを立ち上げると、いきなりルーターに繋がった(と思う)、そこでユーザー[root]でログインできた。
●設定画面を色々見、ログアウトした。
2)ルーターをルータ機能OFFで起動
①今回のルーター使用は、ルーター起動OFFでの使用なので、電源を外し、背面のディップSWをOFFにして、電源を接続しなおした。
②ノートPCで無線LAN接続を試すが失敗。
この時点での接続は、既存のルータ(DHCP稼働中)と この無線LANルータからの上位接続が必要と思われる。しかし、この無線LANルーターのサブネットアドレスが異なるため不可。
(自宅のサブネットアドレスは 19x.16x.1x.00 ルータのサブネットアドレス(工場出荷時)は192.168.1.00)
3)ルーターのサブネットアドレスの変更(ルータ機能OFF)
①ノートPCと無線LANルーターをケーブルで接続した。
②ノートPCのIPアドレスを設定した。
本来ノートPCのIPアドレスの設定はDHCPで割り当てられる設定になっています。
この時点で、既存のDHCPと無線LANルータのサブネットが異なるので、ノートPCに固定のIPアドレスを設定します。無線LANルーターのサブネットと合せる為 一時的に 192.168.1.222 としました。
③ノートPC Webブラウザで無線LANルーターに接続します。
http://192.168.1.220 で 設定画面に繋がります。
④無線LANルーターのIPアドレス変更
●設定画面 LAN側設定/ルーターIP で [LAN側IPアドレス]、既存DHCP(ルーター)の除外アドレスのうちの1つを設定する。
(今回 19x.16x.1x.105 を設定 既存のDHCPは 19x.16x.1x.100 ~ 163 のIPアドレスが割当除外となっています。)
●ゲートウエイアドレス、DNSサーバーは、既存ルーターのアドレスを設定する。
3.無線LANルーターの確認
1)ノートPCのIPアドレスの設定をDHCPによる割当に戻す。
2)既存のルータの上位LANポートと無線LANルータのポートをつなぐ。
3)ノートPCで無線LAN接続を確認した。
4.corega に対する希望
設定画面 LAN側設定/ルーターIPで、ルーター機能ON、OFF両方のアドレス(初期値 192.168.1.1/192.168.1.220)設定が可能であれば、無線LAN設定がかなり容易となると思われます。
5.感想
当初、無線LANルーターの導入設定は簡単だと思っていました。HUBの増設並みに考えていました。暗号化等のセキュリティ設定があるとは思いませんでした。
実際、無線LAN接続を行うとき、無線LANの選択リストに10以上の無線LANが検出されました。近所にそれだけの、無線LANの使用者がいると言うことでしょう。セキュリティがしっかりしていないと他人のプライベートネットワークに接続出来てしまいます。なるほどと思いました。
それにしても検出無線LANが10を超えていたのには驚きすら感じます。
近年、液晶TV、BDレコーダ、ゲーム機、がネットワーク対応となって普通の家庭でもLANのポート数はかなり必要になっていると思います。8ポートのHUBでは早々に足りなくなると予想されます。
そこで、無線LAN・・・チャネル数は13、機器が必要になった場合のみチャネルが割当られます。家庭用のネットワークでは結構合理的なものと思います。
----メモ-----
※初期化ボタンで工場出荷時の状態に戻す方法
1 すべてのLAN ケーブルを抜きます。
2 AC アダプタを電源コンセントから抜き、1 分以上経過してから再び差し込みます。
3 初期化ボタンを15 秒以上押してから離します。
※現在ネットワーク接続機器
PC Desktop
NEC Value One [Celeron 2.93GHz WinXP]
HP xw4400 [Core 2 Duo 1.86GHz WinXP]
DELL Studio Slim [Core 2 Quad 2.33GHz WinVista]
DELL 430S [Pen4 WinXP]
PC Note
Dell inspiron 15 [Core 2 Duo 2.4GHz Win7]
Unix Workstation
IBM RS6000 [Power PC 604e 160MHz AIX 4.3]
Printer
EPSON PM-T960
液晶テレビ
SHARP AQUOS LC-37GX3W
その他
Panasonic DIGA Blu-ray Recoder
HITACH Woo DVD Recoder
SONY PS3
マイコン評価ボード等
2009年12月19日土曜日
LM3S8962 Evaluation Kit プログラム作成 2 (GNU gcc)
Texas Instruments(LUMINARY MICRO)社 Cortex-M3 MCU LM3S8962 マクロプロセッサ評価ボード EKI-LM3S8962 を、暇をみつけていじっています。
現在、引き続き、IAR Embedded Workbench のサンプルプログラムを、GNU gcc で作りなおしています。
1.Luminary Micro, Inc.サンプルプログラム。
・「sd_card」 SDカードのサンプルプログラム
・「enet_lwip」Ethernet接続のサンプルプログラム
・「qs_ek-lm3s8962」この評価ボードにインストールされていた、ゲームプログラム
このうち、「sd_card」は、所定の動作を確認できました。
「enet_lwip」、「qs_ek-lm3s8962」については、Ethernetの割り込みの動作が不全で、今のところ、Ethernet、割り込みおよび、システム系の初期化関数等を点検しています。
特に、これらのサンプルソースにある"#ifdef"文の挙動をチェックしています。
2.Luminary Micro, Inc.サンプルソースの手直し。
1)cpu.s の編集
arm-elf-as による、アセンブラコンパイルでエラーが起こる。エラーメッセージは、コメント行が不正と判断されている。
このソースファイルについては、#include "../asmdefs.h" と C言語ライクなコメントに違和感を感じています。
(対応するコンパイルオプションがあるのでしょうか?)
ひとまず。
①全コメント行を削除。
② asmdefs.h の内容で、cpu.s を書き換える。
セクション << The defines required for GCC.>> の #define文の内容で 書き換える。
例 #define __EXPORT__ .globl (asmdefs.h)
__EXPORT__ CPUcpsid を .globl CPUcpsid に書き換える。
-------------cpu.s-書き換え前-(コメント削除済み)------------------
#include "../asmdefs.h"
__LIBRARY__ __lib_cpu
__TEXT_NOROOT__
__EXPORT__ CPUcpsid
__THUMB_LABEL__
CPUcpsid __LABEL__
mrs r0, PRIMASK
cpsid i
bx lr
__EXPORT__ CPUcpsie
__THUMB_LABEL__
CPUcpsie __LABEL__
mrs r0, PRIMASK
cpsie i
bx lr
__EXPORT__ CPUwfi
__THUMB_LABEL__
CPUwfi __LABEL__
wfi
bx lr
__END__
-------------cpu.s-書き換え後-------------------
.syntax unified
.thumb
@ __lib_cpu
.text
.globl CPUcpsid
.thumb_func
CPUcpsid :
mrs r0, PRIMASK
cpsid i
bx lr
.globl CPUcpsie
.thumb_func
CPUcpsie :
mrs r0, PRIMASK
cpsie i
bx lr
.globl CPUwfi
.thumb_func
CPUwfi :
wfi
bx lr
.end
-------------cpu.s end----------------
現在、引き続き、IAR Embedded Workbench のサンプルプログラムを、GNU gcc で作りなおしています。
1.Luminary Micro, Inc.サンプルプログラム。
・「sd_card」 SDカードのサンプルプログラム
・「enet_lwip」Ethernet接続のサンプルプログラム
・「qs_ek-lm3s8962」この評価ボードにインストールされていた、ゲームプログラム
このうち、「sd_card」は、所定の動作を確認できました。
「enet_lwip」、「qs_ek-lm3s8962」については、Ethernetの割り込みの動作が不全で、今のところ、Ethernet、割り込みおよび、システム系の初期化関数等を点検しています。
特に、これらのサンプルソースにある"#ifdef"文の挙動をチェックしています。
2.Luminary Micro, Inc.サンプルソースの手直し。
1)cpu.s の編集
arm-elf-as による、アセンブラコンパイルでエラーが起こる。エラーメッセージは、コメント行が不正と判断されている。
このソースファイルについては、#include "../asmdefs.h" と C言語ライクなコメントに違和感を感じています。
(対応するコンパイルオプションがあるのでしょうか?)
ひとまず。
①全コメント行を削除。
② asmdefs.h の内容で、cpu.s を書き換える。
セクション << The defines required for GCC.>> の #define文の内容で 書き換える。
例 #define __EXPORT__ .globl (asmdefs.h)
__EXPORT__ CPUcpsid を .globl CPUcpsid に書き換える。
-------------cpu.s-書き換え前-(コメント削除済み)------------------
#include "../asmdefs.h"
__LIBRARY__ __lib_cpu
__TEXT_NOROOT__
__EXPORT__ CPUcpsid
__THUMB_LABEL__
CPUcpsid __LABEL__
mrs r0, PRIMASK
cpsid i
bx lr
__EXPORT__ CPUcpsie
__THUMB_LABEL__
CPUcpsie __LABEL__
mrs r0, PRIMASK
cpsie i
bx lr
__EXPORT__ CPUwfi
__THUMB_LABEL__
CPUwfi __LABEL__
wfi
bx lr
__END__
-------------cpu.s-書き換え後-------------------
.syntax unified
.thumb
@ __lib_cpu
.text
.globl CPUcpsid
.thumb_func
CPUcpsid :
mrs r0, PRIMASK
cpsid i
bx lr
.globl CPUcpsie
.thumb_func
CPUcpsie :
mrs r0, PRIMASK
cpsie i
bx lr
.globl CPUwfi
.thumb_func
CPUwfi :
wfi
bx lr
.end
-------------cpu.s end----------------
2009年12月9日水曜日
LM3S8962 Evaluation Kit プログラム作成 (GNU gcc)
Texas Instruments(LUMINARY MICRO)社 Cortex-M3 MCU LM3S8962 マクロプロセッサ評価ボード EKI-LM3S8962 について、キットに付随するサンプルプログラムをGNU gccでビルドし直しました。
1.サンプルプログラムの取り込み。
1)IAR Embedded Workbenchでサンプルワークスペースを開く。
①IAR Embedded Workbenchを立ち上げる。
②Example applications
③Lumirary/Stellaris/boads/dk-lm3s8962を選択
2)サンプルプログラムソースをコピー。
①開いている。ワークスペースのうち、とりあえず「driverlib」「blinky」「hello」「graphics」「uart_echo」のライブラリ、プログラムの File Propertisi... を調べる。
C:\Users\UserID**\Documents\IAR Embedded Workbench\arm\Luminary\Stellaris\src C:\Users\UserID**\Documents\IAR Embedded Workbench\arm\Luminary\Stellaris\boards\ek-lm3s8962\graphics
②プログラムソースをGNU gcc開発フォルダにコピーする。
「hello」の場合
IAR サンプル ソース ......\Stellaris\boards\ek-lm3s8962\hello\helloc.c を
GNU gcc 開発フォルダ(例) c:\Embedded\ARM_CortexM3\TI\Project\hello にコピー
③ライブラリソースをGNU gcc開発フォルダにコピーする。
・IAR ライブラリ ヘッダ
(共通ヘッダ)
......\Stellaris\asmdefs.h hw_adc.h hw_can.h hw_comp.h ......
(driverlib.a用)
......\Stellaris\inc\lm3s8962.h
......\Stellaris\src\adc.h can.h comp.h ......
(utilslib.a用)
......\Stellaris\utils\cmdline.h diag.h diagprintf.h ......
(glib.a用)
......\Stellaris\glib\canvas.h checkbox.h container.h ......
その他
......\Stellaris\glib\third_party以下のヘッダを適宜に。
・IAR ライブラリ ソース
(driverlib.a用)
......\Stellaris\src\adc.c can.c comp.c ......
(utilslib.a用)
......\Stellaris\utils\cmdline.h diag.h diagprintf.h ......
(glib.a用)
......\Stellaris\glib\canvas.c checkbox.c container.c ......
その他
......\Stellaris\glib\third_party以下のソースを適宜に。
・GNU gccライブラリ構成フォルダにコピー
(共通ヘッダ)
c:\Embedded\ARM_CortexM3\TI\Library\inc
(driverlib.a)
c:\Embedded\ARM_CortexM3\TI\Library\drivelib\inc
c:\Embedded\ARM_CortexM3\TI\Library\drivelib\src
(utilslib.a)
c:\Embedded\ARM_CortexM3\TI\Library\utilslib\inc
c:\Embedded\ARM_CortexM3\TI\Library\utilslib\src
(glib.a)
c:\Embedded\ARM_CortexM3\TI\Library\glib\inc
c:\Embedded\ARM_CortexM3\TI\Library\glib\src
その他 機能別に適宜にコピーする。
2.GNU gcc プログラム開発用環境構築 ライブラリ作成
1)Makefile作成 「drivelib」「glib」「utilslib」...
・開発環境は、数値(浮動小数点)演算プロセッサなし(ソフト数値演算)を選択。
・コンパイルオプション -mthumb -O0 -v (とりあえず)
2)メイク実行
3.各サンプルプログラムプロジェクト(ワークスペース)の整備
1)スタートアッププログラムソース(startup.S)、メモリ定義ファイルの(memory.def)、メイクファイル(Makefile)の入手し、各サンプルプログラムプロジェクトフォルダに置き、適宜に修正する。
・CQ出版Interface誌2008年11月号の記事「Thumb-2対応GCCクロス開発環境の構築」関連のソース等を同サイトからダウンロードする。
・ダウンロードファイル gcc_sample_20080830.tar.zip を展開
・展開したフォルダ gcc_sample_20080830.tar に Cygwin でアクセスする。
・Cygwin で コマンド 「tar -jxvf gcc_sample_20080830.tar.bz2」を実行してサンプルソース等を展開する。
・gcc_sample_20080830.tar/gcc_sample/cortex-m3 が今回利用するサンプルソースのフォルダです。
2)startup.sの修正。
-----------startup.s-------------------------
.text
.extern main
.extern _sdata_loadaddr
.extern _sp_base
.extern SysTick_Handler << コメント化
.extern XXX_handler << 割り込みハンドラー関数を宣言
# Top of Stack
.long _sp_base
# Reset Handler
.long _startup+1
.org 0x0C << コメント化
# HardFault
.long BreakPoint_Handler + 1 << コメント化
.org 0x3C << コメント化
# SysTick Handler
.long SysTick_Handler + 1 << コメント化
# USART1
.org 0xD4 << コメント化
.long USART_handler + 1 << コメント化
# 割り込み設定
.org 0xXX << 割り込み位置を指定
.long XXX_handler + 1 << 割り込みハンドラー関数を指定。(thumbモードなので+1)
.org 0xEC
.global _startup
_startup:
LDR r1, =_sdata_loadaddr
LDR r2, =_sdata
LDR r3, =_edata
__copy_loop:
LDRB r4, [r1]
STRB r4, [r2, #0]
ADD r1, r1, #1
ADD r2, r2, #1
CMP r3, r2
BGT __copy_loop
LDR R0, =main
LDR R1, =0x1
ORR R0, R1
BX R0
-----------startup.s---end-------------------
※割り込み位置 例UART0の場合
UART0の Interrupt Vector Number: 21
==> 21 X 4 = 84
==> 0x54
3)memory.defの修正。
memory_thumb.def を memory.defに
-----------memory.def------------------------
SECTIONS
{
.start 0x08000000 : { <<.start 0x00000000 に修正
_stext = .;
startup_thumb.o(.text)
_etext = .;
}
.text : {
_stext = .;
*(.text)
_etext = .;
}
.rdata : {
_srdata = .;
*(.rodata)
*(.rodata.str1.4)
_erdata = .;
}
.data 0x20000000: AT (LOADADDR(.rdata)+SIZEOF(.rdata)) {
_sdata_loadaddr = LOADADDR(.rdata)+SIZEOF(.rdata);
_sdata = .;
*(.data)
*(.zdata)
_edata = .;
}
.bss : { << 削除
_sbss = .; << 削除
*(.bss) << 削除
*(.comment) << 削除
_ebss = .; << 削除
} << 削除
_end = .;
. = ALIGN(0x4);
. += 0x200;
_sp_base = .;
}
-----------memory.def------------------------
4)Malkefileの修正。
Malkefileは 適宜に修正
Lumirary MicroR Flash Progremmer用のバイナリファイルのために
$(OBJCPY) -O binary gcc_sample_thumb gcc_sample_thumb.bin を使用する。
コンパイルオプションは
$(AS) -mcpu=cortex-m3 -mthumb --defsym THUMB=1 startup.s -o startup_thumb.o
$(CC) -mcpu=cortex-m3 -mthumb -c $< -o gcc_sample_thumb.o
を参考にする。
4.各サンプルプログラムプロジェクトのビルドおよび実行
1)「blinky」
・LED1の点滅を確認
2)「hello」
・表示メッセージを変更
・表示位置を変更
・表示明度を変更
3)「graphics」
・テロップ表示を変更
"This Aplication Developed by GNU gcc !" 写真はこのテロップの一部が表示された状態。
4)「uart_echo」
・PC ターミナルソフトからのキー入力を返す(エコーバック)を確認
・PC ターミナルソフトからのキー入力を表示するように変更
5.デモプログラムの復旧 ※2010.1.29追記
この評価キットのデモプログラム(ゲーム)の復旧は以下の手順で行う。
1)以下のデモプログラムの存在を確認 (ドライブCの場合)
C:\StellarisWare\boards\ek-lm3s8962\qs_ek-lm3s8962\gcc\qs_ek-lm3s8962.bin
*存在しない場合Luminary MicorのHPより、EK-LM3S8962 Firmware Development Packegeをダウンロード、インストール実行
2)Luminary MicorR Flash Programmerで上記のファイルを評価キットに書き込む。
①Configratoinタグ
Quick Setで「LM3S8962 Ethernet and CAN Evaluation Boad」を選択
②Programタグ
Select .bin fileで 上記ファイル「qs_ek-lm3s8962.bin」を選択
③Program実行
※IAR Embedded Workbenchによる開発 から GNU gccによる開発へ移行できなかった機能。
・cspy.cの持つ関数(Diag系関数)
※最初、生成したバイナリファイルXXX.binが500MB超えのファイルになった、確かにメモリマップを忠実にレイアウトすると、RAM領域0x20000000で512MB以上が確保されてしまう。始めは、仕方ないと思っていましたが、Flash Progremmerが受け付けないので色々試しているうちに、10KB前後のサイズになった。所定の機能が実現できたのでこれで良しと判断、結果オーライの感があり、少々不満。
2009年12月3日木曜日
GNU GCC 開発環境整備(For ARM7TDMI and Cortex-M3)
以前、ARM LPC2388 (CQ出版Interface誌付録基板) 用にGNU GCCの開発環境を整備しました。
今回、複数のタイプのARMプロセッサのアプリケーション開発に対応するため、再度開発環境を整備し直しました。
主な留意点は、
・浮動小数点演算コプロセッサ搭載、非搭載とMPUを2つに区分して、開発環境を整えます。
1.浮動小数点演算コプロセッサ非搭載(-msoft-float / -mfloat-abi=soft)
①インストール先ディレクトリ作成
・cd /usr/local
・mkdir arm-tools-sfp
②各パッケージの解凍(c:\DownLoad\GNUに各サイトよりダウンロード済み)
・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
1)binutilsパッケージのインストール
①cd binutils-2.20
②./configure --target=arm-elf --prefix=/usr/local/arm-tools-sfp ・・OK
③make ・・失敗 2.19でOK
④make install ・・2.19でOK
※binutils-2.20の場合 ③のmakeでエラー ・・・インストール失敗
gcc -DHAVE_CONFIG_H -I. -I. -I. -I../bfd -I./config -I./../include -I./.. -I./.
./bfd -DLOCALEDIR="\"/usr/local/arm-tools-sfp/share/locale\"" -W -Wall -Wstrict
-prototypes -Wmissing-prototypes -Werror -g -O2 -MT tc-arm.o -MD -MP -MF .deps/t
c-arm.Tpo -c -o tc-arm.o `test -f 'config/tc-arm.c' || echo './'`config/tc-arm.c
config/tc-arm.c: In function `make_mapping_symbol':
config/tc-arm.c:2488: warning: empty body in an if-statement
make[4]: *** [tc-arm.o] Error 1
make[4]: Leaving directory `/usr/local/binutils-2.20/gas'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/binutils-2.20/gas'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/binutils-2.20/gas'
make[1]: *** [all-gas] Error 2
make[1]: Leaving directory `/usr/local/binutils-2.20'
make: *** [all] Error 2
*まあ、よくわからないので、前回と同じbinutils-2.19で試す。
こちらは成功。
*全てのパッケージのインストール後に再度binutils-2.20のインストールを試すが、やはりmakeで失敗した。
2)gmpパッケージのインストール
①cd ../gmp-4.3.1
②./configure --prefix=/usr/local/arm-tools-sfp ・・OK
③make ・・OK
④make check ・・OK
⑤make install ・・OK
3)mpfrパッケージのインストール
①cd ../mpfr-2.4.1
②./configure --prefix=/usr/local/arm-tools-sfp --with-gmp=/usr/local/arm-tools-sfp ・・OK
③make・・OK
④make check・・OK
⑤make install・・OK
4)gccパッケージのインストール
①cd ..
②mkdir BuildGcc
③cd BuildGcc
④../gcc-4.4.2/configure --target=arm-elf --with-float=soft --with-gmp=/usr/local/arm-tools-sfp --with-newlib --with-mpfr=/usr/local/arm-tools-sfp --prefix=/usr/local/arm-tools-sfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
⑤make ・・・OK
⑥make install ・・・OK
*ここで/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
(newlibパッケージのインストール makeでの失敗対応)
・cd ユーザーホームディレクトリへ移動
・.bash_profileを編集し、/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
( PATH=/usr/local/arm-tools-sfp/bin:${PATH} を追加)
・Cygwinを一旦終わらせ、再稼動させる。
5)newlibパッケージのインストール
①cd /usr/local/newlib*
②./configure --target=arm-elf --with-float=soft --prefix=/usr/local/arm-tools-sfp ・・・OK
③make・・・失敗
④make install
※③のmakeでエラー ・・・インストール失敗
touch stmp-targ-include
Making all in libc
make[4]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
Making all in argz
make[5]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
arm-elf-cc -B/usr/local/newlib-1.17.0/arm-elf/newlib/ -isystem /usr/local/newli
-1.17.0/arm-elf/newlib/targ-include -isystem /usr/local/newlib-1.17.0/newlib/li
c/include -B/usr/local/newlib-1.17.0/arm-elf/libgloss/arm -L/usr/local/newlib-1
17.0/arm-elf/libgloss/libnosys -L/usr/local/newlib-1.17.0/libgloss/arm -DPACKAG
_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"1.17.0\" -DPA
KAGE_STRING=\"newlib\ 1.17.0\" -DPACKAGE_BUGREPORT=\"\" -I. -I../../../.././ne
lib/libc/argz -O2 -DARM_RDI_MONITOR -fno-builtin -g -O2 -c -o lib_a-dumm
.o `test -f 'dummy.c' || echo '../../../.././newlib/libc/argz/'`dummy.c
/bin/sh: arm-elf-cc: command not found
make[5]: *** [lib_a-dummy.o] Error 127
make[5]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Error 2
make[1]: Leaving directory `/usr/local/newlib-1.17.0'
make: *** [all] Error 2
*確かに arm-elf-cc は存在しなかった。
*再度gccのインストール(上書き) make all も実行 ・・・同じエラー
*/usr/local/arm-tools-sfp/binのディレクトリにパスを通すと成功。
6)gccパッケージの補足インストール
①cd ../BuildGcc
②make
③make install
7)その他
①cd ユーザーホームディレクトリへ移動
②.bash_profileを編集し、 PATH=/usr/local/arm-tools-sfp/bin:${PATH} を削除
③Cygwinを一旦終わらせ、再稼動させる。
2.浮動小数点演算コプロセッサ搭載(-mhard-float / -mfloat-abi=hard)
①インストール先ディレクトリ作成
・cd /usr/local
・mkdir arm-tools-hfp
②各パッケージの解凍
・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
1)binutilsパッケージのインストール
①cd binutils-2.19
②./configure --target=arm-elf --prefix=/usr/local/arm-tools-hfp ・・OK
③make ・・OK
④make install ・・OK
2)gmpパッケージのインストール
①cd ../gmp-4.3.1
②./configure --prefix=/usr/local/arm-tools-hfp ・・OK
③make ・・OK
④make check ・・OK
⑤make install ・・OK
3)mpfrパッケージのインストール
①cd ../mpfr-2.4.1
②./configure --prefix=/usr/local/arm-tools-hfp --with-gmp=/usr/local/arm-tools-hfp ・・OK
③make・・OK
④make check・・OK
⑤make install・・OK
4)gccパッケージのインストール
①cd ..
②mkdir BuildGcc
③cd BuildGcc
④../gcc-4.4.2/configure --target=arm-elf --with-float=hard --with-gmp=/usr/local/arm-tools-hfp --with-newlib --with-mpfr=/usr/local/arm-tools-hfp --prefix=/usr/local/arm-tools-hfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
⑤make ・・・OK
⑥make install ・・・OK
*ここで/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
・cd ユーザーホームディレクトリへ移動
・.bash_profileを編集し、/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
( PATH=/usr/local/arm-tools-hfp/bin:${PATH} を追加)
・Cygwinを一旦終わらせ、再稼動させる。
5)newlibパッケージのインストール
①cd /usr/local/newlib*
②./configure --target=arm-elf --with-float=hard --prefix=/usr/local/arm-tools-hfp ・・・OK
③make・・・OK
④make install・・・OK
6)gccパッケージの補足インストール
①cd ../BuildGcc
②make
③make install
7)その他
①cd ユーザーホームディレクトリへ移動
②.bash_profileを編集し、 PATH=/usr/local/arm-tools-hfp/bin:${PATH} を削除
3.2つの開発環境について 比較。
1)コンパイラー等開発ツール
◎/usr/local/arm-tools-sfp/bin、/usr/local/arm-tools-hfp/binの主要ツール
・arm-elf-gcc.exe( 519708Byte)
・arm-elf-as.exe (2757595Byte)
・arm-elf-ar.exe (1804448Byte)
・arm-elf-objcopy.exe(2303260Byte)
についてバイナリサイズは2つの環境とも同じでした。浮動小数点演算コプロセッサー使用、非使用で各ツール自体に異なることはないと推測。
2)ライブラリ
◎/usr/local/arm-tools-sfp/arm-elf/lib、/usr/local/arm-tools-hfp/arm-elf/libの主要ライブラリ
・libc.a(soft:3174978Byte hard:3169002Byte)
・libg.a(soft:3174978Byte hard:3169002Byte)
・libm.a(soft:953244Byte hard:876948Byte)
◎そのほかのライブラリ
・libgcc.a (soft:363326Byte hard:357882Byte)
・libgcov.a (soft:30906Byte hard:30906Byte) ・・・同じ
についてライブラリサイズは若干、浮動小数点演算コプロセッサ使用のほうが小さい。
今回、複数のタイプのARMプロセッサのアプリケーション開発に対応するため、再度開発環境を整備し直しました。
主な留意点は、
・浮動小数点演算コプロセッサ搭載、非搭載とMPUを2つに区分して、開発環境を整えます。
1.浮動小数点演算コプロセッサ非搭載(-msoft-float / -mfloat-abi=soft)
①インストール先ディレクトリ作成
・cd /usr/local
・mkdir arm-tools-sfp
②各パッケージの解凍(c:\DownLoad\GNUに各サイトよりダウンロード済み)
・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
1)binutilsパッケージのインストール
①cd binutils-2.20
②./configure --target=arm-elf --prefix=/usr/local/arm-tools-sfp ・・OK
③make ・・失敗 2.19でOK
④make install ・・2.19でOK
※binutils-2.20の場合 ③のmakeでエラー ・・・インストール失敗
gcc -DHAVE_CONFIG_H -I. -I. -I. -I../bfd -I./config -I./../include -I./.. -I./.
./bfd -DLOCALEDIR="\"/usr/local/arm-tools-sfp/share/locale\"" -W -Wall -Wstrict
-prototypes -Wmissing-prototypes -Werror -g -O2 -MT tc-arm.o -MD -MP -MF .deps/t
c-arm.Tpo -c -o tc-arm.o `test -f 'config/tc-arm.c' || echo './'`config/tc-arm.c
config/tc-arm.c: In function `make_mapping_symbol':
config/tc-arm.c:2488: warning: empty body in an if-statement
make[4]: *** [tc-arm.o] Error 1
make[4]: Leaving directory `/usr/local/binutils-2.20/gas'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/binutils-2.20/gas'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/binutils-2.20/gas'
make[1]: *** [all-gas] Error 2
make[1]: Leaving directory `/usr/local/binutils-2.20'
make: *** [all] Error 2
*まあ、よくわからないので、前回と同じbinutils-2.19で試す。
こちらは成功。
*全てのパッケージのインストール後に再度binutils-2.20のインストールを試すが、やはりmakeで失敗した。
2)gmpパッケージのインストール
①cd ../gmp-4.3.1
②./configure --prefix=/usr/local/arm-tools-sfp ・・OK
③make ・・OK
④make check ・・OK
⑤make install ・・OK
3)mpfrパッケージのインストール
①cd ../mpfr-2.4.1
②./configure --prefix=/usr/local/arm-tools-sfp --with-gmp=/usr/local/arm-tools-sfp ・・OK
③make・・OK
④make check・・OK
⑤make install・・OK
4)gccパッケージのインストール
①cd ..
②mkdir BuildGcc
③cd BuildGcc
④../gcc-4.4.2/configure --target=arm-elf --with-float=soft --with-gmp=/usr/local/arm-tools-sfp --with-newlib --with-mpfr=/usr/local/arm-tools-sfp --prefix=/usr/local/arm-tools-sfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
⑤make ・・・OK
⑥make install ・・・OK
*ここで/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
(newlibパッケージのインストール makeでの失敗対応)
・cd ユーザーホームディレクトリへ移動
・.bash_profileを編集し、/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
( PATH=/usr/local/arm-tools-sfp/bin:${PATH} を追加)
・Cygwinを一旦終わらせ、再稼動させる。
5)newlibパッケージのインストール
①cd /usr/local/newlib*
②./configure --target=arm-elf --with-float=soft --prefix=/usr/local/arm-tools-sfp ・・・OK
③make・・・失敗
④make install
※③のmakeでエラー ・・・インストール失敗
touch stmp-targ-include
Making all in libc
make[4]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
Making all in argz
make[5]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
arm-elf-cc -B/usr/local/newlib-1.17.0/arm-elf/newlib/ -isystem /usr/local/newli
-1.17.0/arm-elf/newlib/targ-include -isystem /usr/local/newlib-1.17.0/newlib/li
c/include -B/usr/local/newlib-1.17.0/arm-elf/libgloss/arm -L/usr/local/newlib-1
17.0/arm-elf/libgloss/libnosys -L/usr/local/newlib-1.17.0/libgloss/arm -DPACKAG
_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"1.17.0\" -DPA
KAGE_STRING=\"newlib\ 1.17.0\" -DPACKAGE_BUGREPORT=\"\" -I. -I../../../.././ne
lib/libc/argz -O2 -DARM_RDI_MONITOR -fno-builtin -g -O2 -c -o lib_a-dumm
.o `test -f 'dummy.c' || echo '../../../.././newlib/libc/argz/'`dummy.c
/bin/sh: arm-elf-cc: command not found
make[5]: *** [lib_a-dummy.o] Error 127
make[5]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Error 2
make[1]: Leaving directory `/usr/local/newlib-1.17.0'
make: *** [all] Error 2
*確かに arm-elf-cc は存在しなかった。
*再度gccのインストール(上書き) make all も実行 ・・・同じエラー
*/usr/local/arm-tools-sfp/binのディレクトリにパスを通すと成功。
6)gccパッケージの補足インストール
①cd ../BuildGcc
②make
③make install
7)その他
①cd ユーザーホームディレクトリへ移動
②.bash_profileを編集し、 PATH=/usr/local/arm-tools-sfp/bin:${PATH} を削除
③Cygwinを一旦終わらせ、再稼動させる。
2.浮動小数点演算コプロセッサ搭載(-mhard-float / -mfloat-abi=hard)
①インストール先ディレクトリ作成
・cd /usr/local
・mkdir arm-tools-hfp
②各パッケージの解凍
・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
1)binutilsパッケージのインストール
①cd binutils-2.19
②./configure --target=arm-elf --prefix=/usr/local/arm-tools-hfp ・・OK
③make ・・OK
④make install ・・OK
2)gmpパッケージのインストール
①cd ../gmp-4.3.1
②./configure --prefix=/usr/local/arm-tools-hfp ・・OK
③make ・・OK
④make check ・・OK
⑤make install ・・OK
3)mpfrパッケージのインストール
①cd ../mpfr-2.4.1
②./configure --prefix=/usr/local/arm-tools-hfp --with-gmp=/usr/local/arm-tools-hfp ・・OK
③make・・OK
④make check・・OK
⑤make install・・OK
4)gccパッケージのインストール
①cd ..
②mkdir BuildGcc
③cd BuildGcc
④../gcc-4.4.2/configure --target=arm-elf --with-float=hard --with-gmp=/usr/local/arm-tools-hfp --with-newlib --with-mpfr=/usr/local/arm-tools-hfp --prefix=/usr/local/arm-tools-hfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
⑤make ・・・OK
⑥make install ・・・OK
*ここで/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
・cd ユーザーホームディレクトリへ移動
・.bash_profileを編集し、/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
( PATH=/usr/local/arm-tools-hfp/bin:${PATH} を追加)
・Cygwinを一旦終わらせ、再稼動させる。
5)newlibパッケージのインストール
①cd /usr/local/newlib*
②./configure --target=arm-elf --with-float=hard --prefix=/usr/local/arm-tools-hfp ・・・OK
③make・・・OK
④make install・・・OK
6)gccパッケージの補足インストール
①cd ../BuildGcc
②make
③make install
7)その他
①cd ユーザーホームディレクトリへ移動
②.bash_profileを編集し、 PATH=/usr/local/arm-tools-hfp/bin:${PATH} を削除
3.2つの開発環境について 比較。
1)コンパイラー等開発ツール
◎/usr/local/arm-tools-sfp/bin、/usr/local/arm-tools-hfp/binの主要ツール
・arm-elf-gcc.exe( 519708Byte)
・arm-elf-as.exe (2757595Byte)
・arm-elf-ar.exe (1804448Byte)
・arm-elf-objcopy.exe(2303260Byte)
についてバイナリサイズは2つの環境とも同じでした。浮動小数点演算コプロセッサー使用、非使用で各ツール自体に異なることはないと推測。
2)ライブラリ
◎/usr/local/arm-tools-sfp/arm-elf/lib、/usr/local/arm-tools-hfp/arm-elf/libの主要ライブラリ
・libc.a(soft:3174978Byte hard:3169002Byte)
・libg.a(soft:3174978Byte hard:3169002Byte)
・libm.a(soft:953244Byte hard:876948Byte)
◎そのほかのライブラリ
・libgcc.a (soft:363326Byte hard:357882Byte)
・libgcov.a (soft:30906Byte hard:30906Byte) ・・・同じ
についてライブラリサイズは若干、浮動小数点演算コプロセッサ使用のほうが小さい。
登録:
投稿 (Atom)