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----------------

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) ・・・同じ
 についてライブラリサイズは若干、浮動小数点演算コプロセッサ使用のほうが小さい。

2009年11月29日日曜日

LM3S8962 Evaluation Kit! を試す。



STMicroelectronicsの評価キットを色々操作しているうちに、テキサス・インスツルメンツの評価キット LM3S8962 Evaluation Kit が届きました。
この評価キットは Cortex-M3コアの LM3S8962(メインボード)と、LM3S2110(サブボード)の2つのマイコンでCAN(Controller Area Network)通信を試せる構成になっています。
また、Ethernet、microSDカードスロット、スピーカー、128×64ドットOLED(グラフィック表示)等が搭載されていて、多彩なアプリケーションの開発が手軽に出来るのではと期待できます。


とりあえず一通り試します。

1.準備
 1)付属のDVDをPCにセットする。
   ○LUMINARY MICROのHTML画面
   ○Document/Read Me First - Viewで「LM3S8962 EVALUATONKIT README FIRST」を開く。

2.「README FIRST」記載に従う。
 1)付属フラットケーブル(10線)で LM3S8962 Evaluation Board(本体ボード)とLM3S2110 CAN Device Board(サブボード)のお互いのCANポートをつなぐ。
 2)付属USBケーブルでPCと LM3S8962 Evaluation Board P4をつなぐ
   ○微妙なサウンドと、液晶にLUMINARY、IARのロゴが表示された後ゲームが始まった。
   ○ゲームを一通り試す、敢え無くGame Over 注目すべきは、IPアドレスが表示される事、さらにスクリーンセーバも表示(詳細、後述)
 3)デバイスドライバのインストール
   ○PC側で新規デバイスの検出。
  ①デバイスドライブソフトウエアインストールを始める。
  ②ドライバの検索先をDVDドライブに指定する。
    「Stellaris Evaluation Boad A」のインストール完了を確認。

 ※ゲーム(サンプルアプリケーション)
   ①起動時、サウンドと伴にLUMINARY、IARのロゴが表示、Ethernet接続で、DNSからIPアドレスの割当を受ける、そのアドレスが表示される。
   ②一見パックマン風のゲーム、[SELECT]ボタンでゲーム開始 [SW3-6]ボタンで上下左右移動。[SELECT]ボタンでミサイル発射、モンスターを撃破
   ③ゲーム開始前、ゲームOver後、に一定期間経つと、スクリーンセーバが表示される。スクリーンセーバも消えた後、本体ボードLED1がゆるい点滅、CANサブボードLED100が点滅する。
   ④起動時、ゲームOver時のサウンドの音量はCANサブボードの[SW100,101]で調整できる。
   ⑤起動時、シリアルポートからWelcomeが出力される。ゲーム開始でスコア0、ゲームOverでスコアがシリアルポートに出力される。
     (PC並びにターミナルソフト設定 bau:11520 data:8bit parity:non stopbit:1 flow:non)
   
 ※あまりこのサンプルアプリケーションにはまると、本格的なアプリケーション開発前に基板が壊れてしまいそうなので注意。

2009年11月25日水曜日

ALTERA Quartus II 9.1 の インストール

先日ALTERAからのメールマガジンでQuartus IIのバージョンアップの案内がありました。
QuartusIIのインストールを行い、その手順を以下に記します。

1.DELL Inspiron 15 CPU:Core2Duo Mem:4GB(インストール作業前空き:1.5G) OS:Windows7 Home Premium 32bit その他:ウイルスセキュリティZero常駐

 1)ALTERAホームページにアクセスし、QuartusIIのダウンロードを行いました。
 2)ダウンロードファイルを実行し、インストール作業を行いました。
 3)インストール途中で エラー発生
Fueature:IP Library
Component: IP Library files
File: C:\altera\91\ip\altera\seriallite_ii\lib\ip_toolbench\utl\lib\Vx2\VxMa9607.rra
Error: このコマンドを実行するのに十分な記憶域がありません。
4)対処
   ①インストールプログラムを起動させた。
   ②インストールプログラムの操作中(Setup Typeの選択)、Windousタスクマネージャを立ち上げた。
   ③タスクマネージャ「プロセス」タグで、google toolbar,ウイルスセキュリティ関連のプロセスを終了させた。
   ④残りのインストール作業を続けた。
    >>>結果 前述のエラーが発生、③で停止させたプロセスとの関連性は解らないが、インストール発生箇所が異なった。
    >>>インストールを "Custom"で行い、インストール内容をCycloneに絞って行ってみたが同様に失敗した。
   
  ※現時点でWindows7でのQuartusII 9.1 のインストールは不可(私にとっては!)

2.DELL Studio Slim CPU:Core2Quad Mem:4GB(インストール作業前空き:0GB タスクマネージャ/パフォーマンス) OS:Windows Vista Home Premium 64bit その他:Windows Live OneCare等多数の
サービスが常駐。
 1)DELL Inspiron 15でダウンロードした QuartusIIのダウンロードファイルを。
 2)ダウンロードファイルを実行し、インストール作業を行いました。
 3)インストール成功

  ※Windows VistaでのQuartusII 9.1 のインストールはスムーズに行えた。

Windows7でのインストール失敗は、少々残念でした。
私のWindows7のイメージとして、VISTAが巨大で、おせっかいOSであったことにたいする見直しとして、Windows XPを、ブラシュアップし直したものと思っていました。
現在保有しているソフトウエアもある程度使えると思っていたのですが。。




2009年11月21日土曜日

IAR KickStart Kit STM3210E-SK を試す。



 STMicroelectronics のご好意により、先日ET2009で入手したIAR KickStart Kit STM3210E-SKを試します。

1.準備、キットの情報を調べる。
 1)「ST ARM Core-Based Microcontrollers and IAR KickStart Kit」(
リーフ)から。
  ・キット本体の構成 STM32F103ZE-SK+IAR J-Link (On Boad debug Interface)
    IAR J-Link(ARM 用USB 接続JTAG ICE)がキット本体にすでに乗っている。    
  ・IAR Embedded Workbench のコードサイズ制限 32KB (exsample application も32KB以下)
 2)IAR KickStartKit CDを調べる。
   環境 Windows VISTA 64
  ①CDをPCにセットする。
    自動起動 Start.exeを実行を許可する。[WinVISTA]
  ②IAR KickStartが立ち上がる。
  ③「QuickStart Guide and product Information」
    ・Guides and Manuals
     ・IAR Kit QuickStart Guid(.pdf)
    ・STM32F103 Information
     ・Reference manual
     ・Data sheet
    ・Boad schematic

  ※マイクロコントローラ:STM32F103ZE(LQFP144)  

2.IAR Embedded Workbench のインストール。
 引き続き、IAR KickStartの作業
  1)「Software installations」
   ①IAR Embedded Workbench のインストール
     KickStart Editionをクリック
   ②「Welcome to IAR Systems IAR Embedded Workbench Installation」
   ③Install IAR Embedded Workbenchをクリック
     ・Get a license
       ・IAR ホームページ 「Product Registration」でユーザ登録
           メールアドレス等を登録
           会社名、HPは適当に入力
       ・IARからメールが届く
       ・そこに登録確認用のhttpアドレスが記載、これをクリック
       ・IAR ホームページ 「Registration Confirmed」
           License Number と License Key が記載
     ・IAR Embedded Workbenchのインストール 
       ・ライセンスNo. License Key IARのホームページの記載のものCopy/Past
     ・IAR J-Link On Board のインストール
      ・PCとボードをUSBで接続(ステッピングモータの脇のUSBコネクタ)
       ・PWR_LED 点灯
       ・LED点滅
       ・STAT4(LED)点滅
       ・カラーLCDにIARのロゴ表示
     ・PCに「新しいハードうえあの検出」=>ドライバのインストールを実行
       ・ディレクトリC:\Program Files(x86)\IAR Systems\Embedded Workbench 5.0 Kickstart\arm\drivers\JLink\を指定
      ・評価ボード設定
        PWR_SEL Pin3-4 closed - power from J-Link
        JTAG_SEL Open, J-Link-OB is used
3.Example Application の実行
  1)Embedded Workbenchの実行
    ・スタート>すべてのプログラム>IAR Systems>IAR Embeded Workbench for ARM KickStart>IAR Embeded Workbench で実行
  2)Example アプリケーションの実行
    IAR Embeded Workbench IDE起動で「Embedded Workbench Start」ダイアログ表示
    ①Example アプリケーションをクリック
     ST>STM32F10x>IAR-STM32F103ZE-SKを選択しOpen
    ②「Choose destination folder」のダイアログが表示
     適宜なフォルダ ”IAR-SK-Work”を作成し、それを選択
    ③「Workspace」ウインドウで ”LCD_demo Flash Debug”を右クリック選択 「Set as Active」
   (④「LCD_Demo」タグを選択)
    ⑤Workspace」ウインドウの上部コンボボックスに”LCD_demo Flash Debug”が表示
    ⑥Exampleアプリケーションのメイク
     Project>Make 実行
    ⑦Exampleアプリケーションのダウロード
     Project>Download and debug
    ⑧Exampleアプリケーションのデバッグ実行
     評価キットのLCDにカラーパターン表示

3.Example Application LCD_demo について
 1)動作
  ①立ち上がり
    IARのロゴ表示
    カラーパターン表示
  ②実行中
   ・Push Button[USER]でバックライト調整モードに切り替え
   ・Push Button[WKUP]でコントラスト調整モードに切り替え
   ・TRIMMER[AN_TR]でバックライト、コントラストの調整を行う。
 2)解析
  ①Push Button[USER]
    ・CPUピン No.93
    ・ピン機能 PG8
  ②Push Button[WKUP]
    ・CPUピン No.34
    ・ピン機能 PA0、[WKUP]、USART2_CTS(8)、ADC123_IN0、TIM2_CH1_ETR、TIM5_CH1、TIM8_ETR
  ③TRIMMER[AN_TR]
    ・CPUピン No.44
    ・ピン機能 PC4、ADC12_IN14
  ④Graphic LCD
    CPU Pin Func.
    -------+------------------------------------------------------  
    No.42 SPI1_MISO、PA6、TIM8_BKIN、ADC12_IN6、TIM3_CH1、TIM1_BKIN
    No.41 SPI1_SCK、PA5、DAC_OUT2、ADC12_IN5
    No.42 SPI1_MOSI、PA7、TIM8_CH1N、ADC12_IN7、TIM3_CH2、TIM1_CH1N
    No.29 (LCD_CS)、PC3、ADC123_IN13
    No.75 (LCD_RS)、PB14、SPI2_MISO、TIM1_CH2N、USART3_RTS
    No.135 (LCD_BL)、PB5、I2C1_SMBA、SPI3_MOSI、I2S3_SD、TIM3_CH2、SPI1_MOSI

  ⑤Exampleアプリケーションの標準出力はこのLCDに行われる。
   (printf関数で文字が表示される。)

4.Example Application Acc_demo について
1)動作
  評価ボードの傾きを表示し、その傾きに合せてステッピングモータが回転する。
5.Example Application MassStrage について
  サイズ制限に引っかかる。
6.Example Application Temp_demo について
1)動作
   温度表示
7.Example Application USBMouse について
1)動作
   5V電源ジャック側のUSBコネクタとPCを接続
   ジョイステックと2プッシュボタンでマウスとして動作する。
8.Example Application AudioDevice について
1)動作
   5V電源ジャック側のUSBコネクタとPCを接続
   オーディオミニプラグでスピーカーにつなぐとUSBスピーカとして音声出力。
9.Example Application VirtualCom について
  サイズ制限に引っかかる。
10.RTOSを試す。
 1)インストール
  再び、IAR KickStartの作業
  ①「RTOS/middleware」をクリック
  ②「Boad support package」をクリック
    フォルダSTM_HDが表示される。 このフォルダを適宜なフォルダにコピーする。
  ③IAR Embedded Workbenchで ワークスペース[Start_STM32_HD.eww]をOpenし、メイク/ダウンロードする。
 2)実行 2つのLEDが 異なる周期で点滅する。
   2つのタスクを登録し、各タスクごとにLED点滅させる。

感想としてサンプルアプリケーションのソースコード、特にSTMicroelectronicsのライブラリ コードソース[stm32f10x_XXX.h stm32f10x_XXX.c |stm32f10x_systick stm32f10x_systick stm32f10x_systick....等 ]が充実している。
評価ボード自体、カラーLCD、SDカード、シリアルポート、おまけ的に温度センサ、傾斜センサ、ステッピングモータ等々多彩な機能を搭載している。 Ethernetが無いのが残念。
IAR Embedded Workbench の製品版を入手できれば、短期間で目的のアプリケーションが作成できると思われます。
ただ、後は、STMicroelectronics のダウンローダーDfuSe でWorkbench で開発したアプリケーションをどうやって実機にダウンロードするかが、これからの課題です。
一応、考えうる手順を書き留めます。

1)IAR Embedded Workbenchのアプリケーション作成。
 ①hexファイル出力設定
  ・Project>Optionsで「Option for node "XXXX"」ダイアログが表示される。
  ・Output Convert で Generate additional output のチェックボックスをチェックし、Output formatでIntel extendedを選択
 ②アプリケーションをメイクする。 XXXX.hexファイルが作成される。
2)DFUファイル作成
 ①DFU File Managerを立ち上げる
  ・スタート>すべてのプログラム>STMicroelectronics>DfuSe>DFU File Managerで起動
 ②”I want to GENARATE a DFU file from S19,HEX,BIN files”を選択
 ③[S19 or Hex...]で XXXX.hexファイルを開く
 ③Generate実行 ファイル名を指定する。
3)ダウンロード実行 
 ①DfuSe Demonstrationを立ち上げる。
  ・スタート>すべてのプログラム>STMicroelectronics>DfuSe>DfuSe Demonstrationで起動
 ②Upgrede or Verify Actionの[Chose...]でDFUファイルを選択する。
 ③[Upgrade]で書き込み実行

4)ダウンロードについて。調査課題
 ・IAR KickStart Kit STM3210E-SKにはJTAGコネクタが2つのUSBコネクタの間にある。このコネクタはSTM32F103ZEのJTAGデバッグポートに直結 STMicroelectronics STM32F20x用のJTAGケーブル(USB)が有ればいいのですが。現時点で、純正品で存在するのか、サードパーティで、Cortex-M3対応のJTAGデバッガツールでダウンロード可能なのか不明。
 また、自作について調べるが今だ情報にたどり着けない状況です。
 ・今まで、各種マイコンについて評価ボード、スタータキット、あるいは雑誌付録基板を使ってきました、何れの場合も、PCとUSB接続し、必要に応じて、PCに対応ドライバをインストールするだけで、事足りていました。マイコンチップ自体にどの様にアプリケーションをダウンロードしているのか考えもしなかった。この機会に少し調べてみようと思います。

※追加 
これまで、開発したアプリケーションを何とかして、コードサイズ制限のあるIAR Embedded Workbenchを使わずに、IAR KickStart Kit STM3210E-SKに書き込むことを考えてきたが、その手法案についてまとめる。

案1.JTAG書き込み1 前述のとおり、なんとかJTAGケーブル(USB対応)を調達し、このキットのJTAGコネクタを経由して開発アプリケーションを書き込む。

案2.JTAG書き込み2 このキット自体 IAR J-LinkというARM 用USB 接続JTAG ICEが搭載されている。IAR Embedded Workbench と同じ手法で開発アプリケーションを書き込む。
 (以下、案2についての試行錯誤)
 ・JLink.exeと言うツールをSEGGER社のサイトから取得する。
 ・このキットをUSB(JTAG)コネクタ経由でPCにつなぐ。
 ・JLink.exeを起動する。>> 一応 キットとの接続が確かめられた。
  (J-Linkによる、PCと、キットSTM32F103ZEの接続を確認)
 また、JLink.exeのダウンロード時に JFlashARM.exeも併せて取得した、STM32F103ZEにアプリケーションの書き込みには、JFlashARM.exeを使用するようですが、こちらのほうは接続に失敗した。

案3.DFU書き込み 案1、案2何れかの方法により、このキットの STM3210ZEにフラッシュROMにDFU(USBダウンローダー)を書き込む。(多少、DFUの修正は必要と思われる。)開発アプリケーションはDFU形式へのファイル変換を行い、DfuSeを使って、書き込む。

案3改 DFU書き込み 「案1、案2何れかの方法により、」というより、IAR Embedded Workbenchで書き込んでしまえばよいのではないのか、 DFU(USBダウンローダー)のサイズは12KBだから可能と思われる。。。。?

だんだん、手法は見えてきたが。IAR社がこのキットについて、IAR Embedded Workbench以外でのアプリケーションのダウンロードを阻止する意図があった場合。無駄な努力に帰することになる。




2009年11月20日金曜日

ET2009散歩(その2)

 本日(11/20)、先日に引き続き、パシフィコ横浜で開かれている。Embedded Technology 2009に行ってきました。
 今日は、カンファレンス(無料)参加と、32ビットマイコンの評価ボードの購入を念頭にブースを回りました。

---------------------------------------------------
◎カンファレンス (メモ書き)

 「最新FPGAで組込みシステムを簡単&柔軟設計!」
  ●Spartan6=>Spartan6 の改良点
  ・LUTが4から6入力になったことでのパフォーマンス向上
  ・MicroBlaze(ソフトCPU)のパイプラインは5段がパフォーマンスが良くなったかも知れない。(推測  Spartan3では3段のほうが早い)
  ●MicroBlaze Ver7までの更新履歴
  ●MicroBlazeのメモリ
  ・MCB(Memory Control Block)==MPMC(Multi Point Memory Controller) ==[BUS(PLBv4)]==MicroBlaze
  ●MicroBlazeにLinuxを搭載する際のTip。
    パイプラインの段数等の設定(5段)
  ●MCB
  ・データバス幅 4,8,16bit/MCB に限定 32bitの場合2つのMCBを使う。
  ●Xilinxの開発ツールの体系が理解できたように思う。
  ・IDS11:ISE® Design Suite 11の略 (始め、IDSと言われて解らなかった)
  ・EDK:Embedded Development Kitの略
  ・XPS:Xilinx Plat form Studioの略 (EDKに含まれるハードウエアデザインツール)
    ハードウエアデザイン用のツール。MicroBlaze(ソフトCPU)もこれで作成。 
  ・SDK:Software Development Kitの略 (EDKに含まれるMicroBlaze用ソフトウエア開発ツール)
    MicroBlazeに乗せるファームウエアの開発ツール C,C++コンパイラ等

 「FPGAにおける高速DDRメモリ ボードシステムの設計・評価事例」
  これは、受講テーマを間違えた。ほとんど理解不能のはず、しかし退屈せずに最後まで聞けた。
   (DDR2などのメモリの資料で目にする内容がある程度有ったからか?)

◎展示会(評価ボードめぐり)
 ●Texas Instruments
  Stellaris ARM Cortex-M3 シリーズ
 ・LM3S3748評価キット
   小さなカラーLCDが魅力、フラッシュメモリ128KBが難
 ・LM3S8962イーサーネット+CAN評価キット
   ある程度整った1枚
  いずれもその小ささに魅力を感じる。
 ●STMicroelectronics
 ・STM3210C-EVAL
 ・STM3210E-EVAL Ethernetあり
   これは魅力的
  プログラムダウンロードはUSBケーブルだけで出来ないとのこと。  
  担当者に色々と説明していただいているうちにIARのキット(ST32F103ZE搭載)を頂いた。感謝、感謝
 ●NXP セミコンダクターズ
  評価ボードは自社で作成しない。サードパーティで有るとの事
 ●NEC
  評価ボードは自社で作成しない。サードパーティで有るとの事
  (TESSERAの評価ボード)
 ●富士通
  評価ボードは無いとの事(Cortex-M3について)

◎展示会(FPGAめぐり)
 ●Xilinx 
 ・XilinxのFPGAのプログラム開発では、VHDL、Verilog(テキスト編集)による開発がメインで、Schematicでのシンボル操作による開発はあまりしないとのこと。
 ・XilinxのEvaluation Kitはあまり売り込む気が無いように感じられた。
 ●ALTERA
 ・NiosIIを使ったデモアプリケーションのデザインを見せてもらった。DDRメモリのインターフェース、Ethernetモジュール等はNiosII の内部にある。
---------------------------------------------------

今回、2日かけて、展示を見て回りました、色々と参考になる話を聞けて、有意義な時間を過ごせました。

残念な点は、ルネサスの展示が無かった(ルネサス北日本セミコンダクタ は有った)ことです。


来年も、展示会、カンファレンスに参加できたらと思います。 
出展各社、および各担当者に感謝。(本当にお邪魔いたしました。)

2009年11月18日水曜日

ET2009散歩


本日(11/18)パシフィコ横浜で開かれている。Embedded Technology 2009に行ってきました。

訪れたブースは以下のとおりです。

◎ARM
 前日メールマガジンでDW 2008-5 Cortex-M3付録基板付き が頂けると言う事で、浅ましくも訪れ、同誌をGet。先週ARM Forum 2009に行ってきたので。展示については素通り。
◎STマイクロエレクトロニクス
 STM8の説明を受ける。8ビットマイコンで液晶表示、microSDカード、等多彩の機能を実現したボードに魅力を感じた。
◎NEC(NECエレクトロニクス)
 V850の説明を受ける。また、前年につづき78Kの体験セミナを受ける。小さなインテリジェントLEDスタンドをGet、開発ツールApplilet EZを試す。 V850を使う場合、Appliletで、デバイスに関するソースを出力するだけであったのが、プログラムのコンパイルからダウンロードまで行う。
 LEDスタンドに内臓された78KはADC、PWM機能を搭載、結構高機能で、結構楽しめる石が入手できたと思います。
◎日本テキサスインスツルメンツ
 Cortex-M3の評価ボートの説明を受ける。1万円程度で入手可能とのこと、帰宅後、早速Digi-Keyで確認
結構入手性が良いと思います。サンプルアプリケーションも入手できるとのこと、リアルタイムOSを試すときには、使用したいと思いました。
 ET2009開催中に再度訪れたい。
◎富士通マイクロエレクトロニクス
 FRAMマイコンの説明を受ける。昨年より、書き換え保証回数が倍増(?)したとのこと。
 ARM Cortex-M3のマイコンの説明を受ける。面白いことに、導入の経緯、分野等ほとんどNECの説明と同じ内容であった。しかし、説明自体は丁寧で、面白い会話が出来た。
◎メンター・グラフィックス・ジャパン
 ModelSimの説明を受ける。過去にALTRA CycloneIIIで使ったModelSim(無償版)が結構制限がかかっていた事を知る。個人が趣味レベルで使える程度に制限を緩めて欲しいと思った。
◎インテル
 例年のサクマのドロップをもらった。
 サブブース アクセル、オムロン、PFUで説明を受ける。
 「AtomプロセッサはPen3~4並のパフォマンスだと思うが、なぜ、ハイビジョン画像がさくさく扱えるのか。」といった、素人の質問をした。「ボートにある、グラフィックチップが高性能だから」と言う答えが返ってきた。なるほど、組み込みの世界では、OS自体は軽いCPUで行い、目的とする重い処理は専用のチップでこなす。納得した。
 また、工作機器等にWindowsを実装する、PCボードを見た。
◎Xilinx(東京エレクトロンデバイス)
 ISE2の説明を求めたが、展示なし。説明なし。残念
Virtex等を搭載する基板の展示。このクラスの基板だと12層になり、配線をどの層に配置するかで、性能が変わるとの説明を受ける。
◎ALTERA(アルティマ)
 Quartus II の説明を受ける。
 無償になった、Nios II の説明、Cycloneで使う場合 Stratixで使う場合の差異等、丁寧な説明を受けた。
 CycloneIVの展示を期待していたが無かった。残念、スタータキットは来年4月以降出るらしいとのこと(不確定)
◎マイクロソフト
素通りしてしまった。
◎TOHOKUものづくりコリドー
 C言語 HDL変換ソフトの展示があり、説明を受ける。色々、ご教示いただいた。

本日これまで。

画像は、本日の戦利品、ARM DW誌(付録基板つき)、NECのLEDスタンド、TOHOKUものづくりコリドー のお米が結構うれしかった。

いつものことですが。アンケートに答えて、ノベリティグッズを貰うか、限られた時間を取るか悩ましいことです。

最終日(11/20)カンファレンスを2コマ受けようと思います。見落としたブースに行こうと思います。

2009年11月14日土曜日

Spartan-6 FPGA SP601 評価キットその後(奮闘中)



 Xilinx Spartan-6 FPGA SP601 評価キットを使い始めて、2ヶ月が経過しました。慣れぬISE等の開発ツールに もがきながらも、なんとか、容(かたち)が整ってきた状況です。

1.概要
  [[信号 100Hzから4MHz]] ==> FPGA(Spartan-6) ==> LPC2388(波形表示)

 1)FPGA(Spartan-6)処理
  ・ADCドライブ 
    エンコーダ波形1~50MHzをADCに出力、8ビットのデータをADCがら取り込む。
  ・データバッファリング
    ADCから取り込んだデータをRAMに書き込む。
  ・データの送出
    RAM上のデータをマイコンLPC2388に送信する。
 2)マイコン(LPC2388)処理
  ・ ユーザーIF
    FPGAにサンプリング開始/停止の指示、取得データの表示、FPGA動作パラメータの調整

2.動作確認
 1)検出波形 上限
    信号50KHzを50MSPS(1000Pont/Cycle)で取り込むことを確認。
 2)データ表示
    チャート表示および、数値表示 
 3)動作スピード切替。
    1,2,5,10,20,50 MSPSのサンプリング速度の切り替えを確認

3.不具合
 1)取り込んだデータにノイズが多い。
 2)トリガがかからない。
 3)連続取り込み時、中断できない。

4.課題
 1)エラーデータ
   取り込みデータをFPGAのRAMに書き込む前に、マイナス値を排除するモジュールを一時的に組み入れるが、マイコンに送られたデータにマイナス値が存在する。
   (ADCモジュールは単電源構成なので、負電圧は計測されないはず。)
 2)低速クロック(エンコーダ)信号を作成できない。
   IP(CORE Generator..)/Clocking Wizard で クロック入力 200MHzDifferential clock...の場合、4MHzが出力周波数の下限でした。 カウンタを利用してその周波数を1/2,1/4,1/8,,,で分周して低速のクロック信号は生成できるが、直接周波数指定でクロック信号を生成することが現状で出来ない。
 3)ISE等開発環境の不慣れ 
  ・always @(posedge IO_PinA)
    PlanAheadでピンを割当行う場合、T9:CLK1_M2C_P等のクロック属性を持つピンを割り当てないといけない。
  ・ucfファイルエラー
    ucfファイルに知らぬ間に、「INST "xxx_IBUF" LOC = x99;」のエントリが出来、エラーを起こす。
  ・Verilog HDL 除算
    除算では、除数が2の累乗に限定される。
  ・IP(CORE Generator..)で作成したモジュールの組み込み。
    修正が大変面倒
  ・プロジェクトのコピー
    コピーしたプロジェクトでピン割り当て(Planahead)が失敗
       EEROR: launching PlanAhead failed: can't execute "C\Windows\system32\cmd.exe":ディレクトリ名が無効です。 
 4)Memory Controller Block が難しい。
   Spartan-6で期待した最大の機能 Memory Controller Block ですがなかなか使えずにいます。
   IP(CORE Generator..)/MIG (Memory Interface Generator) で所定のパラメータを指定してサンプルプロジェクトを作成するまでは良いのですが、さてこれをどのように使うのかよくわからない。使えそうな部分(memc3_wrapper等)を切り出して、一時的にプロジェクトを作成して、試行錯誤を行おうとするが、プログラムファイル生成でこけます。1クロック毎に指定したビット幅で、指定したアドレスのメモリを読み書きしたいだけなのですが、ポートが6個もあったり。コマンドIFが有ったり、そのコマンド自体が不明だったりして前途多難です。門前払い状態です。現在泣く泣く128MB DDR2を棚上げして、RAMを上限近く(16KB)使い切ってなんとか誤魔化している状況です。

2009年10月3日土曜日

Xilinx ISE2 テクニカルメモ

Xilinx Spartan-6 FPGA SP601 評価キットでのプロジェクトの作成の際、気づいた点をまとめます。

◎開発環境 
 ・WindowsVISTA Home Premium 64bit RAM:4GB
 ・ISE Project Navigator 11.3
1.ISE(本体)
 *)不明事項
   ①VHDL/VerilogHDLモジュールをシンボル化後に、Schematicモジュール編集時、シンボルリストに追加されるタイミング(ああでもない、こうでもないと、いろいろもがいている内に、リストに追加されているといった状況)
   ②New Source/IP(CORE Generator & ....)で追加したモジュールをどのようにして利用するのか?(Schematicモジュールの編集で・・)

2.PlanAhead(Mapping)
 1)ピン定義
   ①同一Bankで異なるI/O Standerdは設定できない。??
     ※出来る場合もある??
 *)エラー対処
   ①ログファイルパーミッションエラーで起動不能になった場合。
    ・タスクマネージャ(Windows)でプロセス「_xilinxupdate.exe」を終了させる。
3.iMPACT(Device Programming)

4.FMC-LPC コネクタ のピンアサインについて(疑問)
 LPC2388とのデータインターフェース(16ビット)を試している時、ビット6とビット7の交差が認められた。次の2つの可能性があると思われる。
 ・FMC-LPC コネクタ H-25ピンにLA21_Nが、H-26ピンにLA21_Pが誤配線されている。
 ・SP601ハードウエア ユーザー ガイドの UCF 配置定義
     NET "FMC_LA21_N" LOC = "V4";
     NET "FMC_LA21_P" LOC = "T4"; 
  の誤記載。(V4とT4が入れ替わっている) ・・・2009/11/17 追加

Spartan-6 FPGA SP601 評価キットその後(FMC/GPIO変換ドータカードの作成)


今回は、Spartan-6 FPGA SP601 評価キットのFMC-LPC コネクタ からGPIOの引き出しにトライしました。その際使用したパーツは以下の通りです。

・FMC-LPCコネクタ Samtec社 ASP-134606-01 VITA 57 CONNECTOR 1個
・ハウジング付ピンヘッダ(オス)40P(2×20)          3個
・両面スルホール・ガラス・ユニバーサル基板 Bタイプ 1.27mmピッチ(95x72mm) 1枚
・耐熱電子ワイヤー(単線) 15m程度
・半田 0.3mm (0.6mmがちょうど良いかも?)

 評価キット(SP601)を本格的に使いたい、その前に、マイコン等のインターフェースにパラレルデータIFをこのキットで実現したい思いました。一応キット上には12-pin (8 I/O) headerが装備され、SPI、IICのヘッダーを利用すれば、8ビットデータ+α のインターフェースは組めることは組めるようですが、やはりFPGAの大量のGPIOを利用しないのはやはりもったいないと思いました。
 で、FMC-LPCコネクタからGPIOを引き出したドータカードが無いか、いろいろ探しました。しかしそのようなカードは見つけられませんでした。
(以前、ALTETRA CycloneIII スタータキット(DK-START-3C25N)を使った時は、同様のHSMCコネクタがあって。そのときは Terasic Technologies の BOARD ADAPTER HSMC TO GPIO を購入して対処したのですが。。。)
 以前、この評価キット関連のマニュアルをいろいろ漁っていたとき、FMC-LPCコネクタ自体が Samtec社から、出ていることを知りました。しかし、コネクタ自体あってもどうにも私の手先の不器用さでは手が出せないと思いました。
 最近、諦めきれずに、このコネクタの図面を眺めていたとき、コネクタから引き出されたピンの間隔が1.27mmでこの間隔は、ユニバーサル基板(1.27ピッチ)に一致すると気づきました。ひょっとしたらなんとかなりそうだと思い、デジキーでこのコネクタを発注しました。

 入手したFMC-LPCコネクタを使って、GPIO変換ドータカードを作成した手順は以下の通りです。
①まず、FMC-LPCコネクタの背面の両端の突起(基板に固定するためのもの)およびその周囲を削りました。
 ・・・配線用のピン(半田鍍金されています)がユニバーサル基板のホールに収まるように。
②FMC-LPCコネクタをユニバーサル基板に強めに押し込む。
 ・・・結構しっかりと固定されます。
③耐熱電子ワイヤー(単線)を10~15cmに切り分ける。120本 出力するGPIOを 8ビット、16ビット、32ビットのブロック分けをし、ブロック毎にワイヤー(単線)の長さを揃えました(気休め)。
④ワイヤー先端3mmの被覆をはがしました。
⑤FMC-LPCコネクタの背面のユニバーサル基板の穴に、ワイヤーを差し入れ、半田を流し込みます。
・・・コネクタの配線ピンの半田が溶けると、ワイヤーが更に1mm程度奥に押し込めるようになります。
⑥半田付けしたワイヤーをピンヘッダ(オス)40Pに配線します。
***延々と、120本繰り返す。***
⑦配線の導通、隣接配線とのショートをチェックしました。
***延々と、120本繰り返す。***
幸い、導通不良が1箇所で比較的容易に修復できました。

 さて、このGPIO変換ドータカードの検証ですが、以前この評価キット動作検証用に作成した、CLK発信プロジェクトの32ビットカウンタのうち、8ビットを信号として、FMC/GPIO変換ドータカード経由で外部LEDにつないでその動作を確認しました。

[プロジェクト概要]
クロック==>CLK生成==>32ビットカウンタ(UP)==>出力ビット選択==>CLK出力(本来の出力)
                     =>8ビット抽出==(FMC/GPIO変換カード)==>外部LED(検証用の出力)


あとがき
 とにかく大変でした、作成にまる1日、チェックに半日、材料費はほどほどで3千円、配線はぐちゃぐちゃ、配線は、Spartan6のバンクまで考慮していないため、将来、ピン設定との齟齬が出る怖れがあります。





 




2009年9月17日木曜日

Spartan6 Evaluation Kit(SP601)を使ってみました。

今まで、手が出せずに購入したままになっていた、Xilinx Spartan-6 FPGA SP601 Evaluation Kit を、使い始めました。

1.ボードの動作確認。
 キット同梱のマニュアル「Getting Strated with the Xilinx Spartan-6 ...」のとおり、シリアル(UART)接続での操作、サンプルの画像処理プログラムの動作を確認しました。

※開発環境 Windows VISTA 64bit Home Premium での確認は失敗しました。
 シリアル(UART)接続での操作では、VISTAにハイパーターミナルが実装されていないので・・・×
 画像処理プログラムの動作確認では、WinPcap の DLL が導入出来ず・・・×
(開発環境のセットアップ時 WinPcapのインストールは実行されるがDLLがインストールされなかった。)
==>Windows XP Home 32bit 環境で これらの動作確認は成功しました。

2.テストプログラムの作成、動作確認
 以前Altera CyclonIII スタータキットで最初に作成した、テストプログラムを Spartan6 EvaluationKit SP601 に移植しました。
 
 1)テストプログラム
   キットに実装されているクロックの信号をカウンタに取り込み、カウンタのビットの0/1の切り替えをクロック信号として外部に出力する。
  出力周波数の切り替えはプログラムモードによるカウンタのビット選択でおこなう。
  
  CyclonIII スタータキットで作成したテストプロジェクトより使えそうな部品VHDLソースは
    Func_gen.vhd  カウンタのビットをプログラムモードで選択し、CLK信号を出力
    Simple_Cunter.vhd キット実装の水晶発信器のCLK信号をカウント(カウンタ カウントアップ)
    mode_change.vhd 4プッシュボタンでプログラムモードチェンジ

 2)プロジェクトの作成
  ①ISE Project Navigatorを立ち上げる。(Xilix ISE Design Suite 11 / ISE / ISE 64ビット / ISE Project Navigator )
  ②「New Project」ボタンクリック
    ・Create New Projectダイアログ
     Name : TestFuncGen
Location : C:\Xilinx\Project\TestFuncGen << C:\Xilinx\Projectを指定していた場合
・Device Propertiesダイアログ
Product Category : All
Family : Spartan6
Device : XC6SL16
Package : CSG324
Speed : -2
・Create New Sourceダイアログ  スルー
・Add Existing Sourceダイアログ スルー
    *空のプロジェクトが出来る。
 3)プロジェクトに既存(前述)のソースファイルを追加する。
   プロジェクト名 TestFuncGenを選択し、右クリックして、各ソースファイルを追加。
 4)追加エンティティ(ソースファイル)のシンボル化
   追加された各ソースファイルを選択した状態で、[Processes]の Design Utilities / Create Schematic Symbol を実行
 5)プロジェクトに Schematec を追加 (CyclonIII スタータキットでの場合、トップエンティティ)
   プロジェクト名 TestFuncGenを選択し、右クリックして、New Source... を実行する。
New Source Wizrd
Select source type…: Schematic
File Name : TestFuncGen
 6)Schematic の編集
  ①シンボル化されたエンティティを追加する。
    シンボル選択ウインドウの Categories に プロジェクトのディレクトリが表示されるので、選択、>> 4)で作成されたシンボルが表示 これを選択、Schematic にドラッグ&ドロップで追加する。
  ②ワイヤーの追加
    Add Wire のアイコンで 各シンボル端子(シンボル間接続)にワイヤを張る。
  ③入出力の追加
    Add I/O Maker アイコンで 各シンボル端子(FPGAの入出力)に入出力を作成する。
  ◎IPの追加
   IPを使用する場合、一旦、仮プロジェクトを作成、そこにIPを CORE Generator & Architecture Wizard を使って追加する。
    すると、仮プロジェクトのディレクトリにVHDL(Verilog HDL)のソースファイルが生成されているので、このファイルを本プロジェクトに追加、シンボル化してこのSchematicに追加する。

 7)ピン配置(定義)
  ① Schematic (TestFuncGen) を選んだ状態で 「I/O Pin Plannig(PlanAhead) - Pre-Synthesis」 「I/O Pin Plannig(PlanAhead) - Post-Synthesis」「Floorplan Area/IO/Logic(PlanAhead)」のいづれかを選び ピンの定義 を行う。

 8)ダウンロード(Device Programming)
  ①Evaluation Kit ボードの USB(JTAG)コネクタとPCを接続する。
  ②Schematic (TestFuncGen) を選んだ状態で 「Configure Target Device」
    *ISE IMPACT立ち上がる
  ③iMPACTで Bundary Scan ==> Right click to Add Device or ….
  ④Mouse 右クリック
    Add Xilinx Device クリック 
     バイナリファイル C:/Xilinx/Project/TestFuncGen/testfuncgen.bit を選択 *FPGAのアイコンが表示
      Programを選択==> Device Programing Properties ダイアログ表示
             ダウンロード開始

--------------------------------------------
 今回 開発環境は Windows VISTA 64bit Home Premium で行いました。当初、7)ピン配置(定義)で 設定プログラム PlanAhead が 立ち上がり時 にダウンし、それ以降の作業が不能になりました。WindowsXPに開発環境(ISE WebPACK™ )を組み、同じ手順を試行しました。その結果、ピン配置、ダウンロードの処理が問題なく行え、不完全ながらキットでの動作確認ができました。
 その後、Windows VISTAの環境に戻り、あれやこれやと試した結果、libPackStanSolver.dll の読み込みでエラー発生していることがわかりました。
 XilixのHPで、ISE のアップデート 11.3 があったのでこれを適用したところ、この障害は解消されました。
--------------------------------------------
※操作性で違和感を感じる点
   ・ピン配置(定義)、ダウンロード時にソースを選択した状態で行ったこと。(プロジェクト単位で行った方が納得)
   ・IPの追加が、直接 Schematic に出来なかったこと。
   ・ソースファイルでシンボルを作成するが、なかなかシンボル選択リストに表示されなかったこと。
・ダウンロードiMPACTでは、バイナリファイル(ダウンロードファイル)を選択し、Programe実行て初めてFPGAが認識されるようです。慣れるまでは不安。
--------------------------------------------
 今回 手っ取り早くSpartan6を試したかったため、Altera CyclonIII の開発環境からソースファイルを転用しました。したがって、テストプロジェクトは、一つのトップエンティティ+複数の部品エンティティの構成でとなりました。
 どうも前述の違和感は、AlteraとXilixの文化の差に起因するのでしょうか?文化の差、、たとえばプロジェクト意味が異なるのでは、どうもXilinxでは、1つのプロジェクトは1つの開発環境を意味し、複数のトップエンティティがもてるように感じます。(必要なトップエンティティを選んでコンフィグレーション / ダウンロードするかたちを採るのでしょうか?)
 とにかく、現時点では、マニュアルを読み倒す必要があると思います。

2009年9月2日水曜日

Xilinx ISE Design Suite の導入

Xilinx Spartan6 FPGA SP601 評価キットがようやく入手できたので。開発環境を整えました。その手順をここに記録します。

////////////////////////////////
 
 概要
  1.Xilinxアカウント登録
  2.ライセンスの登録
  3.ISE Design Suiteのインストール
  4.ISE Design Suiteの動作確認

  ※今回のISE Design Suiteは 以前、Xilinxからのメール
  「Welcome to Xilinx Electronic Fulfillment」、
  「Xilinx, Inc. – Important Information Regarding Your Spartan(r)-6 FPGA SP601 Evaluation Kit Purchase」
  に従いインストール作業を行った。

  ※評価キット同梱のメディア(DVD、USBメモリ)は今回使用しなかった。

////////////////////////////////

1.Xilinxアカウント登録
 1)メール「Welcome to Xilinx Electronic Fulfillment」記載の
   https://secure.xilinx.com/webreg/register.do?group=esd_oms
  でXilinx HP にアクセス

  (1)ユーザアカウントの作成
     userid : ×××××@××××.×××  ※今回メールアドレスにしました。
     Corprate Email : ×××××@××××.××× ※Xilinxからのメールを受けたメールアドレス。
     password : ××××××××
     First Name : Taro
     Last Name : Yamada
    でユーザーアカウントを作成する。 
  (2)Xilinxからメール「Xilinx Registration: Account Activation」が届く
  (3)メール記載のアドレスでユーザーアカウントをアクティブ化する。
     https://secure.xilinx.com/webreg/activate.do?languageID=1&key=s5w7ea36827
  (4)ユーザーIDとパスワードでサインインする。
  (5)ユーザープロファイルを登録する。(メールアドレスは、Xilinxからメールを受け取ったアドレス)
  (6)サインアウト
        
2.ライセンスの登録
 1)準備 PCのEthernet MACアドレスを調べる。
  (1)すべてのプログラム/アクセサリ/コマンドプロンプトを起動
  (2) ipconfig /all を 実行
  
   Microsoft Visual C++ 2005 Redistributeale(x64)

   Windows IP 構成

    ホスト名 . . . . . . . . . . . . : My-PC-ORION
    プライマリ DNS サフィックス . . . . . . . :
   . . . . . . . . . . .
     Gigabit Ethernet NIC (NDIS 6.0)
    物理アドレス. . . . . . . . . . . : 00-21-70-XX-XX-XX
    DHCP 有効 . . . . . . . . . . . . : いいえ
   . . . . . . . . . . .

   が表示されるので ホスト名(My-PC-ORION)と物理アドレス(00-21-70-XX-XX-XX
)を控える。

 2)再度 https://secure.xilinx.com/webreg/register.do?group=esd_oms でXilinx HP にアクセス
  (1)ユーザーIDとパスワードでログインする。
  (2)Home/Support/Product Download and Licensing のページに切り替わる Tab:3.Create New Licences 
  (3)ISE Design Suite WebPack Edition, Node-Locked License にチェック 「Generate Node-Locked License」をクリック
  (4)Generate Node Liense ページ  [2 SYSTEM INFORMATION] 「Select a host] [
  (5)Add a host....
    Operating System : Windows 64-bit
    HostID Type : Ethernet MAC
    HostID Value : 00-21-70-XX-XX-XX
    HostID Name : My-PC-ORION
   「Add」をクリック
    
     ※手間取っていると タイムアウトエラー 一旦サインアウト サインイン
  (6)REVIEW LICENCE REQUEST
「Next」をクリック

    Congratulations
    Your new license file has been successfully generated and e-mailed to ...
    Please add this sender (xilinx.notification@entitlenow.com) to your ...    

   License File Details
    Node License
    Host ID: 002170XXXXXX

    Products
    ISE Design Suite: WebPack Edition, Node-Locked License (Full): 1 seats

  ※ Tab:4.Manage Licensesの表示に切り替わる。

3.ISE Design Suiteのインストール (引き続きXilinx ウエブサイトでの作業)
 1)Home/Support/Product Download and Licensing の Tab:1.Download Software に移る。
 2) の ISE Design Suite : Full DVD  
   Full DVD Single File Download Image 5.63GB の [Download] を実行
 
   *ダウンローダー プログラムのインストール が要求される。 適宜にインストール
   その後 ファイル Xilix_11.1_ISE_DS_SFD.tar のダウンロードが開始される。
   C:\DownLoad\Xilinx のフォルダを作成 そこにダウンロード

 3)Xilix_11.1_ISE_DS_SFD.tarの解凍
  (1)Cygwinを起動 (Windows用 tarコマンド(フリーソフト)を使う代り)
  (2)ダウンロードディレクトリへ cd /cygdrive/c/DownLoad/Xilinx を実行
  (3)解凍 tar xvf Xilix_11.1_ISE_DS_SFD.tar を実行

 4)xsetup.exe の実行
   (1)C:\DownLoad\Xilinx\Xilinx_11.1_ISE_DS_SFD\xsetup.exeを実行

    ((ウイルス対策ソフトをOFF  ?))

    ライセンス承諾
(2)インストールディレクトリの選択 そのまま
  (3)インストールする製品の選択 そのまま
  (4)インストールオプションの選択そのまま
     *ケーブルドライバ WindowsXP Pro x64 WindowsVISTA Business サポートの記述


  (5)インストールの実行
  (6)Xilinx License Configuration Manager  が立ち上がる。
     ・Start ISE WebPack を選択 「Next」をクリック
     ・ライセンスファイルのリスト表示 「Close」をクリック
  (7)Jungo デバイスソフトウエアのインストール 
     ・インストール
  (8)Xilinx デバイスソフトウエアのインストール 
    ・インストール

  (9)インストール完了

  (10)XilinxUpdateが立ち上がる。
    ・「Check for Update」をクリック
   エラー発生 [An error occurd when running the XilinxUpdate program]
[Unable to access the required files.Common reasons for this are:]
[The machine is not currently connected to the internet ]
 5)ISE Design Suite のアップデート( XilinxUpdateエラー対応)
  (1) http://www.xilinx.com/getproductでXilinxウエブサイトにアクセス
    Xilinxからのメール
  「Xilinx, Inc. – Important Information Regarding Your Spartan(r)-6 FPGA SP601 ..
記載のアドレス  
  (2)Tab:2.Software Updates  ISE Suite 11.2.Complete Update for Windows64 選択 
  (3)ダウンロードファイル Xilinx_11.2_ISE_DS_nt64.tar  を解凍
  (4)xsetup.exe の実行
     C:\DownLoad\Xilinx\Xilinx_11.2_ISE_DS_nt64\xsetup.exe

   ①Select Destination Directory
     C:\Xilinx\11.1   そのまま 「OK」クリック
   ②Warning      「Yes」クリック
   ③Updateリスト    そのまま 「OK」クリック
    * 進捗表示 0%の時間が長い。

4.ISE Design Suiteの動作確認
  (1)起動
    すべてのプログラム>Xilinx ISE Design Suite 11> ISE > ISE 64ビット > Project Navigator
  (2) Tip of the Day が表示 「OK」クリック
  (3)新規プロジェクトの作成
    File > New Project...
  (4)New Project Wizard が表示
   ・Name Test
   ・Location C:\Xilinx\Project\Test (C:\Xilinx\Projectフォルダ作成)
   「Next」クリック
  (5)New Project Wizard  Device Properties
   ・Family Spartan6 を選択
   ・Device XC6SLX16 を選択
   ・Package CSG324 を選択
   「Next」クリック
  (6)New Project Wizard  Create New Source
   「Next」クリック
  (7)New Project Wizard  Add File
    CQ出版 Interface 9月 の 3章のソース(同誌HPよりダウンロード)
     [test.ucf] [test.vhd] を 追加
   「Next」クリック
  (8)New Project Wizard  Preoject Summary
   「Finish」をクック
  (9)Adding Source Files....が表示
   「OK」をクック
  (10)Generate Program Fileを実行
   ① Designタブ Hirardy ウインドでトップモジュール test - rti(C:\Xilinx\Projct\Test\test.vhd) を選択
   ② Processes: test - rti ウインドで Generate Prograing File が表示 それをクリック
   ③ [Synthesis] [Implenet Design/Translate]まで通過、[Implenet Design/Map]でエラー

  一応ISE Design Suiteの 動作確認はできたことに???

////////////////////////////////
 積み残し
・Windows の適合性
 今回、PC環境はWindowsVISTA64ビットHomePre.、XilinxのツールでWindowsVISTA Businesを前提にしているものかあり、実際に評価キットでの開発を始めたら、インストールし直しする羽目になる可能性あり。
・USB/シリアル ドライバーのインストール
 今回使用PCは、他のマイコン用に同様なドライバが組み込まれているので、一連のインストール作業のうち USB/シリアル ドライバーのインストールは省いた。

////////////////////////////////
 今回は、時間が取れなくて、ちょっとお茶を濁した程度、まだ評価キット自体にたどり着けない、、ちょっともどかしい。。。こんなところです。
 

2009年8月31日月曜日

Spartan-6 Evaluation Kit が届きました。

先日、Digi-Keyを通して発注した Xilinx Spartan-6 Evaluation Kit(EK-S6-SP601-G-J) が 本日(8/31)届きました。
 発注当時、納期が10月中旬だったのですが 8/29 に 出荷の案内メールが届き、 本日の納品となりました。
 さて、アジア系の兄ちゃんが腕組みをしているパッケージを開封する。レター、マニュアル、すべて英文で日本語が一切無い。さらに、さらに、電源アダプターが無い。
 ここで、パッケージを見直す。何処にも、品番EK-S6-SP601-G-Jの表示が無い。はたして、届いたこのキット自体本当に「EK-S6-SP601-G-J」なのか?? 納期を犠牲にして、-Jを発注したのに、EK-S6-SP601-G が届いたのか。それだと多少不満が残る。
 そこで、Xilinx (Japan)に以下の内容で問い合わせる。(パッケージ記載の電話番号)
*届いた製品が、品番EK-S6-SP601-G-J であることの確認
 ・パッケージの何処を見れば、-G-J、-G の区別が出来るのか。
 ・シリアル番号等で確認出来ないのか。 
*電源アダプタが入っていない。
 
 Xilinx (Japan)の対応 
 「Digi-KeyはXilinx Japanの代理店ではないので、一切対応は出来ない。」とのこと。
 
 営業担当との、会話で、余談的に出た内容ですが。EK-S6-SP601-G-J は、電源アダプターが、日本の安全基準を満たさないので、電源アダプターだけ、適合するものに置き換えただけとのこと。


 まあ、愚痴はこの辺にして、開発環境の整備を暇をみて始めようと思います。




 
 
 
 
  

2009年7月30日木曜日

Spartan-6  Evaluation Kit を発注しました。

以前から、購入を考えていた、Xilinx Spartan-6 Evaluation Kit をDigi-Keyで発注しました。
 価格 35,057円(税別) 発送予定 10月中旬 たぶん忘れた頃届くと思われます。

Xilinxの発売と同時にAVNET等で購入した人は既に手に入れらたのではと思います。(当時 納期は6週間待ち)

 購入目的は、「このキットをただ触ってみるだけ」、そんな訳でDigi-Keyや、東京エレクトロンデバイスなどで取り扱いが始まってから購入しようと思っていました。

 先日まで、Digi-Keyのホームページで、Xilinxの新製品情報が無いか、こまめにチェックしていたのですが、このキットの情報にたどりつくことはありませんでした。
 
 本日たまたま、このホームページでDC/DCコンバータの価格を調べたついでに、Xilinxの開発キットを見てみると、検索フィルターにSpartan@6のエントリがあったので、検索をかけると、Spartan-6 Evaluation Kit にたどりつけました。で 早速発注。

 今回は、品番EK-S6-SP601-G-Jを発注しました、Digi-Keyでは非在庫なので、10月中旬の納期予定になりました。
 品番EK-S6-SP601-Gを発注したほうが、遥かに早い納期(7月30日発注で8月中旬納期)なのですが、今ひとつ勇気が無く-Jを発注しました。(多分、マニュアルの一部が日本語と言う程度の差だとは思うのですが。)

余談
 あとは、評価キットが届くころ、思いっきりの円高になっていると、ガックリ(予想) 日ごろ為替レート(ドル/円)には無縁の経済音痴なのですが、Digi-Keyで物を購入すると、ニュースの経済情報(為替レート)に思わず注目している自分がいます。

2009年7月9日木曜日

LPC2388 GNU GCC 浮動小数点の扱い

CQ出版、Interface誌 付録基板 LPC2388 を あいも変わらず、暇をみてはいじっています。
 以前に組み込んだプログラムの一つに不具合があり、これを調べていて、その原因が浮動小数点(float、double)の扱いにあることが判りました。

 今のところ、まだ解決の目途は立っていません。

1.コンパイルオプション -mhard-float について。
 LPC2388を触り始めたころ、浮動小数点の扱いで、-mhard-float  をコンパイルオプションに加えるようになった。
 どうもこのコンパイルオプションが問題と思われるようになった。
 1)コンパイルオプション -mhard-float なしで、問題のプログラムを Make する。
   標準Cライブラリ(libc.a、libm.a、、)の関数を使用しているサブルーチン、関数、では、依然、不具合は解消されず。しかし、標準Cライブラリ(libc.a、libm.a、、)の関数を使用しないサブルーチンでは不具合は解消していた。
 2)コンパイルオプション -msoft-float を加えて、問題のプログラムを Make する。
   Make時、リンクでエラーが起こる。(標準Cライブラリが不適合)

2.msoft-float 環境のgcc開発環境について、
  標準Cライブラリを msoft-float で構成すれば、問題解決と思い。gcc開発環境の再インストールを行った。
 (gccのインストールで、configure の オプションに --with-float=soft を加えた。)
 1.2)のMakeエラーは解消、でも不具合は残った。


3.ARM7TDMI-Sの浮動小数点対応について。
 Interface 2009/5 P58 の 「機能を拡張するコプロセッサ」の節 表2 コプロセッサ番号 CP11、CP12 で 倍精度/単精度浮動小数点 の記載があり、LPC2388が浮動小数点処理機能をハードで実現すると思われ、コンパイルオプション -mhard-float  は妥当と思われた。
 しかし ARM7TDMI-S Revision r4p3 Technical Reference Manual の 4.1.1 「Coprocessor abailability」では、CP14 Debug controller と CP15 System contorol だけの記載  やはり コンパイルオプション -msoft-float が正解なのか。。。


※ もともと、gccの開発環境は、同じCQ出版 DW誌の STM32F103(Cortex-M3)の開発環境です。
 LPC2388で使う場合、CPUのアーキテクチャの差異を考慮して、gccの再インストールしなければならないと思います。

 今回、-msoft-float 対応 で gccのインストールのみ、configure の オプションに --with-float=soft を加えたが、newlibについては行わなかった。(makeが通ったのでかまわなかったと判断)
 次は、newlibの再インストールでも行おうと思います。(指定可能かどうか不明ながら)。。

 現時点では コンパイルオプション -mhard-float  の適否は不明。(-msoft-floatが正解と言い切る自信無し。)


ひまを見てボチボチと、、、、

 >>追加検証 
  gccとnewlibのインストール configureオプションに --with-float=soft を追加。 + コンパイルオプション -msoft-float の make。
   浮動小数点でこけていた箇所が通るようになった。 一応動作確認。(7/10)

2009年7月6日月曜日

デジタル・デザイン・テクノロジ(付録Lattice XP2)を眺めてみる。


以前、購入していたCQ出版デジタル・デザイン・テクノロジ①を眺めています。
感想を言えば、付録FPGA基板を使えるまでが大変!

ネックとなりそうな点
部品
 ・水晶発信器
 ・フラッシュメモリ
ダウンロードケーブル


 今回、ダウンロードケーブルにこだわってみました。
まず、P24の図2 「Lattice社FPGAをプログラミングするための回路」について。
1.部品をチェック
 ・ロジックIC 74VHC244 1ヶ
 ・抵抗 10KΩ 6ヶ 100Ω 5ヶ
 ・コンデンサー 100pF 5ヶ
 ※ここまでは、手持ちのパーツでまかなえますが。
 パラレルポートのP7(JTAG)、74VHC244のP1、P17に接続している論理回路記号 NOT + AND が何気なく書いてある。
 どうすればよいのか???

2.論理回路 NOT + AND について。
 まず、調べる。トランジスタとダイオードで回路が組めそうです。

3.論理回路 NOT + AND を検証する。

 真理値表は

 入力A   入力B   出力C
74HVC-P17  JTAG 74HVC-P1
  真     真     偽
  真     偽     真
  偽     真     偽
  偽     偽     偽   

 手持ちの トランジスタ 2SC1815 、ダイオード ショットキーバリア VRM 60V で上記の NOT + AND 部の回路を組む。
 抵抗は ほどほどの結果が R1 1KΩ、R2 200Ω、R3 20KΩ の組み合わせて得られた。

Vccおよび 入力Hiは 3.3Vで試した。(今回は回路の動作を検証することがせいぜい) 

 1)論理を検証
   真理値表に従い 入力/出力を確認
 2)入力B(パラレルポート P7(JTAG))でファンクションジェネレータで生成した方形波(デューティ比50%)を受ける。入力Aは Hi(真)。


  出力Cで得られる結果

     入力方形波  結果(出力Cの波形チェック)   
      10KHz ◎
      20KHz ◎
      40KHz ○
      50KHz △ デューティ比 45%
     100KHz △ デューティ比 40%
     200KHz × デューティ比 10% で かなり波形は崩れる。かろうじて周波数が検出できる。


 とりあえず、論理回路の動作が検証できたところで、ひと満足、ダウンロードケーブルの完成は先のまた先、FPGAの検証は果てしなく遠い彼方、、、

 PCのパラレルポートの規格から言うと、数MHzの動作が欲しいが、果たして、LatticeのFPGAのダウンローダーがどの程度の転送レートか、まだ調べてもいない。 (今後要チェック)

 19200のボーレートでの書き込みが出来ればよいのですが、高周波に対応するためのトランジスタ、ダイオードの選定が必要になるかも知れません。(パラレルポートでボーレートというのも変ですが、、)

 また、信号のレベルに応じて、抵抗を選び直さなければいけないかも知れません。

 ロジックIC 74VHC04 (NOT) 74VHC08 (AND)で 組むことも 選択枝のひとつになります。

   
  

 

2009年6月25日木曜日

Spartan-6  Evaluation Kit が出ました。

以前より気になっていました。Xilinx Spartan-6 の 評価キットがようやく出てきました。
詳細は http://japan.xilinx.com/products/boards_kits/spartan6.htm にあります。

評価キット[EK-S6-SP601-G-J]は Spartan-6 XC6SLX16-CS324-2CES を搭載、価格は$295で あとはいつ入手できるか です!

1.FPGA仕様
 ロジックセル 14,579 ブロックRAM 72Kバイト

旧スタータキット(HW-SPAR3AN-SK-UNI-G 価格$199)搭載の Spartan-3 XC3S700 の ロジックセル 13,248 ブロックRAM 45Kバイトに比べると ひとつ上の XC6SLX25 搭載が順当とも思われ、少々残念。

2.キット仕様
 ・Flashメモリ 64MB      パンフレットでは 256Mb とある。
 ・RAM     128MB DDR2  パンフレットでは 128Mb とある。
 ・クロック  200MHz
 ・LAN 10/100/1000 Ethernet
 ・GPIO FMC-LPC connector という コネクタで 64ピンの信号が取れるようです。
 
 なんと言っても、このキットの魅力は、「FPGA自体にMemory Controller Blockが搭載されていることで、128MBのDDR2が利用できるらしい!」と言うことです。
 現在、ALTERA CycloneIII のスタータキットを使っていますが、キット搭載の32MB DDR を利用しようとして、メモリコントローラを構成したのですが、ピンアサインでエラーが発生、仕方なくFPGA内部に64KBのメモリを構成し何とか凌いでいます。

 また、気になる点が GPIO(UserI/O)のほとんどが専用コネクタ(FMC-LPCと言う規格らしい)になり。対応のケーブル、サブボートが必要になりそうな点です。Xilinxの従来のキット(Spartan-3A DSP 3400A )でも使用されているコネクタなので、なんとかなるようですが、少々不安。
>> 現時点で、このコネクタ(FMC-LPC)から、UW-SCSIケーブルコネクタ(らしき)への変換サブボードが存在するみたいですが、詳細不明 個人的には、UW-SCSIの内部コネクタへの変換サブボードがあれば、80線のフラットケーブルにGPIOが引き出されるのでありがたいのですが。。。


3.購入について、
 USの購入サイトAvnet,NuHorizons を覗いてみると、価格は上記定価で、Xilinx出荷6週間となっている。発売開始が6週間後ということでしょう。8月中に入手できればと思います。    

LPC2388 GCCによる開発 メモ 中間まとめ

未だ、CQ出版 Interface誌 LPC2388付録基板のベースシステムの構築が出来ていません。


1.IRQによる割り込み処理のハンドリング。
 1)実装するIRQ

  ベースシステムのIRQ例外処理のはとりあえず。
  ・システムの稼動チェック(ハートビート)用に TIMER0の割り込み。 
  ・LCD(SG12864ASLB-GB-R01)のリフレッシュ用に TIMER1の割り込み。
  ・Key入力用(タクトスイッチのON/OFFスキャン用)に TIMER3の割り込み。
  ・システム汎用にTIMER2の割り込み。
  ・シリアル通信受信用のUART1の割り込み。
  を、使用します。

 2)IRQのハンドリング(手法1)  >> 今のところ不調
    I誌のgcc用のサンプルを利用
  (1)IRQハンドリング関数は CPU_IRQInterrupt(void)を使用 
     gcc_sample.cで定義/宣言され、startup.sでIRQ割り込みとして呼び出される。   
  (2)IRQハンドリング関数で VICIRQStatus による分岐で各IRQ割り込み処理を実行する。

   /* CPU割り込み処理 */
    void CPU_IRQInterrupt(void)
    {
     switch(VICIRQStatus)
     {
       case INT_IRQ_TIMER0:
        // for Timer0 IQR Interrupt
        TIMER0_IRQInterrupt(); // システム監視 ハートビート
        /* タイマ割り込みクリア */
        TIMER_InterruptReset(&TIMER_0);
        break;
       case INT_IRQ_TIMER1:
        // for Timer1 IQR Interrupt
         Lcd_IRQ_Handler();   // LCDリフレッシュ
        /* タイマ割り込みクリア */
        TIMER_InterruptReset(&TIMER_1);
        break;
       case INT_IRQ_TIMER2:
       ----------------------------

 3)IRQのハンドリング(手法2)
  (1)ハンドリング関数は CPU_IRQInterrupt(void)を使用 (手法1と同じ)
  (2)それぞれのIRQ例外処理関数のアドレスを VICVectAdd4,VICVectAdd5,,,にセットする。
  (3)IRQハンドリング関数で VICVectAddr にセットされた関数のアドレスを使用して、各タイマー、UARTのIRQ例外処理を実行する。
   ※IRQ例外処理側 (関数ポインタの扱い)
      void (*pfunc)(); // 関数ポインタ宣言
      pfunc = VICVectAddr; // 関数のアドレスを代入
      (*pfunc)(); // IRQ例外処理関数のCall
      VICVectAddr = 0x00000000; //IRQアドレスクリア(※訂正)
   ※IRQ設定側
      extern void Sys_IRQInterrupt( void ); //IRQ例外処理関数(TIMER0)
       /* ↑ 同一ソースファイル内で定義されていれば不要 */
      --------------
      VICVectAddr4 = (u32)Sys_IRQInterrupt; // IRQ例外処理関数のアドレスをセット


2.ARMモード/Thumbモードについての注意事項
 1)ARMモードでの標準ライブラリ(libc.a, libm.a等)の指定
    LIBRARY_DIRS = -L /usr/local/arm-tools/arm-elf/lib -L /usr/local/arm-tools/lib/gcc/arm-elf/4.4.0
 2)Thumbモードでの標準ライブラリ(libc.a, libm.a等)の指定
    LIBRARY_DIRS = -L /usr/local/arm-tools/arm-elf/lib/thumb -L /usr/local/arm-tools/lib/gcc/arm-elf/4.4.0/thumb
   ※一部でもARMモードのモジュールがあると、標準ライブラリを組み込む場合、リンク時にinterworkのワーニングが出、動作が怪しくなる。
   ※gccパッケージのインストールでconfigureオプション--enable-interworkを指定しているのにワーニングが出るのが不可解。


3.リンクスクリプトファイル
  FreeRTOSのサイトから次のソースをダウンロード
  FreeRTOSV5.2.0/デモ/[ARM7_LPC2368_Eclipse]/RTOSDemoの lpc2368.ld を修正し利用。
 1)ramサイズを64Kに変更   
 2)usbramを16Kに変更


※※※※訂正※※※※
  手法2の動作確認 不調 >> 最初の1歩に戻り再検証
  ①再度 CQ出版 I誌から再び、gcc_sample を 入手
     ● 5/13 gcc用サンプル・プログラム アップデート(gcc_sample.zip)
  ②gcc_sample.zipを解凍、gcc_sampleをビルド
  ③基板上のLEDの点滅を確認 [手法1の IRQで呼び出される関数でLEDを点滅]
  ④gcc_sample.cを手法2で出来るように修正

**修正箇所**

a. define

  /* 割り込みコントローラ(VIC) */
  #define VIC_BASE_ADDR 0xFFFFF000
  #define VICVectAddr4 (*(volatile unsigned long *)(VIC_BASE_ADDR + 0x110))
  #define VICVectAddr (*(volatile unsigned long *)(VIC_BASE_ADDR + 0xF00))

b.IRQハンドラー関数

  /* TIMER0 割り込み処理 */
  void TM0_IRQInterrupt(void)
  {
    if( toggle == 0 ) {
      toggle = 1;
      *FGPIO_FIO1PIN =0x00000000; /* P1[18,19] '0' -> LED ON */
    } else {
      toggle = 0;
      *FGPIO_FIO1PIN =0x000C0000; /* P1[18,19] '1' -> LED OFF */
    }
    *TIMER_T0IR =1;  /* タイマ割り込みクリア */
  }

  /* CPU割り込み処理 */
  void CPU_IRQInterrupt(void)
  {
    void (*pFunc)();
    pFunc = (void*)VICVectAddr;
    (*pFunc)();

    VICVectAddr = 0x00000000; // VICVectAddr のクリア ※1 追加
  }

c.Main関数
     検証用にポート1の19ピンに繋がるLEDの点滅を加える。

/* タイマ割り込みLED点灯制御プログラム */
  int main(void)
  {
    *SYS_SCS = *SYS_SCS | 1; /* FGPIO Select */

    /* LED点灯制御設定 */
    *FGPIO_FIO1DIR =0x000C0000; /* P1[18,19] OutPut */
    *FGPIO_FIO1MASK=0x00000000; /* P1[18] Non Mask */
    *FGPIO_FIO1PIN =0x000C0000; /* P1[18,19] '1' -> LED OFF */
    ----------
    *TIMER_T0MR0 = 1000000;      /* 供給クロック周波数=1秒 */
    *TIMER_T0MCR = 0x00000003;    /* Match時にTCクリア&割り込み */

    VICVectAddr4 =(unsigned long )TM0_IRQInterrupt;
    *TIMER_T0TCR = 1;         /* タイマスタート*/
toggle = 0;
    ----------
**動作検証**
 結局不調       
 TIMER0 割り込み処理 TM0_IRQInterrupt(void) の最初の割り込みの実行は確認
 でもそれっきり。

**さらにもがく**
    VICVectAddr = 0x00000000;(※1)をIRQハンドリング関数(IRQInterrupt)に追加

※※動作検証※※
  ようやく成功。





2009年5月25日月曜日

FreeRTOSV5.2.0(LPC23xx)を解析する。

CQ出版 Interface誌 2009.5付録基板 LPC2388を何とか使えるようにしたいと思い、悪あがきを続ける。

1.GNU GCCによる開発環境の整備
 ・バージョン4.3.0 4.4.0 いづれも LED点滅など簡単なプログラムは可能
 ・複数割り込み等、少々込み入ったプログラムは、一定時間稼動後ハングする。

2.FreeRTOSによる開発プロトタイプの構築
 ・http://www.freertos.orgにアクセスし、ダウンロードサイト(http://sourceforge.net)からFreeRTOSV5.2.0.zipをダウンロードする。
 ・zipファイルを展開し、ARM7_LPC2368_Eclipse,Common,SourceのフォルダをCopyし、プロトタイプの構築を試みる。
 ・ARM7_LPC2368_Eclipse/RTOSDemoのフォルダでバージョン 4.4.0 でmakeを実行
 ・configPINSEL2_VALUEの未定義エラーが起こる、FreeRTOSConfig.h の #define confinPINSEL2_VALUEのコメントをはずす。
 ・再度ビルド、 no memory region specified for loadable section `.eh_frame' が起こる。
 ・適当に、lpc2368.ld(リンカスクリプト)を修正
    ※追記内容
     .eh_frame_hdr : ALIGN (4)
     {
     KEEP (*(.eh_frame_hdr))
     } >ethram          <<(ramをethramに変更)
     .eh_frame : ALIGN (4)
     {
     KEEP (*(.eh_frame))
     } >ethram          <<(ramをethramに変更)

     (ramでは「RTOSDemo.elf section .eh_frame will not fit in region ram」ビルドエ- で ethramに変更 これも適当)

 ・再度ビルド実行 成功 ただし、「does not support interworking」のワーニング表示
 ・このディレクトリをCopyしRTOS開発環境のプロトタイプとする。
    ARM7_LPC2368_Eclipse >> ARM7_LPC2388_Prototype
RTOSDemo >> RTOS_Prototype
    lpc2368.ld >> lpc2388.ld ファイル名変更
    Makefileの内容も併せて変更 lpc2368 を lpc2388 に変更
    ビルドを試す。 >OK

3.FreeRTOSによる開発プロトタイプの構築 その2
 プロトタイプへの修正内容
  ・LCD関連の無効化(将来 SG12864に対応)
  ・TCP/IPプロセスの無効化
  ・LEDを 基板LED1 Port1 Pin18に変更
 1)FreeRTOSの分析
  ・main.cの分析

4.自作関数の組み込み
 1)LEDコントロールの組み込み
 2)LCD(グラフィック)コントロールの組み込み。
  不具合
  ・memset,strcpy,strncpy,strlen,strcatでハングする。
  ・memset等の関数を自作する。LPC_memset等 とする。
    >>一応 動作OK
 *memset,strcpy等の標準関数は今後必須としたいので、>>
  ・コンパイルオプション検討(自作関数用 LPC23Lib.a )
    COMPILE_OPTS = -O1 -mcpu=arm7tdmi-s -fomit-frame-pointer -mthumb-interwork
       を
    COMPILE_OPTS = -mthumb -O0 -v -mhard-float に変更。
    (-mcpu=arm7tdmi-s で エラー Error: selected processor does not support requested special purpose register -- `mrs r3,CPSR'... )
    でようやくOK

5.デバッグ用にLOGのLCD出力
  FreeRTOSの関数 xTaskCreate() 正常に実行される。
   〃       vTaskStartScheduler() ほどほどに動作。
    ・タイマー0の割り込みで実行される関数を portISR.c (ARMモードでコンパイル)から自作関数(thumbモードでコンパイル)に置き換えると、VICVectAddr4に設定されるアドレスが1バイトずれる。> 仕方なく、portISR.c にコードを書き込む。(原因不明)
    ・このタイマー割り込み関数は、最初の割り込み時に実行される。しかし、それ以降の割り込みは確認出来ず。

6.泥沼。
  1)thumbモードをARMモードにしたり、thumbモードに戻したり。(Makefileをいろいろイジル)
  2)etc.

7.現時点でのLPC2388の壁
 1)割り込み関連の扱い VICVectAddrX, VICVectCntrlX,,,etc.
 2)命令系がARMモードとThumbモードの2ある事。
    参考にするサンプルコード(プロジェクト)が両方使っているケースが多い。
 3)startup.s , boot.s 等のスタートアップ用のアセンブラコードが難解。
 4)リンクスクリプトファイルも難解。
 5)とにかくタイマー0の割り込みが安定的に動かない。。。。。
 6)GNU GCC の地雷 >> 単に変数を追加するだけで動作が異なる。









    





 

2009年5月14日木曜日

GNUによる開発環境の整備(for ARM7TDMI)

組み込み用の開発環境として、GNUによる開発環境の整備を試行します。
問題はWindowsVISTA 64bit、失敗覚悟で行います。

1.linux環境の構築(Cygwinのインストール)
 1)"http://www.cygwin.com"にアクセス
 2)「Install or update now!」のアイコンをクリック ダウンロードで「実行」
    [Cygwin Setup]インストーラが立ち上がる。
 3)「Choose A Dounload Source」で Install from Internet を選択
 4)「Select Root Install Directory」は デフォルト"C:\cygwin"のまま設定
 5)「Select Local Packege Directory」は 適当にディレクトリ"C:\DownLoad\Cygwin"を設定
 6)「Select Your Internet Connection」で Direct Connection を選択
 7)「Select Download Site」で 適当にダウンロードサイトを選択
 8)「Select Packeges」先頭の"All"の横の"Default"はそのまま。
   ①パッケージの追加
    再度[Cygwin Setup]インストーラが立ち上げ以下のパッケージを追加する。
     ・"Archive" zip等のファイルの圧縮/解凍
     ・"Devel"  gcc、make等の開発ツール
     ・"Editors" vi等のエディター
     ・"Net"/"inetutils" telnet等のネットワークツール

--アンインストールの場合  
( ⑧「Select Packeges」で 先頭の"All"の横の"Default"をクリックして"Uninstall"に変更する。)
     

2.GNU開発環境のインストール
 1)GNU関連パッケージの入手
  ①"http:://www.gnu.org"にアクセス
  ②[DownLoad]をクリック
  ③「How to get GNU software」の[・Download it from the web or via FTP:we....]をクリック
  ④「GNU mirror list」の[Asia/Japan ftp://ftp.ring.gr.jp/pub/GNU]をクリック
  ⑤gccパッケージの入手
   ・[gcc]をクリック
   ・[gcc-4.4.0]をクリック(最新版にトライ)をクリック
      ※IE8.0では不調 [Apr 22 09:39 gcc-4.4.0]の表示
   ・[gcc-4.4.0.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑥binutilsパッケージの入手( ④のFTPサイトより。)
   ・[binutils]をクリック
   ・[binutils-2.19.1.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑦gmpパッケージの入手( ④のFTPサイトより。)
   ・[gmp]をクリック
   ・[gmp-4.3.1.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑧mpfrパッケージの入手
   ・"http://www.mpfr.org/”にアクセス
   ・[Latest release: download]をクリック
   ・[mpfr-2.4.1.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑨Insightパッケージの入手
   ・"ftp://sourceware.org/pub/insight/releases/”にアクセス
   ・[insight-6.8.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑩newlibパッケージの入手
   ・"ftp://sourceware.org/pub/newlib”にアクセス
   ・[ newlib-1.17.0.tar.gz]をクリック
   ・c:\Download\GNUに保存

 2)インストール (Cygwinでの作業)
  ①インストール先ディレクトリ作成
   ・cd /usr/local
   ・mkdir arm-tools
  ②各パッケージの解凍
   ・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.19.1.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.0.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/insight-6.8.tar.bz2
   ・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
(arm-tools以下をバックアップ)
  ③binutilsパッケージのインストール
   ・cd binutils*
   ・./configure --target=arm-elf --prefix=/usr/local/arm-tools
   ・make
   ・make install
  ④gmpパッケージのインストール
   ・cd ../gmp*
   ・./configure --prefix=/usr/local/arm-tools
   ・make
   ・make check
   ・make install

  ⑤mpfrパッケージのインストール
   ・cd ../mpfr*
   ・./configure --prefix=/usr/local/arm-tools --with-gmp=/usr/local/arm-tools
   ・make
   ・make check
   ・make install

  ⑥gccパッケージのインストール
   ・cd ../
   ・mkdir BuildGcc
   ・cd BuildGcc
   ・../gcc-4.4.0/configure --target=arm-elf --with-gmp=/usr/local/arm-tools --with-mpfr=/usr/local/arm-tools --prefix=/usr/local/arm-tools --enable-interwork --enable-multilib --enable-languages=c --disable-libssp
    (--with-newlib を追加 */* 下記参照)
    (--with-float=soft を追加 7/10 )
   ・make
   ・make install

   (/usr/local/arm-tools/binにPATHを通す。 <== newlibインストール失敗対応 12/4 )

  ⑦newlibパッケージのインストール
   ・cd ../newlib*
   ・./configure --target=arm-elf --prefix=/usr/local/arm-tools
    (--with-float=soft を追加 7/10 )
   ・make
   -- インストールの中断(エラーによる)

     エラー発生
       内容
         lib_a-dummy.oのコンパイル時
/bin/sh: arm-elf-cc: command not found

     エラー解析
      a.現在GNU開発環境があるPCでnewlibのconfigureを実行、出力Makefileを今回のMakefileと比較(diff)
       > CC_FOR_TARGET=$(STAGE_CC_WRAPPER) arm-elf-gcc $(FLAGS_FOR_TARGET) 
       < CC_FOR_TARGET=$(STAGE_CC_WRAPPER) arm-elf-cc $(FLAGS_FOR_TARGET) <=今回
       なぜ arm-elf-cc になったのか?
      b.config.logを確認
       591行目 CC_FOR_TARGET があった。
      c.configureの確認
       8539行以降にCC_FOR_TARGETの設定が記述

対処
      a.深く考えなく、GCCのバージョン を 4.3.3 に入れ替える。
             ==>変わらなかった。
      b.GCCのインストール 各オプションを変える。
             ==>検討中 ==> 解決
次のオプションでgccの configure を実行 (--with-newlib を追加)
     ../gcc-4.4.0/configure --target=arm-elf --with-gmp=/usr/local/arm-tools
         --with-mpfr=/usr/local/armtools --prefix=/usr/local/arm-tools
         --enable-interwork --enable-multilib --enable-languages=c
         --disable-libssp --with-newlib
       で gccとnewlibのインストール作業をやり直した。

※newlibでの再ビルドは make clean では不十分、newlib-1.17.0.tar.gz の解凍からやり直したほうが良さそう。

   --インストールの続き
   ・make install

  ⑥gccパッケージの補足インストール
   ・cd ../BuildGcc*
   ・make all
   ・make install

3.GNU検証
 1)newlibインストール失敗(未解決)での検証
   ① TIMERでLEDを点滅プログラム
             ==> 成功
 ② LCD表示プログラム
     ・リンクで、-lc オプションがエラー  llibc がリンクできず。

その他
 1)NXP LPC2388用 ダウンローダー 「Flash Magic」のインストール
   ①"http://www.flashmagictool.com/"にアクセス
   ②Download FlashMagic.exe (ページ右側)をクリック
   ③インストールプログラムを実行
 2)CP2102_USB ドライバのインストール
   ①LPC2388基盤をUSB接続
   ②ドライバインストールを促されるので、インターネットでドライバを検索する方法でインストールを行う。

2009年5月13日水曜日

DELL Studio Slimが潰れた。 無事復旧?

 先週より、いじくりまわしていた DELL Studio Slimが 潰れた。
Windows VISTAのインストール 7回、Windows 7 4回、かなりヘビーな事をやってった報いかとも思いつつ、、、
 前日、NEC ValueOne、HP xw4400、IBM RS6000、と順次シャットダウンを行ったのですが。DELL Studio Slimだけが立ち上がらない。

 1.本日最初の立ち上げ。
 「Windowsのシャットダウン障害の意味のメッセージ」
が表示。かまわず通常のWindows立ち上げを選択。 10分ごも立ち上がらない。画面表示なし。ディスクアクセスは頻繁にある。メインスイッチを長押しし、電源OFF
 2.セーフモードでの立ち上げ。
  ①最初の立ち上げと同じ障害メッセージが表示されたので、Safeモードを選択して立ち上げた。
  ②シャットダウンを行う。
 3.3度目の立ち上げ。
  最初の障害メッセージは出ない、Windowsが立ち上がりそうに思えたが、最後の最後で、立ち上げはストップ。10分たっても立ち上がらない。ディスクアクセスは頻繁にある。またもや強制電源OFF
 4.セーフモード+ネットワークでの立ち上げ。
  ①障害メッセージに対し。  Windows Live OneCare での バックアップを使った復旧を試みようとSafe+ネットワークで立ち上げた。
  ②Windows Live OneCareは起動を試すが失敗。
  ③シャットダウンを行う。
 5.5度目の立ち上げ。
  最初の障害メッセージは出ない、、、強制電源OFF
 6.セーフモードでの立ち上げ。
  ①コントロールパネル>管理ツール>コンピュータの管理>記憶領域>ディスクの管理で
   WindowsVistaのパーティションを選択し、プロパティを表示
   ツール>エラーチェック>チェックする で 次回起動時にディスクチェックおよび、リカバリを設定して。シャットダウン。
 7.7度目の立ち上げ。
  ①起動時にディスクチェックのメッセージが表示 ディスクチェック、リカバリに 3時間かかり、その後、無表示のままディスクアクセスが続く。
  ②ディスクチェックに3時間かかったので、3時間以上待つ。
  ③Windows Live OneCare で 復元を行う。
    不足しているファイルを全て復元する。
     復元するファイル:2ファイル(16.2KB)
  ④Windoows再起動
  ⑤再起動確認
 
 まとめ
  ・最初の立ち上げ時に、3時間以上待てばよかったと思う。
  ・多分ディスクリカバリが行われているのだろう、その間の無表示は問題。
  ・Safeモードで立ち上げた時、Windows Live OneCare でのファイル復旧が出来ないのは、問題。
  ・Safeモードで 管理ツール>コンピュータの管理>記憶領域>ディスクの管理 で 該当のディスクパーティションのリカバリが出来ないのは、問題。


 その他メモ
  Windows Vistaで Administrator を使用可能にする方法。
  ・コマンドプロンプトを「管理者として実行(A)」で起動する。
   スタート>すべてのプログラム>アクセサリ>コマンドプロンプトを右クリック
  ・コマンドプロンプトで net user administrator /active:yes を実行
  ・コントロールパネル>ユーザアカウントで Administrator のパスワードを設定する。

   

 

2009年5月11日月曜日

再び、Vista64を試す。

 一応、Windows7へのリプレースの検証は終えます。これまでの作業を踏まえ、再度Windows Vista (64bit)へのリプレースを検証します。

1.Windows Vista (64bit)のインストール
 1)PC電源ON、DELL画面でF12キー(Boot Option)を押す。
 2)DELL Reinstallation DVD を PCに入れる。
 3)Boot Devide を CD/DVD:SM-....に変更する。
 4)「Press any key to boot .....」 で 適当にキーを押す。
 5)言語「日本語」選択、、、ライセンス条項「条項に同意します」チェック、インストールの種類「新規」
 6)カスタムインストールを選択
 7)インストールの場所 ディスク0のパーティションを一旦「削除」、「新規」、「フォーマット」
   (ディスク0、パーティション 合計サイズ 465.7GB 空き領域 465.6GB)
   再起動
 8)ユーザー、パスワード、PC名、を入力
 9)「推奨設定を使用します。」を選択、時刻、日付を確認、「開始」...
 10)ウェルカム センター 
  ①デバイスマネージャーで 障害のデバイスを調べる。
   ・ディスプレイアダプタ>標準VGAグラフィックアダプタ
   ・ネットワークアダプタ>Tealtek RTL8168/8111....
   ・ほかのデバイス>SMバスコントローラ
  ②DELL Device driver DVDを 入れる。 autoRcd.exeの実行
Dell Resource CD のインストール

  ③システム、ビデオ ドライバのインストール
   再起動 
  ④ネットワークのドライバのインストール
    ネットワーク デバイス ドライバ (ネットワーク Del Diagnosticsのほうではない。)
     「Realtek RTL81XX...」をクリック。
     「解凍」を押す。 ドライバインストールソフト起動

  ⑤ネットワーク接続確認
   ・IEでmsnのHPが表示される。
   ・スタート>ネットワーク 
    メニューバー下に「ネットワーク探索とファイル共有が無効になっています。、、、」
      「、、、共有の有効化」を選択
   ・「ネットワークと共有センタ」が起動。「いいえ、、、(プライベートネットワークに限定する共有を設定)」を選択。
   ・ネット上のほかのPCが表示できない場合
     ワークグループのチェックボックスの全てのチェックをはずす。か全てのチェックボックスをチェックするかする。
  ⑥ワークグループの変更
   ・スタート>コンピュータで コンピュータのプロパティを表示させる。(右クリック)
   ・コンピュータ名、ドメインおよびワークグループの設定 で「設定と変更」
     システムのプロパティが表示 「変更」
   ・ドメイン・ワークグループを 例)MSHOME に変更する。

2.Windows Live OneCareのインストール

※ここで、バックアップとしてWindows転送ツールを使う。
  このPCを古いPCとして、別のPCの共有ディレクトリに転送ファイルを書き出す。

3.その他アプリケーションのインストール
 1)Roxio Creator DE 10.2
  ①Setup.EXEの実行
   *Windosw 再起動
 2)Cyberlink Remote Media
  ①Setup.EXE
 3)Cyberlink Power DVD DX8.1
  ①Setup.EXE

4.Microsoft Office 2003 のインストール
 1)SETUP.EXEの実行
 2)ユーザー情報の入力
 3)使用許諾契約書 同意
 4)インストールの種類 カスタムインストール
   ①Outlookのチェックをはずす。アプリケーションごとにオプション。。のチェック


5.メール等のデータ移動
   DELL Dimension430S =>(NEC ValueOne 共有ディレクトリ)=> DELL Studio Slim
 1)旧PC用にWindows転送ツール準備
   ①全てのプログラム>アクセサリー>システムツール>Windows転送ツール
   ②新しい、転送を開始しますか?、、「新しい転送を開始する。」を選択
   ③現在使用しているコンピュータはどれですか?、、「新しいコンピュータ」を選択
   ④転送ケーブルについて。 「いいえ、他のオプションを表示します。」
   ⑤古いコンピュータにWindows、、 「いいえ、ここでインストールする必要があります。」
   ⑥Windows転送ツールをインストールする方法、、 「外付けハードディスクまたは、、」を選択
   ⑦ネットワーク上の共有ディレクトリ(NEC ValueOne)を選択
   ⑧ご使用のコンピュータ、、 「はい、ネットワーク上でファイルと設定を転送します。」を選択
   ⑨Windows転送ツールのキーがありますか? 「いいえ、キーが必要です。」を選択。
   
 2)旧PCでファイル転送実行
   ①ネットワークの共有ディレクトリ(NEC ValueOne)のMigWizホルダのMigSetup.exeを実行。
   ②「CD,DVD,または他のリムーバルメディアを使用する。」を選択
   ③「外付けハードディスクまたはネットワークの場所」を選択
   ④ネットワークの共有ディレクトリを指定。パスワード指定。
   ⑤転送するユーザーアカウント、ファイル、および設定の選択。
     ・主要なユーザーアカウント以下
     ・主要フォルダ
   ⑥転送実行。
 
 3)新PCでファイル転送実行
   ①データ転送を行った共有でディレクトリ(NEC ValueOne)のSaveDataダブルクリックする。
     Windows転送ツールが立ち上がる。
   ②共有ディレクトリを「参照」で選択しなおし、パスワードを入力
   ③ユーザーアカウントの引継ぎを確認。
   ④転送実行
    *Windows再起動
 4)IE動作確認
 5)mail動作確認
  ・Windowsメール起動
    「Outlook Expressから電子メールアカウントとメッセージを転送しています。」
      *メッセージインポートしているときにエラー発生
      *アカウントのユーザー/パスワードを要求された。
       全アカウント(システム情報含む)で行った場合、このユーザ-/パスワード要求は無かった。


-------ここから下は、奮闘中

6.Oracle10g Client のインストール
 1)ランタイム インストール
 2)カスタム インストール [Oracle Winodows Interfases 10.1...]
 3)スタート>すべてのプログラム>Oracle-OraClient10g_home1>Configuration and Migration Tools>Net Configuration Assistantで SQL NET 設定を行おうとする。
 4))コンピュータ/ローカルディスク(C:)/Oralce/product/10.1.0/Client_1をアクセスしようとすると、
 「このフォルダーにアクセスする許可がありません。」で続行をクリック
 5)再度 Net Configuration Assistant を起動しようとする。
  「このショートカットの参照先にアクセスできません。必要なアクセス許可がない可能性があります。」
  c:\Oracleの所有者を現ユーザに変更する。
   ①コントロールパネル/システムとセキュリティ/管理ツール/サービスで
     OracleMTSReco...のサービスを停止する。
   ②c:\Oracleの名前を変更する。 c:\Oracle2など
   ③c:\Oracleのディレクトリを作成する。
   ④c:\Oracle2(仮)のフォルダ product を c:\Oracleのディレクトリに Copyする。
   ⑤c:\Oracle2(仮)を削除する。
 6)再度 Net Configuration Assistant を起動。成功
   ①ローカル・ネットサービス名構成
   ②追加
   ③サービス名 ***.world を入力
   ④TCPを選択
   ⑤ホスト名 192.168.xxx.xxxを入力
   ⑥ネットサービス名 *** を入力
     終了
 
 7)SQL Plus の実行 成功
 8)ODBCの設定
   コントロールパネル>>管理ツール>データソース(ODBC)
    ※ Oracle ODBC が無い。
   Windows Vista 再起動 更新プログラムのインストール 46個が 実行される。

    **** Oracle ODBCの設定で悩む。

 9)Oracle HP(OTN)より ODBCドライバをダウンロードする。
   Oracle ODBC Driver 10.1.0.5.0(旧10.1.0.2.0)
>> OUI 10.1.0.3.0が必要 エラー OUI Oracle Universal Installar
Windows XP までは、Microsoft Data Access Componet(MDAQ)
Vistaでは??

  ここで一もがき
Oracle11g Clinet Windows Interface をインストール
  レジストリエディタで 
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBCINST.INI に
     Oracle in OraClient10g_home1 = Installed を 追加
      失敗

  レジストリの登録 参考となるキーがあればエクスポートする。 エクスポートされたファイルをテキストエディタで修正する。このファイルをダブルクリックする。



メモ
 Windows転送では、ビデオドライバの復元は出来なかった。
(ウェルカムセンターはコントロールパネルの[システムとメンテナンス]にあります。)

 













  

           

2009年5月10日日曜日

Windows 7 にトライする。

 いままで、PCのリプレースでいろいろ試しました。その結果 Windows Vista 64bitを一旦諦め、Windows 7 32bit を導入します。

インストール概要
 ①ハードディスクのフォーマット
 ②Windows7(32bit)のインストール
 ③Oralce10gR1 Clientのインストール
 ④Office2003のインストール
 ⑤Excel VBA(OO4O)マクロの稼動設定
 ⑥Visial Studio 2005のインストール
 ⑦VC++2003 開発アプリケーションの稼動確認
 ⑧Visual Studio 2005 開発アプリケーションの稼動確認

1.準備 
 1)Microsoft より、Windows 7 をダウンロードする。
 2)インストールDVDを作成する。
 3)ハードディスクのフォーマット
   *一旦 Windows7 をインストールされた状態で再インストールを行うとき、ハードディスクのフォーマットは行えなかった。
   次の手順でディスクのフォーマットを行った。
  ①DELL studio slim の 電源ON
  ②DELL画面 PF12を押す。(Boot Option)
  ③DELのREINSTALL WindowsVISTA 64bit ディスク入れる。
  ④インストールの場所選択・ドライブオプション で DISK0 パーティション3をフォーマットを行う。
  

2.Windows 7 インストール
 1)DELL studio slim の 電源ON
 2)DELL画面 PF12を押す。(Boot Option)
 3)Windows 7 インストールディスクを 入れる。
 4)Boot Device を CD/DVD:.. に替える。
 5)インストールの重要な更新プログラムの取得 「インターネットに接続して最新のインストール、、」
 6)ライセンス条項 「同意します」チェック
 7)インストールの種類 「新規インストール」を選択
 8)インストール場所の選択 ディスク0 パーティション3 空き450.7GB
 9)ユーザー名、コンピュータ名の設定 / パスワード の設定
 10)コンピュータの保護と。。。 推奨設定を使用します。
 11)日付、時刻設定、ホームネットワーク選択
   Windows7インストール終了 ローカルディスク(C:)空き 440GB
  *Windows7再起動確認

3.Oralce10gR1 Clientのインストール
 1)Oralce10gR1 Client DVDを 入れる。autorun.exeの実行
 2)インストールタイプの選択で ランタイムを選択
 3)Oracle Net Configuration Assistant が立ち上がる。 
 4)インストール終了
 5)スタート>すべてのプログラム>Oracle-OraClient10g_home1>Configuration and Migration Tools>Net Configuration Assistantで SQL NET 設定を行おうとする。
  「このショートカットの参照先にアクセスできません。必要なアクセス許可がない可能性があります。」のエラーメッセージ。
 7)コンピュータ/ローカルディスク(C:)/Oralce/product/10.1.0/Client_1をアクセスしようとすると、
 「このフォルダーにアクセスする許可がありません。」で続行をクリック
 8)再度 Net Configuration Assistant を起動する。 
   ①ローカル・ネットサービス名構成
   ②追加
   ③サービス名 ***.world を入力
   ④TCPを選択
   ⑤ホスト名 192.168.xxx.xxxを入力
   ⑥ネットサービス名 *** を入力
     終了
 9)スタート>すべてのプログラム>Oracle-OraClient10g_home1>Application Development>SQL Plus を起動する。 データベース 接続を確認。

 10)Oracle Client 追加インストール
   ***初期手順略***
 11)インストール先を OracClient10g_home1に変更
 12)インストールタイプ カスタム を選択
 12)使用可能な製品コンポーネント [Oracle Winodows Interfases 10.1...]をチェック
   インストール実行

 登録レジストリを確認
   HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraClient10g_home1/ORACLE_HOME
(C:\Oracle\product\10.1.0\Client_1)
Oracle9iのレジストリと比較。

4.Office2003のインストール
 1)完全インストールを実行 

5.Oracle ODBCの設定
 1)コントロールパネル/システムとセキュリティ/管理ツール/データソース(ODBC)を実行
 2)ODBCデータソースアドミニストレーターでシステムDNSを追加する。
  ①追加 Oracle in OraClinet10g_home1 を選択
  ②データソース名、TNSサービス名、ユーザーIDを入力
  ③接続テスト 成功

6.デジタル署名(プライベート)
 1)スタート>すべてのプログラム>Microsoft Office>Microsoft Officeツール>VBAプロジェクトのデジタル署名
 2)デジタル証明書 証明書の名前 "White Clouds" で 作成。
 
7.Excel VBA(OO4O)マクロの稼動設定
 1)VBA(OO4O)を含むExcel Bookを開く。
 「マクロが使用できません。セキュリティレベル高に設定されています。また、デジタル署名,,,,,」のエラー OK を押す。
 2)ツール/マクロ/Visual Basic Editer を起動
 3)Visual Basic Editer ツール/デジタル署名 を実行
 4)デジタル署名 「選択」 "White Clouds" を選択
 5)このExcel Bookを上書き保存、一旦閉じる。
 6)再度このExecl Bookを開ける。 「セキュリティ」の警告表示
 7)この発行者のマクロを常に信頼する。のチェックボックス チェック >> マクロを有効にする。
   「書き込みできません。」のエラー表示
 8)コンピュータ/ローカルディスク(C:)/Oralce/product/10.1.0/Client_1をアクセスしようとすると、
 「このフォルダーにアクセスする許可がありません。」で続行をクリック
  ※最初のOracle Client インストール後で起きた現象と同じ。対処も同じにする。
 9)再度このExecl Bookを開ける。VBAマクロを実行 成功
  ※それでも失敗することがある。その場合
   ①コントロールパネル/システムとセキュリティ/管理ツール/サービスで
     OracleMTSReco...のサービスを停止する。
   ②c:\Oracleの名前を変更する。 c:\Oracle2など
   ③c:\Oracleのディレクトリを作成する。
   ④c:\Oracle2(仮)のフォルダ product を c:\Oracleのディレクトリに Copyする。
   ⑤c:\Oracle2(仮)を削除する。
   ** この操作は、c:\Oracle フォルダの所有者を Administrator から現ユーザーの切り替え操作です。 **
   ※これは、Windows7とOracle Clientのセキュリティの管理の齟齬が起こすトラブルと考えられます。(今回は、アプリケーションのインストールホルダの所有者を変えることで、Windows7のセキュリティに起因する障害を回避しました。)

8.Visial Studio 2005 のインストール
 1)インストールを開始
  Disk2のインストール中 「このプログラムには、既知の互換性の問題があります。」エラー発生
  場所:・・・Common7\IDE\devenv.exe
  場所:e:\setup\..\wcu\see\SQLEXPR32.EXE
  場所:c:\7644ff.....\setup.exe
このエラーに対し、 プログラムを実行する。を選択
  
 2)Window7 再起動
 3)Visual Studio 2005 起動
 「このプログラムには、既知の互換性の問題があります。」エラー発生
  場所:・・・Common7\IDE\devenv.exe
このエラーに対し、 プログラムを実行する。を選択
 4)全体的な開発を選択。
 5)プロジェクトのOpen 成功、 リビルド 成功、デバッグ 可能


9.Visual Studio 2005 開発アプリケーションの稼動確認
 ※今回 Oracle9iから Oarcle10gへの置き換えになったので Windowsのレジストリの調整を行う。
 1)コマンドプロンプト等で regedit を実行 
 2)レジストリキーの追加 
   HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE に 新規で文字列値 「ORACLE_HOME」を追加
    値は c:\Oracle\product\10.1.0\Client_1 を設定。
 3)デバッグで正常処理確認。

10.Windows Live OneCareのインストール
 1)Windows Live OneCareのハブPC(NEC Value One)で旧PC(Deminsion430S)のエントリを削除
 2)Windows Live OneCareのDVDを入れる。
 3)このプログラムは互換性の問題のためブロックされています。
   インストールファイルをダウンロードできません。
   エラーID 0017-80070003
 Microsoft HP で Windows 7 に対応するアンチウイルスソフトに OneCare が無い、VISTAまでは有った。

 

2009年5月7日木曜日

DELL Dimension 430S を DELL studio slim に置き換えた。

 5月6日 DELL Dimension 430S がそろそろクラッシュしそうなので、先月、GWに何とかしようとして、DELL studio slim を購入しました。
 Dimension 430Sは購入から、7年、ほぼ毎日休み無しに頑張った。この間、SONYのPSXは2年、日立のDVDレコーダーWOOは3年で潰れてしまいました。PCと同じようなAV機器なのに今思い返せば、Dimension 430Sに比べ、非常に高価な買い物だったようです。
 Dimension 430Sの退役に備えて、購入時の箱を見てみたら 2002/04の請求書が出てきた、モニタなしで、98,300円 当時、とても安いと思って買ったのですが、今回購入のstudio slimは、モニタ(23)付き、84.631円、デフレの進行をいまさら実感。
 さて、余談はさておき、今回のPCのリプレースの内容を以下に記します。

Ⅰリプレース内容
1.PC  Dimension430S >> studio slim
 1)CPU Pentium4 1.6GHz  >>  Core2 Quad 2.4GHz
 2)RAM    384MB  >> 4GB
 3)HDD    80GB   >> 500GB

2.OS Windows XP Home >> Windows Vista Home P 64Bit  >> Windows7 32Bit
       WindowsVista(64)へのリプレースは困難、Windows7へのリプレースを試す。
       最終的には XPに戻すことも検討しなければと思う。

3.ソフトウエア
 1)Office 97
    Vista(64)  Office 97 インストール失敗、Office2003 成功
    Windows7(32) Office2003 成功
 2)Visual C++ 2003
    Vista(64)  インストールせず
    Windows7(32) 2003はインストール失敗 Visual Studio 2005 インストール成功(一部エラー)
   
 3)Oracle9i Client 
    Vista(64) Oracle9i インストール失敗、Oracle10gR1(32) インストール失敗、Oracle10gR2(64) インストール失敗 Oracle11g インストール成功
    Windows7(32) Oracle9i インストール不可、Oracle10g(32) インストール成功 
 4)一太郎(これは、諦め)

4.まとめ
 1)Windows Vista、Windows7何れも、セキュリティ強化で、ソフトウエアのインストールがインストール自体の失敗か、ソフトウエアがファイルアクセス制限に引っ掛かって起動できないだけかの見極めが必要。
 2)Windows転送は新旧PC ユーザーアカウントをしっかり管理して行わないと。混乱する。
 3)Excel VBAマクロを使用する場合、デジタル署名(プライベート)を使う、意外と簡単。
 4)Oralce Client インストール時のレジストリの登録について要チェック。



==================================================================================
ここから下は作業ログ(作業内容を書き散らす)
==================================================================================
リプレース作業
1.Windows転送ツール なんも考えず実行
  Dimension430S ===> NEC Value ONE(共有ディスク) ===> studio slim
    2時間程度で終了
 ※ユーザーアカウントの扱いには、注意 
 Windows転送終了後、早速、メール、IEを試す。メールのメッセージ、アカウント、IEのお気に入り、クッキーが初期状態のまま、共有ディスクには、2GBのデータが残っている。、、、
 仕方なく、メール、IE、を個別にデータの移し替えを行う。IEはお気に入り、クッキー、メールはアカウント、アドレス帳の移し替えは成功、しかしメッセージは失敗。
 メールメッセージの移し替えは、
  Windows XP のOutlook ExpressからWindows VistaのWindowsメールへのメッセージの変換となる。ここで問題発生
 Outlook ExpressのメッセージはOutlookのメッセージとしてエクスポート、WindowsメールはOutlookのメッセージがインポート出来ない。(OutlookExpressのメッセージならインポートできるらしい)
 いろいろやるが、どうしてもうまくいかない。仕方なく、Windows転送からやり直す。、

 そこで、気が付く、ユーザーアカウントの新旧PC間の紐付け設定が有った、どうやら、最初の転送で見過ごしていたようです。転送終了後、ユーザアカウントを確認して、ログインする。IEもメールもしっかり旧PC(Dimension430S)から引き継がれていた。 

2.Office97
 Office97のCDをstudio slimに入れる、何も起こらない。フォルダをあけてSetupをクリックする。
エラーで動かない。Office2003で試す。インストール終了、NEC Value OneのOffice2003をアンインストールOffice97に置き換える。
※ ドックのメールをクリックするとOutlookが立ち上がった。少々慌てたが、OutlookのショートカットをWindowsメールのショートカットに置き換えた。

3.Oracle9i クライアント
 1)Oracle9i クライアント トライ 
 Oracle9iクライアントをインストール、最後の最後でコケる。Oracle10g クライアント(32bit)をインストール。
  そのほか 「javai.dllへの書き込み中エラー」
         「jrew.exeは動作停止」

 2)Oracle10gクライアントR1(32bit) インストール
Oracle9iインストールを失敗したあと Universal Installer で インストール済みの製品にエントリが無かったため、Oracle9i をアンインストール作業を行わず。Oracle10gクライアント(32bit)をインストール。
  Universal Installer で インストール済みの製品のエントリにOracle9iとOracle10gのエントリが表示された。
 SQL Plusを試すと、Oracle9i の方が立ち上がり、Oracle10gの方が立ち上がらなかった。
しかし、Excelマクロ(VBA)をためすと、OracleObject for OLE(OO4O)が不調。
 OO4Oはインストールされるが不調 VBAエラー「書き込みできません」 
[Set OO4Session = CreateObject("OracleInProcServer.XOraSession")]
 Oracle9i、Oracle10gをアンインストール
        ※WindowsVistaでのファイルアクセス拒否でおきるエラーの可能性あり。

 3)Oracle10gクライアントR2(64bit) インストール
 Oracle ホームページから Oracle Database 10g R2 Win x64(30日トライアル版) クライアントをダウンロードしインストールを試みる。インストーラ起動時の Windowsバージョン等のチェックでエラー
 「oraparam.ini」をいろいろいじるが、結局だめ。

 4)Oracle11gクライアント(64bit) インストール
  インストールタイプ:ランタイムでインストール
   Oracle ODBC Driver 11.1.0.6.0
 Oracle Provider for OLE DB 11.1.0.1.6.0 のインストール済み確認
 OO4O はOracle Provider for OLE DB になったのか? >> そんなにこだわることは無い。
        
==================================================================================
4.Windows7(32bit)に入れ替え
 ここでちょっと寄り道、Windows Vista(64bit)では、 Excel VBAマクロの全面見直しが必要と予想される。
 Vistaの32Bit版が手元にないので、思い切って、Windows7(32bit)をインストールする。
さて、Oracle Clientのインストールを行う。
 1)Oracle9i Clinetを試す。
  エラー 「ファイルc:\oracle\ora90\orancryp9dllからc:\oracle\ora90\orancryp9.dll.bakへの移動中のエラー」発生。  Oracle Net Configuration で ハング
   *SQL Plus  Oracle7.3 DataBase に接続成功
 2)Office97を試す。
  インストールは成功
  OO4Oの検証用に Excel VBAマクロを実行
  「ActivXコンポーネントはオブジェクトを作成できません」エラーOO4Session = CreateObject("OracleInProcServer.XOraSession")]

  regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\DAO360.DLL"
を試す。エラー
  regsvr32 "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\DAO360.DLL"
は成功
  Program Files と Program Files (x86) が存在する。 


  Regedit をコマンド コマンドプロンプトで起動する。 操作すると、コマンドプロンプトのウインドウが点滅する。
  レジストリエディタのエントリは Program Files が値として設定。いろいろまずそう。

3)Windows7をインストールする。(ディスクフォーマット)


 2度Windows7をインストールすると、元のVISTAは消える可能性あり。
フォーマットはインストールするパーティションの選択画面で行う。
 Windows7 インストール 直後 10.6GB使用 440GBあき Disk0 パーティション3

  管理 ユーザーアカウント DreamExpress
 ユーザーアカウント yanagiを追加

4)Oracle7 Client をインストール
 ランタイムを選択
  「jrew.exeは動作を停止しました。」
  エラー時に立ち上がっていた Net Configuration Assistant で 「ネット・サービス名を自分で作成する。」のラジオボタン選択でハングする。
 <windows再起動>
 Oracle Net Configuration Assistant を起動
 ローカル・ネットサービス名構成を実行
 ①SQL *Plusを実行 一応DBに接続する。
 ②コントロールパネル・システムとセキュリティ・管理ツール・ODBCデータソースアドミニストレータを起動
   システム DNS で データソースの新規作成 Microsoft ODBC for Oracleで 行う。
   「Oracle in OraClinet9i_home」でないのが問題
     Oracle9i カスタムインストールを実行
5)Office2003をインストール
VBAマクロつきExcellを試す。
  デジタル証明書を要求するダイアログが表示
 すべてのプログラム>Microsoft Office>Microsoft Office ツール>VBAプロジェクトのデジタル署名
 証明書の名前 WhiteClouds
で証明書作成。
 Microsoft Excell > VBAマクロ ブック を開く。> ツール > マクロ >Visual Basic Editer
 Microsoft Visual Basic Editer > ツール > デジタル署名 > 署名 証明書名 選択で WhiteClouds を選択する。
  証明書のプロパティを見ると。
 * この CA ルート証明書は信頼されていません。。。の表示  無視
 上書き保存
 Microsoft Excell > VBAマクロ Excelブック を開く。
  セキュリティの警告が出る。 「この発行者のマクロを常に信頼するをチェック」 >マクロを有効にする。
 でようやく、OO4Oの検証
  >> やはり ActivXコンポーネントはオブジェクトを作成できません。
で Oracle10g Client R1をインストール
Windows 再起動
すべてのプログラム>Oracle - OraClient10g_home1 > Application Development > SQL Plusを実行

  「このショートカット参照先にアクセスできません。必要なアクセス許可が無い可能性があります。」

WindowsXp(Dimension430S)から引き継がれたユーザで試す。同じ

ここで気づく VistaのWindowsメールはどうなった?? Outlook2003に切り替えた。

もとのWin7インストールユーザーに戻す。

SQL Plusショートカットのプロパティ(リンク先)をしらべる。
リンク先のフォルダを調べる。
途中で、アクセス拒否に会う。アクセス拒否を解除する。
問題
たフォルダのアクセス制限がかかるのは問題!!
SQL Plusを立ち上げ成功
Net Configration Assistant で ローカル・ネット・サービス名構成
サービス名:  ***.world 
         TCP
ホスト名:    *.*.*.12

ネットサービス名 ***10g
コントロールパネル>システムとセキュリティ>管理ツール>データソース(ODBC)
データソースの新規作成> データソースのドライバ  Oracle in OraHome90(9.0....) を選択
 ※ 選択ドライバはOracle9iのODBCに見える。しかし ネットサービスのエントリがOracle10g側で設定したものがつかわれる。

  少々混乱

混乱の原因

  ・Windows7でOracle9iClientのインストールが一部失敗(jrew.exeエラー)   
  ・WindowsXP(Oracle9iClinetインストール)をWindowsに-
Oracle10g Client R1でカスタムインストール 

  再度 ODBC OLEを確認しながらインストール

管理ツールでシステムDNSにOralce10gのドライバが追加される。

DNSの追加。を改めて行う、以前のエントリは削除不能になる。
OO4Oの検証
  >> やはり 「ActivXコンポーネントはオブジェクトを作成できません。」が「書き込みできません。」に変わる。

***** ここまで WindowsVista Windows7に Oracle 9iのインストールをあきらめる。
Oracle10g Oracle9i アンインストール
c:\oracle のディレクトリ削除

Oracle10g Client まず、ランタイムでインストール、次にカスタムインストール
カスタムインストール(Oracle Windows Interfaces 10.1.0...)
Net Configration Assistant は アクセス拒否に会い 起動できず。

ここで、中断、シャットダウン 

 再び Window7を立ち上げる。 さて、再インストールの前に、SQL*Plusを試す。

なんと、、、
  SQL*Plusが動いた。Net Configuration も動いた、 ローカル・ネット・サービス名構成を行い、管理ツール(データソースODBC)でシステムDNSの設定を行う。
さて、Excel VBA OO4O を試す。 データベースに接続確認、すべてうまく行く。

どうなっているのか、逆に不安になる。

ユーザーを切り替えて(今まではWin7インストールユーザー)
これ以降は 旧PC ユーザー
  Sql*Plusは正常に使えた。
  Excel VBA のデジタル署名(プライベート)が無効になっている。

Visual Studio 2005をインストールする。

 c:\Program Files\Microsoft Visual Studio8\Common7\IDE\devenv.exe
で既知の互換性の問題がありますエラー

  Protected Storage サービスを開始

Oracle Client インストールでの、、、
レジストリの値が旧PCの可能性あり。Windows転送でかぶった可能性あり。<<要チェック
RegisryKey  LocalMachine/SOFTWARE/ORACLE/ORACLE_HOMEが c:\oarcle\ora90
これを c:\Oracle\product\10.1.0\Client_1に変更

2009年5月4日月曜日

フェーズ3 Key入力テスト NXP LPC2388

4つのスイッチを押すと、それぞれに応じて、LEDが点灯する。
※このプログラムも数秒でハングする。
1.キー入力使用 main()関数 ソース
/****************************************************************************
タイマ割り込みサンプルプログラム(オンボードLED点灯制御)
****************************************************************************/
#define _EXTERN_
/* Includes ------------------------------------------------------------------*/
#include "LPC_BaseLib.h"

/* LED点滅用変数*/
int toggle0;
/* CPU割り込み処理*/
void CPU_IRQInterrupt(void)
{
  switch(VICIRQStatus)
  {
  // for Timer0 IQR Interrupt  ハートビート用割り込み
    case INT_IRQ_TIMER0:
      if(toggle0 == 0)
      {
        toggle0 = 1;
        Led_0_ON();
      }
      else
      {
         toggle0 = 0;
         Led_0_OFF();
      }
      /* タイマ割り込みクリア*/
      TIMER_InterruptReset(&TIMER_0);
      break;
    case INT_IRQ_TIMER1:
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    case INT_IRQ_TIMER3:
      // for Timer3 IQR Interrupt
      Key_Sarch();
      /* タイマ割り込みクリア*/
      TIMER_InterruptReset(&TIMER_3);
      break;
    default:
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

/* タイマ割り込みLED点灯制御プログラム*/
int main(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIMER_InitTypeDef TIMER_InitStructure;

    SYS_Initialize();

    /* LED点灯制御設定*/
    Led_Init();

    Key_Init();

    // タイマ設定 Timer0 Use for Hart Beet
    TIMER_StructInit(&TIMER_InitStructure);
    TIMER_InitStructure.TIMER_ID = TIMER_ID_0;
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
2.LPC用Key入力関数側
#include
#include "LPC_BaseLib.h"

void Key_Init()
{
  key_gpioinit();
  Key_Proc_Mode = KEY_MODE_MAIN;
}

// 前回GPIOがLow今回Highの場合 キー入力(Push)とみなす。
void Key_Sarch()
{
  if(Ref_Key_0 == VAL_KEY_ON && KEY_VAL_0 == VAL_KEY_OFF)
  {
    Key_Intrrupt(ID_KEY_0);
  }
  Ref_Key_0 = KEY_VAL_0;

  if(Ref_Key_1 == VAL_KEY_ON && KEY_VAL_1 == VAL_KEY_OFF)
  {
Key_Intrrupt(ID_KEY_1);
  }
  Ref_Key_1 = KEY_VAL_1;

    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

//キー対応GPIO設定
void key_gpioinit(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  // GPIO 0
  GPIO_InitStructure.GPIO_ID = GPIO_Port_0;
  GPIO_InitStructure.GPIO_Pins = GPIO_Pin_0 GPIO_Pin_1 GPIO_Pin_10 GPIO_Pin_11   GPIO_Pin_17;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_FAST;
  GPIO_InitStructure.GPIO_ModeIO = GPIO_Mode_INPUT;
  GPIO_InitStructure.GPIO_ModePin = GPIO_ModePin_PULLUP;

  GPIO_Init(&GPIO_0,&GPIO_InitStructure);
}

3.キー入力動作定義
#include

#include "LPC_BaseLib.h"

unsigned int icnt;

voidKey_Intrruptint key_id)
{
  switch(key_id)
  {
    case ID_KEY_0:
      Led_1_ON();
      Led_2_OFF();
      Led_3_OFF();
      break;
    case ID_KEY_1:
      Led_1_OFF();
      Led_2_ON();

    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・