ニケ・ボード ソフトウェア設計仕様書

ニケ・ボード
ソフトウェア設計仕様書
Nike Board Project
ソフトウェア設計仕様書
Rev.1.00 02/04/2010
1
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
更新履歴
版数
リリース日
担当者
説明
1.00
02/04/2010
山元壮一
初版
備考
2
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
目次
1
概要...................................................................................................................... 5
1.1
方針 ............................................................................................................... 5
1.2
OSについて .................................................................................................... 5
1.2.1
1.3
システムの概略説明........................................................................................ 7
1.3.1
ハードウェア概要..................................................................................... 7
1.3.2
ソフトウェア概要..................................................................................... 7
1.3.3
ブートローダー・ソフトウェア................................................................. 7
1.3.4
ユーザー・プログラム・ファームウェア.................................................... 8
1.4
ソフトウェア開発対象..................................................................................... 8
1.5
開発環境 ........................................................................................................ 9
1.5.1
1.6
2
参考資料 ...................................................................................................... 10
MCU ............................................................................................................. 11
2.1.1
概略仕様................................................................................................ 12
2.1.2
採用理由................................................................................................ 12
2.2
アナログ部 ................................................................................................... 13
2.2.1
外部A/Dコンバーター(AD7652) ........................................................... 13
2.2.2
外部D/Aコンバーター(AD5546) ........................................................... 14
2.2.3
3 軸加速度センサ (MMA7361L / ADXL335)............................................... 14
2.2.4
温度センサ(TMP36) ............................................................................ 17
2.2.5
PCM(相変化メモリ) ................................................................................ 17
2.2.6
インターフェイス部 ............................................................................... 18
2.2.7
電源部 ................................................................................................... 18
ソフトウェア構成................................................................................................ 19
3.1
ブート・ローダー・ソフトウェア .................................................................. 20
3.1.1
主な機能................................................................................................ 20
3.1.2
各機能説明 ............................................................................................ 20
3.1.3
参考資料................................................................................................ 21
3.2
4
CodeWarror開発環境について ................................................................... 9
ハードウェア構成................................................................................................ 11
2.1
3
フリースケール・セミコンダクタ社 MQXの概要........................................ 5
ユーザー・プログラムの構成......................................................................... 22
3.2.1
ソフトウェア構成................................................................................... 22
3.2.2
ニケ・ボードBoard Support Package(BSP) ........................................... 24
3.2.3
ミドルウェア ......................................................................................... 35
デモアプリケーション説明................................................................................... 36
4.1
デモアプリケーションDEFINE定義................................................................. 36
4.2
信号処理モジュール...................................................................................... 36
3
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
5
ソフトウェア設計仕様書
4.2.1
関連ファイル ......................................................................................... 36
4.2.2
エフェクト処理...................................................................................... 36
4.2.3
DEFINE定義 ........................................................................................... 39
4.3
ユーザーインターフェイスモジュール ........................................................... 40
4.4
MFSモジュール ............................................................................................. 41
4.5
センサーモジュール...................................................................................... 42
4.6
シェル・モジュール...................................................................................... 44
4.7
その他.......................................................................................................... 45
フォルダー構成説明 ............................................................................................ 46
5.1
フォルダ構成説明 ......................................................................................... 46
5.1.1
ニケ・プロジェクト プラットフォーム用 プロジェクトファイル ............. 46
5.1.2
ニケ・プロジェクト アプリケーション用 プロジェクトファイル ............. 47
5.2
ソースファイルの場所について ..................................................................... 47
4
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
1 概要
本書では、ソフトウェアの設計概要について 説明します。
1.1
方針
開発は実質約 2 ヶ月と短期であるため、下記の点に重点をおきました。
ドライバは、アプリケーションの負荷がかからない設計。
使用できそうなサンプルを採用するにあたり サンプルの動作をよく理解し、問題の
部分は、改良をすることを基本とします。
(決して、そのままわからない状態で 使用
しない。)
ソースは、基本 OPEN とします。
1.2
OSについて
フリースケール・セミコンダクタ社 MQX を採用します。採用の理由として、
サンプルが多いこと
使用ライセンスは、フリーであること
USB スタックや、ファイルシステムを持っていること
の3点です。Freesacle
1.2.1
MQX の概要について説明します。
フリースケール・セミコンダクタ社 MQXの概要
フリースケール・セミコンダクタ社 MQX について概要を説明します。
MQX はフリースケール・セミコンダクタ社が提供している OS で、シンプルな構造の OS に
なります。また、MQX ライセンスはフリーです。
(サポートライセンスは、費用が発生しま
すので、ご注意ください。)
フリースケール・セミコンダクタ社 MQX が提供しているソリューションは、下記です。
Freescale MQX Real-Time TCP/IP Communication Suite (RTCS)
データリンクから FTP、Telnet、DHCP、DNS サーバーとクライアントのようなア
プリケーション層と SNMP までクライアントにわたる 豊富な スタンダード プロ
トコル・セットをサポートする 早くて、ローフットプリントの 組み込み用のイ
ンターネットスタックです。
5
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
Freescale MQX File System (MFS)
RTCS に含まれるマス・ストレージデバイス(USB またはシリアルプロトコルによ
って)、RAM ディスク、または FTP サーバで使用される MS-DOS 対応 FAT ファイ
ルシステムを搭載しています。
デスクトップPCファイルシステムの様に、それは長いファイル名、複数のディ
スクボリュームとディレクトリ処理もサポートします。それも、HTTP サーバのた
めに Trivial Files System(TFS)機能も搭載しています。
Freescale MQX USB Host/Device
Freescale MQX USB Host/Device は、1.1 と 2.0 のスタンダードとロー・スピード
(LS:1.5Mb/s)、フル・スピード(FS:12Mb/s)とハイ・スピード(HS:480Mb/s)
コミュニケーションに対応しています。
USB スタックは Freescale MQX RTOS と MFS に完全に溶け込んで、いろいろなク
ラスドライバーも搭載しています。
Third Party Pre-Integrated Software for Freescale MQX Software Solutions
Third Party Pre-Integrated Software for Freescale MQX Software Solutions は、国際
的なサービスとソリューションを提供することを約束する世界的なパートナー専
門知識のネットワークによってサポートされます。
ソリューションとしては、例えばセキュリティ、インダストリアル プロトコル
(CAN、1588、PROFINET その他…)
、そして、グラフィックプラグイン。)など
Freescale MQX Design and Development Tools Freescale MQX™ Design and
Development Tools
Freescale MQX RTOS Task-Aware Debugging 機能は CodeWarrior と IAR デバッガー
に接続可能です。そして、ローコストで、完結した製品品質を改善する強力な組
み込み用 デバッギング環境を提供します。
詳細は、下記の HP を参照してください。
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MQX&parentCode=M
CF5225X&fpsp=1&nodeId=0162468rH3YTLC00M95448
6
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
1.3
システムの概略説明
1.3.1
ハードウェア概要
ソフトウェア設計仕様書
本システムでは、下記のハードウェアブロック図のハードを 提供し、下記の機能を実現し
ます。
ADC よりアナログ信号の 16bit 長の量子データを取得する機能
DAC より 16bit 長の量子データをアナログ信号へ変換後出力する
PCM メモリへのデータの READ/WRITE 機能
傾きなどを計測する 3 軸加速度センサ
温度を計測する温度センサ
USB のホスト及びデバイス機能
Avnet 製 FPGA ボードと接続する拡張 I/F
2 つの LED 点灯/消灯する機能
2 つの SW を検出する機能
Figure 1 ハードウェア・ブロック図
1.3.2
ソフトウェア概要
本システムのソフトウェアは、 ブートローダー・ソフトウェアとユーザー・プログラム・
ファームウェアの2つのソフトウェアより 構成されます。
1.3.3
ブートローダー・ソフトウェア
ブートローダー・ソフトウェアは、マイコンリセット時に起動するソフトウェアです。
リセット時、SW2 が押されていた時、ユーザー・プログラム・ファームウェアのアップデ
ート機能が 動作します。それ以外の操作では、ユーザー・プログラム・ファームウェアを
起動します。
7
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
注意事項:ユーザー・プログラム・ファームウェア・アップデート機能で ブートローダー・
ソフトウェアの書換えは、できません。ブートローダー・ソフトウェアの書換えは、JTAG
又は BDM ツールで 行うことになります。
1.3.4
ユーザー・プログラム・ファームウェア
ユーザー・プログラム・ファームウェアは、本システムのメインとなるソフトウェアです。
今回はユーザー・プログラム・ファームウェアは、X-FEST 用のデモプログラムを実装しま
す。
ブートローダー・ソフトウェアのユーザー・プログラム・ファームウェア・アップデート
機能を使用することで、ユーザー・プログラム・ファームウェアの書換えが行うことがで
きます。
電源 ON
初期設定
SW=ON
SW
SW=OFF
ユーザー・プログラム
ブートローダ・プログラム
ファームウエアの起動
の起動
Figure 2 ブートローダー・フローチャート
1.4
ソフトウェア開発対象
ソフトウェアの開発対象は、下記のモジュールです。
ブートローダーソフトウェア
ハードウェア動作テスト(ドライバ、ミドルウェア)
X-FEST 用のデモプログラム
8
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
1.5
ソフトウェア設計仕様書
開発環境
本開発で使用する開発環境は、以下のツールを使用します。
統合開発環境:CodeWarrior for ColdFire Architectures v7.1
USB マルチリンク for ColdFire 用
1.5.1
CodeWarror開発環境について
本システムでの統合開発環境として CodeWarror ColdFireV2.V3.V4 用を推奨します。
1.5.1.1 CodeWarrorコード制限について
CodeWarror ColdFireV2.V3.V4 用無償版とは、128K バイトのコード以内であれば 無償で開
発できます。
本システムのフル機能(USB 等を実装した場合)は、128K バイト以上になり、無償版は、
開発できません。そのため、この無償版で開発する場合、機能を限定し リリース版にする
必要があります。公開するプロジェクト環境は、機能を限定し リリース版を提供する予定
です。そのため その範囲で 開発が物足りなくなった方は 有償版を購入していただければ
と思います。
1.5.1.2 CodeWarror ColdFireV2.V3.V4 用の入手方法
下記の「Special Edition: CodeWarrior for Coldfire Architectures 」より入手できます。
http://www.freescale.com/webapp/sps/site/overview.jsp?code=CW_SPECIALEDITIONS&tid
=CWH
また、PACTH は、CodeWarrior for ColdFire v7.1.2 Patch ファイルが、必要です。
http://www.freescale.com/lgfiles/devsuites/ColdFire/CWCF_V7_1_2.exe?WT_TYPE=Update
s&Patches&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=exe&WT_ASSET=Downloads
環境構築後 プロジェクトファイルをオープンすることをお勧めします。
9
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
1.6
ソフトウェア設計仕様書
参考資料
MCF52259 ColdFire® Microcontroller DataSheet Rev2 (MCF52259DS.pdf)
MCF52259 ColdFire® Integrated Microcontroller Reference Manual Rev2
(MCF52259RM.pdf)
M52259EVB SCH(RevD1)
MCF5282 ColdFire® マイクロコントローラ ユーザーズ・マニュアル Rev0
M52259DEMOCOM SCH RevB
M52259DEMOMCU SCH RevB
Bootloader Demo Guide DEMOKIT
AD5546/AD5556 DataSheet Rev0(AD5546_5556_JP.pdf)
AD7652 DataSheet Rev0(AD7652_JP.pdf)
Freescale MQX™ RTOS Reference Manual Rev0
Freescale MQX™ Real-Time Operating System User’s Guide Rev0
Freescale MQX™ I/O Drivers User's Guide Rev0
Freescale MQX™ MFS™ User’s Guide Rev0
など
10
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
2 ハードウェア構成
下記のハードウェアブロック図が、本システムのハードウェア構成です。
本章では各ブロックの概略について説明します。
Figure 3 ハードウェア・ブロック図
2.1
MCU
MCU は、Freescale MCF52258 を搭載します。
USB
OTG
Memory Options
512KB
Flash
64KB
SRAM
256KB
Flash
64KB
SRAM
256KB
Flash
32KB
SRAM
Memory Options
BDM
32Kh
z
OSC
PLL
GPIO
JTAG
10/100
FEC+DMA
4-ch,32-bit
Timer
I2C
UART
CAN
4-ch,16-bit
Timer
QSPI
UART
2-ch
PIT
RTC
8-ch,12bit
ADC
UART
8-ch
PWM
CAU/
RNG
2X
INTC
CAU/
RNG
System
Integratio
n
Mini Bus
EMAC
V2 CpldFire
Core
Figure 4 フリースケール・セミコンダクタ社 MCF5225x ブロック図
11
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
2.1.1
ソフトウェア設計仕様書
概略仕様
イーサネットコントローラ、USB コントローラを搭載したワンチップ・コネクティビティ・
マイコン、イーサネット-USB を始め、様々なインタフェース変換に対応可能
2.1.1.1 特長
CPU コア
最大 76 MIPS@80Mhz( Dhrystone 2.1 )+EMAC
オンチップ・メモリ
最大 64K バイト SRAM
最大 512K バイト Flash
主な機能
外部バス(16/8bit)
10/100 イーサネット MAC
PHY 付き USB2.0 フルスピード・ホスト/デバイス/OTG コントローラ
CAN 2.0B コントローラ
8 チャネル 12 ビット AD コンバータ
タイマ機能
DMA タイマ、汎用タイマ、周期割込みタイマ、PWM タイマ、WDT
多彩なシリアル・インタフェース:
3xUART、QSPI、2xI2C
仕様
電源電圧: 3.3V 単一電源
動作温度範囲: -40C~+85C
パッケージ: 144LQFP
2.1.2
採用理由
デバイスの入手性と下記の 3 つの機能がある点です。
PHY 付き USB コントローラ
外部バス(16/8bit)
8 チャネル 12 ビット A/D コンバータ
詳細は、下記の資料を参照。
MCF52259DS: MCF52259 ColdFire® Microcontroller DataSheet
MCF52259RM: MCF52259 ColdFire® Integrated Microcontroller Reference Manual
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF5225X
12
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
2.2
アナログ部
2.2.1
外部A/Dコンバーター(AD7652)
REFBUFINREFREFGND
AGND
AVDD
DVDD DGND
OVDD
AD7652
REF
SERIAL
PORT
IN
INGND
SWITCHED
CAP DAC
PD
RESET
1
DATA[15:0]
BUSY
PDREF
PDBUF
OGND
CONTROL LOGICCLOCK
AND
CALIBRATION
CIRCUITRY
PARALLEL
INTERFASE
RD
CS
SER/PAR
OB/2C
BYTESWA
CNVST
Figure 5 アナログ・デバイセズ社 A/D コンバータ、AD7652 ブロック図
■ 主な仕様
ColdFire との接続は、16bit ローカルバス接続です。
パラレルモードで使用します。
アナログ信号を 16bit データへ変換する。
サンプリング周波数は、最大 500Khz です。
詳細は、下記の資料を参照。
http://www.analog.com/jp/analog-to-digital-converters/ad-converters/ad7652/products/pro
duct.html
13
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
2.2.2
ソフトウェア設計仕様書
外部D/Aコンバーター(AD5546)
Figure 6 アナログ・デバイセズ社 A/D コンバータ、AD7652 ブロック図
■主な仕様
ColdFire との接続は、16bit ローカルバス接続です。
16bit データを アナログ信号へ変換する。
サンプリング周波数は、最大 500Khz です。
詳細は、下記の資料を参照してください。
http://www.analog.com/jp/digital-to-analog-converters/da-converters/ad5546/products/pro
duct.html
2.2.3
3 軸加速度センサ (MMA7361L / ADXL335)
本ボードには、フリースケール・セミコンダクタ社製、MMA7361L とアナログ・デバイス
社製、ADXL335 の 2 つの 3 軸加速度センサを搭載しており、基板上のチップ・ジャンパー
で選択を行います。
MMA7361L を使用する場合: R37、R38、R40 にチップ・ジャンパーを取り付けます。
X-fest 2010 での限定配布基板では、MMA7361L がデフォルトの仕様になっておりま
す。
ADXL335 を使用する場合: R32、R34、及び R36 にチップジャンパーを取り付けます。
14
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
2.2.3.1 フリースケール社製 3 軸加速度センサ MMA7361L
Figure 7 MMA7361L ブロック図
■主な仕様
ColdFire とのインターフェイスは、A/D I/F 接続です。
X、Y、Z の 3 軸の加速度を取得する。
g-Select 端子で G レンジを選択できます。(Low=1.5g/High=6g)
詳細は、下記の資料を参照してください。
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA7361L
15
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
2.2.3.2 アナログ・デバイセズ社製 3 軸加速度センサ ADXL335
Figure 8 AD7652 ブロック図
■主な仕様
ColdFire 内蔵の 12 ビット A/D コンバータを経由してデータをサンプリングします。
X、Y、Z の 3 軸の加速度を取得します。
感度: 1G
詳細は、下記の資料を参照してください。
http://www.analog.com/jp/mems/low-g-accelerometers/adxl335/products/product.htm
16
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
2.2.4
ソフトウェア設計仕様書
温度センサ(TMP36)
Figure 9 TMP36 ブロック図
■主な仕様
マイコンとのインターフェイスは、A/D I/F 接続です。
温度を取得
詳細は、下記の資料を参照してください。
http://www.analog.com/jp/sensors/analog-temperature-sensors/tmp36/products/product.h
tml
2.2.5
PCM(相変化メモリ)
128MBit(16M×8bit)の PCM メモリを接続しています。詳細については、後日アップしま
す。
17
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
2.2.6
ソフトウェア設計仕様書
インターフェイス部
2.2.6.1 USB インターフェイス
■主な仕様
USB ホスト/OTG/デバイス仕様に準拠
FS(12Mbps)PHY 内蔵
2.2.6.2 FPGA拡張インターフェイス
■主な仕様
I2C バスを接続します。
ADC/DAC の外部バス I/F を接続します。
2.2.7
電源部
電源は、3つのルートから供給します。
USB のバスパワーより給電。(5V)
FPGA からの電源供給(5V)
外部電源からの電源供給(5V)
18
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3 ソフトウェア構成
4.1.
ソフトウェア
メモリマップの説明
本システムのメモリ構成を説明します。
メモリ・マップ
0x0000_0000 0x0000_0000
ベクター・テーブル
0x0000_0418
0x0000_0420
ブート・ローダー・プログラム領域
FLASH
0x0000_3FFF
0x0000_4000
MEMORY
ユーザー・プログラム領域
0x0007_FFFF 0x0007_FFFF
0x0008_0000
0x1000_0000
0x2000_0000
SRAM MEMORY
0x2000_FFFF
0x2001_0000
0x3FFF_FFFF
0x4000_0000
SYSTEM MEMORY
0x4001_FFFF
0x4002_0000
0x7FFF_FFFF
0x8000_0000
MINI-FLEXBUS
0xFFFF_FFFF
Figure 10 MCF52258 メモリ・マップ
19
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■ベクター・テーブル
メモリ領域:0x00000000~0x00000400
リセット時、割り込み処理関数、CPU の割り込みのベクター・アドレスを配置します。
リセット時は、ブート・ローダーのスタートアドレスを指定します。
それ以外の割り込みは、0x00004008 にしています。ユーザープログラムの割り込み
ハンドラを 0x00004008 に配置するか、0x00004008 にユーザープログラムの割り込
みハンドラにジャンプする処理を追加してください。
■CPU 情報
メモリ領域:0x00000400~0x00000420
CPU の情報を格納する領域です。
■ブート・プログラム
メモリ領域:0x00000420~0x00003FFF の領域に配置します。
ブートから、ユーザー・プログラムを立ち上げる時、0x00004000 にジャンプします。
0x00004000 にユーザー・プログラムのスタートアドレスへジャンプする処理を追加
してください。
■ユーザー・プログラム
メモリ領域:0x00004000~0x000’7FFFF の領域に配置します。
ユーザー・プログラムは、本ボードのメインプログラムです。
3.1
ブート・ローダー・ソフトウェア
本ソフトウェアは、リセット時、最初に起動するソフトウェアです。
ボード出荷時には、ボードに書かれているソフトウェアです。
BDM/JTAG ツール上で 書換えが可能です。
3.1.1
主な機能
本ソフトウェアは、マイコンリセット後に起動するプログラムです。
主な機能は 2つです。
ユーザー・プログラムのアップデートを行う機能
ユーザー・プログラムを起動する機能
3.1.2
各機能説明
各機能のソフトウェアの動きを説明します。
20
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3.1.2.1 ユーザー・プログラムのアップデートを行う機能
ユーザー・プログラムのメモリ領域を 新しいファームに書き換える機能です。
このモードは、 リセット時に SW2 が押されている時に、起動します。
PC からみると本デバイスは、USB メモリデバイスとして認識されます。その後、新しいフ
ァームをそのドライブに COPY することで ファーム書換えが完了します。
■手順
1.
PC と本ボードを USB で接続し、本ボードを給電します。
2.
リセット時に SW2 が押されていることで ユーザー・プログラムのアップデート機能
が起動します。(手順としては、RESET SW+SW2 を押した後、RESET SW をはなす。
)
緑色の 2 つの LED が点灯していることを確認する。
PC 上で 本ボードが USB メモリのリムーバル・ディスクとして認識されていることを確認
する。
3.
リムーバル・ディスクへ新しいファームをコピーする。
4.
コピーが完了したあと RESET SW を押す。
■ファームウェアファイル
ユーザー・プログラムのファイル形式は、S19 ファイルです。
(統合開発環境で 作成
できます。)
モトローラタイプの HEX ファイルです。
3.1.2.2 ユーザー・プログラムを起動する機能
リセット時は、0x00004000 へジャンプします。また、割り込み時は、0x00004008 へジャ
ンプします。
3.1.3
参考資料
Freescale Boot loader サンプルソフト
21
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
3.2
ソフトウェア設計仕様書
ユーザー・プログラムの構成
ニケ・ボードのユーザー・プログラムについて説明します。
この章では、ニケ・ボード用の BSP プラットフォームと X-FEST 2010 で使用されたデモソ
フトウェアについて記載します。
X-FEST に提示するデモソフトウェアは、オーディオ信号を入力し、エフェクトした信号を
出力する機能を有している。
そして、入力したアナログ信号の適当な間隔で データを区切り、PCM メモリである内部ド
ライブか、又は USB メモリに保存する。データは、常に古いデータを破棄し、新しいデー
タを保存する。
3.2.1
ソフトウェア構成
ソフトウェアの概略を ブロック図として 下記に記載します。
ニケ・ボード プラットフォーム構造として下記のブロックに分かれる。
Board Support Package(BSP)
Platform Support Package(PSP)
Freescale MQX File System (MFS)
Freescale MQX Shell System
Freescale MQX USB Host/Device
ユーザー・アプリケーション
次の章より このブロックについて説明します。
22
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3.2.1.1 システムブロック図
アプリケーション部分
SW/LEDモジュール
信号処理モジュール
センサ処理モジュール
・Signalへ Effct/Bank 切り替えイベント
センサーのA/D値
信号処理
API関数
エフェクト
処理API
・再生/録音イベント
・アナログ
データ
Shellモジュール
File System処理モジュール
・LED点灯/点滅/消灯
イベント通知
・信号入力イベント
・LED 点灯/消灯
・SW信号
SW/ LED
処理タスク
信号処理
タスク
CALLBACK
関数
センサー
処理タスク
file system
処理API関数
・REC/PLAYイベント通知
・REC/PLAYデータ
Shell処理
タスク
・REC/PLAY/STOPイベント
・REC/PLAYデータ
file system
処理タスク
・REC/PLAYデータ
ミドルウエア
Shellモジュール
・ADC入力開始/停
止
・ADCデータ
サンプリング周波数
ADCドライ
バ
・シリアル送受信
DACドライ
バ
・ADCデータ
DMA ISR
ハンドラ
・設定
Shell
API関数
・出力信号データ
・DAC出力開始
・DAC出力停止
・DACデータ
QSPI ISR
ハンドラ
・設定
UARTドライ
バAPI
UART ISR
ハンドラ
DMA
DMAタイマ
ADCドライバ
・転送タイミング
MFS
API関数
USB処理
タスク
設定/登録
Attach/Dettach
イベント
・チャンネルのAD値読み出し(read)
・設定/登録(Open)
USB
Callback
USBドライバ
API
LED/SW
関数API
タイミング
Attach/Dettach
QSPI
・設定
USB
GPIO
・割り込み
ADC Timer
ハンドラ
ADC
ハンドラ
・A/D値
USBドライバ
P5Qドライバ
GPIOドライバ
ドライバ
23
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
・設定
・A/D値
A/D
TIMER
UART
UARTドライバ
タイマドライバ
API
・設定
設定/登録
・送受信完了
・送受信データ
・制御データ
DMAタイマ
DACドライバ
Sensor
ドライバAPI
・送受信データ
DMA
・転送タイミング
・Attach時
設定/登録/削除
PCMドライ
バ
・送信データ ・割り込みイベント
・設定
・DACデータ
・割り込み要求
・割り込み要求
USBモジュール
MFSモジュール
Sensor ドライバ
A/D
タイマ ISR
ハンドラ
・割り込み要求
タイマ
タイマドライバ
ニケ・ボード
3.2.2
ソフトウェア設計仕様書
ニケ・ボードBoard Support Package(BSP)
BSP は、IO ドライバ層が 該当します。本章では、ドライバの動きについて説明します。
下記が、ニケ・ボード プラットフォームで使用するドライバ類です。
ADC AD7652 ドライバ(※1.)
DAC AD5546 ドライバ(※1.)
PCM メモリドライバ(※1.)
センサードライバ(加速度センサ/温度センサ)
(※1.)
USB デバイス/HOST ドライバ
UART ドライバ
GPIO 関数モジュール(LED/SW 検出用)(※1.)
※1.新規に作成したドライバです。
3.2.2.1 A/Dコンバータ: AD7652 ドライバ
■概要
本ドライバは、ADC のデータを取得するドライバです。AD7652 と MCU との接続は、ロー
カルバス接続です。バス幅は 16bit になります。
(Mini-FlexBus アドレス: 0x80000000)
DMA0、DMA タイマ 0 を制御し DMA0 の割り込みを使用します。DMA0 のサイクル・スチー
ル・モードを使用し、DMA タイマ 0 の外部要求のタイミングで ローカルバスより 16bit デ
ータの ADC データを 受信用バッファメモリに転送します。
DMA0 割り込みは、音データ 6msのデータサイズが、転送できた時、DMA 割り込みが 発
生する構成です。
受信用バッファメモリのサイズは、音データ 6ms の時間データです。また、この時間は、
変更可能です。
また、アプリケーションから CALLBACK 関数を登録できます。DMA 割り込み発生タイミン
グで、CALLBACK 関数が 呼ばれます。
■格納先フォルダー
< \mqx\source\io\ADI\AD7652>
■ADC 受信用バッファメモリ
ADC 受信用バッファサイズは、6msの音データサイズが、格納できる容量を確保してます。
[6msの音データサイズの算出式]
データサイズ = サンプリング周波数 * 0.006(6ms)* 2 バイト
■サンプリング周期
サンプリング周波数は、10Khz(@100μs)~250Khz(@4μs)を想定しています。
サンプリング周波数は変更可能です。
24
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■ドライバ API 関数処理説明
1.
初期化関数処理
AD7652 のリセット処理と POWER DOWN 解除処理を行います。
初期時は、ADC の取得停止状態です。
サンプリング周波数は、50Khz です。
2.
WRITE 関数処理
このドライバでは、この関数は、使用しません。
3.
READ 関数処理
音データを取得できます。
1 回の READ で取得できる音データは、6msの音データサイズ固定です。
6ms の音データサイズは、サンプリング周波数によってサイズが変わります。
[6ms の音データサイズの算出式]
データサイズ = サンプリング周波数 * 0.006(6ms)* 2 バイト
4.
IOCTL 関数処理
ドライバへの設定を行います。
IO_IOCTL_AD7652_START
ADC の取得開始を行います。
IO_IOCTL_AD7652_STOP
ADC の取得停止を行います。
IO_IOCTL_AD7652_SET_CALLBACK
ADC ドライバが ADC 取得タイミングを通知する時に CALL する CALLBACK 関数を設定で
きます。
IO_IOCTL_AD7652_SET_BPS
ADC ドライバのサンプリング周波数を設定できます。設定値の単位は、hz です。
IO_IOCTL_AD7652_GET_BPS
ADC ドライバのサンプリング周波数を取得できます。設定値の単位は、hz です。
25
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3.2.2.2 D/Aコンバータ: AD5546 ドライバ
■概要
本ドライバは、アナログ 16bit データを DAC へ転送するドライバです。
AD5546 と MCU との接続は、ローカルバス接続です。バス幅は、16bit です。
(Mini-FlexBus アドレス: 0x80000010)
DMA1、DMA タイマ 1 を制御し DMA1 の割り込みを使用します。DMA1 のサイクル・スチー
ル・モードを使用し、DMA タイマ 1 の外部要求のタイミングで ローカルバスよりアナログ
16bit データを DAC へ転送します。
DMA1 割り込みは、音データ 6msのデータサイズが、転送できた時、DMA1 割り込みが 発
生する構成です。
送信用バッファメモリのサイズは、音データ 6msの時間データです。また、この時間は、
変更可能です。
■格納先フォルダー
<\mqx\source\io\ADI\AD5546>
■DAC 受信用バッファメモリ
DAC 送信用バッファサイズは、6ms の音データサイズが格納できる容量。
[6ms 音データサイズの算出式]
データサイズ = サンプリング周波数 * 0.006(6ms)* 2 バイト
■サンプリング周期
サンプリング周波数は、10Khz (@100us) ~250Khz(@4us)を想定しています。
サンプリング周波数は変更可能です。
■ドライバ API 関数処理説明
初期化関数処理
AD5546 のリセット処理と POWER DOWN 処理を行います。
初期時は、DAC の取得停止状態です。
サンプリング周波数は、50Khz です。
WRITE 関数処理
音データを格納します。1 回の WRITE できる音データは、6ms の音データサイズ固定で
す。
6ms の音データサイズは、サンプリング周波数によってサイズが変わります。下記が、
6ms の音データサイズの算出式です。
[6msの音データサイズの算出式]
データサイズ = サンプリング周波数 * 0.006(6ms)* 2
READ 関数処理
26
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
このドライバでは、未使用の関数です。
IOCTL 関数処理
ドライバへの設定を行います。
IO_IOCTL_AD5546_START
DAC の取得開始を行います。
IO_IOCTL_AD5546_STOP
DAC の取得停止を行います。
IO_IOCTL_AD5546_SET_BPS
DAC ドライバのサンプリング周波数を設定できます。
設定値は、hz 単位です。
IO_IOCTL_AD5546_GET_BPS
DAC ドライバのサンプリング周波数を取得できます。
設定値は、hz 単位です。
27
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3.2.2.3 PCMメモリ ドライバ
■概要
Nyumonyx SPI 128Mbit PCM メモリとシリアル通信を行うドライバです。I/F は、SPI です。
SPI のシリアルクロックは、20Mhz です。
■格納先フォルダー
< \mqx\source\io\nymonix\P5Q_spi>
■転送データレート
WRITE 時は、約 160K バイト/Sec
READ 時は、約 400K バイト/Sec
■ドライバ API 関数処理説明
1.
初期化関数処理
QSPI の初期設定を行う。
2.
WRITE 関数処理
PCM メモリへデータを書きます。
3.
READ 関数処理
PCM メモリから、データを読みます。
4.
IOCTL 関数処理
ドライバへの設定を行います。
IO_IOCTL_QSPI_BLOCK_SET_MEM
PCM メモリへデータを書きます。
IO_IOCTL_QSPI_BLOCK_GET_MEM
PCM メモリから、データを読みます。
28
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3.2.2.4 センサードライバ
■概要
センサードライバは、以下の機能を有します。
1.
3 軸センサー (ADXL335, MMA7361L)と温度センサー(TMP36)の ADC デバイスの設定と
ADC 値を取得。
2.
3 軸センサー(ADXL335, MMA7361L)と温度センサー(TMP36)の GPIO の制御。
センサードライバの機能の 1 つである ADC は、 Freescale MQX の IO ドライバの ADC ドラ
イバを参考にしています。詳細は、下記の資料 MQX I/O ドライバ ユーザーガイドの
「Chapter 8 ADC Driver」を参照ください。
http://www.freescale.com/files/32bit/doc/user_guide/MQXIOUG.pdf?fsrch=1
3 軸センサー (ADXL335, MMA7361L)の
self-test ピンと g-select と
0-gdetect ピンの制御
を行います。
■格納先フォルダー
<\mqx\source\io\sensor>
■ドライバ API 関数処理説明
3 軸センサー (ADXL335, MMA7361L)と温度センサー(TMP36)の ADC デバイスの設定と ADC
値の取得を行います。
3 軸センサー (ADXL335, MMA7361L)と温度センサー(TMP36)の GPIO の制御を行います。
本ドライバは、Freescale MQX の IO ドライバの ADC ドライバの API を参考にしています。
その API の中で、センサーの GPIO の制御を行います。
センサーデバイス Open 関数処理
MQX I/O ドライバ ユーザーガイドの ADC ドライバ 8.5.1 Opening ADC Device に準拠しま
す。
ドライバー内のファイル構成、及び使用方法は本プロジェクトでも同じになります。
センサーデバイスの初期化
センサーデバイス Open 関数を最初に Call されたときにデバイスを初期化します。
<open 例>
/* Sensor ADC device init struct */
const SENSOR_ADC_INIT_STRUCT adc_init = {
SENSOR_ADC_RESOLUTION_DEFAULT, /* resolution */
};
29
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
f = fopen("sensor:", (const char*)&adc_init);
各定義は、 /mqx/io/sensor/sensor.h に定義されています。
初期化後の ADC は、停止状態です。
センサーデバイスの各機能は、表 1 のとおりに設定します。
なお、ADX335 と MMA7361L の GPIO 設定処理は、共通化しています。
Table 1 ニケ・ボードに搭載されている各種センサ
センサー名
説明
備考
ADXL335
設定値
・g-Rabge は 1g 固定
ピン名称
状態
説明
・MMA7361L の g-select
(0 or 1)
self-test
0
セルフテスト機能 OFF
と 0g-Detect は回路上共
通で接続されている。処
理は、MMA7361L を参考
のこと 。
(ソフトウエアを共通化
のため)
MMA7361L
設定値
ピン名称
状態
説明
(0 or 1)
self-test
出力:0
セルフテスト機能 OFF
g-select
出力:0
g-Range 1.5g
0g-Detect
入力
0g 検出機能ですが、今回は使用
しません
TMP36
特になし
センサーADC チャンネル ファイル Open
センサードライバーが open されて、初期化された後に、ADC チャンネル・ドライバー・フ
ァイルとして開くことができます。Open の方法は、「sensor: <チャンネル_数>」です。
一方、初期化記録は ADC チャンネルを初期化するというオープンコールしてときに記憶さ
れます。指定するチャンネルの ADC のパラメータによって、チャンネルおよび ADC の状態
が決定されます。
オープンでできるファイル数は、10 ファイルまでです。
<open 例>
const SENSOR_ADC_INIT_CHANNEL_STRUCT sensor_adc_channel_param1 = {
30
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
SENSOR_ADC_SOURCE_AN1, /* physical ADC channel */
ADC_CHANNEL_START_NOW, /* one sequence is sampled after fopen */
10,
/* number of samples in one run sequence */
100000,
/* time offset from trigger point in us */
500000,
/* period in us (=500ms) */
0x10000,
/* scale range of result (not used now) */
10,
/* circular buffer size (sample count) */
SENSOR_ADC_TRIGGER_2, /* logical trigger ID that starts this ADC channel
*/
NULL /* pointer to event */
}
fopen("sensor:1",(const char*)& sensor_adc_channel_param1);
各定義は、 /mqx/io/sensor/sensor.h に定義されています。
本センサで扱う ADC のチャンネルパラメータは、/demo/ x_f_gab_demo/ sensor_adc_list.c
に記載しています。
センサーデバイス Close 関数処理
ADC チャンネルドライバーファイルおよび デバイスドライバの Close。
WRITE 関数処理
本ドライバでは、使用しないため、空の処理です。
READ 関数処理
指定する ADC チャンネルドライバーファイルの ADC 値を取得します。
<read 例>
SENSOR_ADC_RESULT_STRUCT sensor_adc;
SENSOR_ADC_VALUE_TYPE
adc;
if (read(“sensor:1”, & sensor_adc, sizeof(sensor_adc) )){
adc = sensor_adc.result;
}
IOCTL 関数処理
IOCTL_SENSOR_ADC_RUN_CHANNEL
指定された ADC チャンネルドライバーファイルの測定を開始します。
31
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
3 つめの引数は、NULL で固定が望ましいです。(処理上無視します)
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_RUN_CHANNEL,
NULL
);
IOCTL_SENSOR_ADC_FIRE_TRIGGER
指定された ADC チャンネルドライバーファイルの ADC 計測を開始します。ADC チャンネル
を複数個、指定することが可能です。ADC チャンネルドライバーファイルの ADC チャンネ
ルが複数でない場合にも、使用が可能です。この場合、有効なトリガー(チャンネル)のみ処
理されて、計測が開始します。該当しない場合は、無視されます。
指定するパラメータが 0 の場合は、
IOCTL_SENSOR_ADC_RUN_CHANNEL と同じです。
<使用例>
const SENSOR_ADC_INIT_CHANNEL_STRUCT sensor_adc_channel_param1 = {
SENSOR_ADC_SOURCE_AN1 | SENSOR_ADC_SOURCE_AN2, /* physical ADC channel
*/
ADC_CHANNEL_START_NOW, /* one sequence is sampled after fopen */
10,
/* number of samples in one run sequence */
100000,
/* time offset from trigger point in us */
500000,
/* period in us (=500ms) */
0x10000,
/* scale range of result (not used now) */
10,
/* circular buffer size (sample count) */
SENSOR_ADC_TRIGGER_1 | SENSOR_ADC_TRIGGER_2, /* logical trigger ID that
starts this
ADC channel, 2*/
NULL /* pointer to event */
}
※赤字は、複数のチャンネルを指定した場合の設定方法です。
fopen("sensor:1",(const char*)& sensor_adc_channel_param1);
ioctl("sensor:1",
IOCTL_SENSOR_ADC_RUN_CHANNELS,
(SENSOR_ADC_TRIGGER_1 | SENSOR_ADC_TRIGGER_2)
);
32
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
IOCTL_SENSOR_ADC_STOP_CHANNEL
指定された ADC チャンネルドライバーファイルの測定を停止します。
3 つめの引数は、NULL で固定が望ましいです。(処理上無視します)
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_STOP_CHANNEL,
NULL
);
IOCTL_SENSOR_ADC_STOP_CHANNELS
ADC チャンネルドライバーファイルの ADC の計測を停止します。ADC チャンネルを複数個、
指定するこができます。ADC チャンネルドライバーファイルの ADC チャンネルが複数でな
い場合にも、使用が可能です。この場合、有効なトリガーのみ処理されて、停止します。
該当しない場合は、無視されます。
指定するパラメータが 0 の場合は、IOCTL_SENSOR_ADC_STOP_CHANNEL と同じです。
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_STOP_CHANNELS,
(SENSOR_ADC_TRIGGER_1 | SENSOR_ADC_TRIGGER_2)
);
IOCTL_SENSOR_ADC_PAUSE_CHANNEL
ADC チャンネルドライバーファイルの ADC 計測を一時停止します。
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_PAUSE_CHANNEL,
NULL
);
IOCTL_SENSOR_ADC_PAUSE_CHANNELS
ADC チャンネルドライバーファイルの ADC 計測を一時停止します。ADC チャンネルを複数
個、指定するこが可能です。ADC チャンネルドライバーファイルの ADC チャンネルが複数
33
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
でない場合にも、使用が可能です。この場合、有効なトリガーのみ処理されて、停止しま
す。該当しない場合は、無視されます。
指定するパラメータが 0 の場合は、IOCTL_SENSOR_ADC_PAUSE_CHANNEL と同じで
す。
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_STOP_CHANNELS,
(SENSOR_ADC_TRIGGER_1 | SENSOR_ADC_TRIGGER_2)
);
IOCTL_SENSOR_ADC_RESUME_CHANNEL
ADC チャンネルドライバーファイルの ADC 計測の PAUSE を行ったあとに Call されると計
測が再開します。3 つめの引数は、NULL で固定が望ましいです。(処理上無視します)
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_RESUME_CHANNEL,
NULL
);
IOCTL_SENSOR_ADC_RESUME_CHANNELS
ADC チャンネルドライバーファイルの ADC 計測の PAUSE を行ったあとに Call されると計
測が再開します。ADC チャンネルを複数個、指定するこが可能です。ADC チャンネルドラ
イバーファイルの ADC チャンネルが複数でない場合にも、使用が可能です。この場合、有
効なトリガーのみ処理されて、停止します。該当しない場合は、無視されます。
指定するパラメータが 0 の場合は、IOCTL_SENSOR_ADC_RESUME_CHANNEL と同じ
です。
<使用例>
ioctl("sensor:1",
IOCTL_SENSOR_ADC_RESUME_CHANNELS,
(SENSOR_ADC_TRIGGER_1 | SENSOR_ADC_TRIGGER_2)
);
ポート制御用 IOCTL 関数処理
今回、以下に示すポートは、Open 時に固定で使用するため、実装はしていますが、動作未
確認です。設定できるポートは、以下の 3 つです。
34
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
1.
g-select
2.
0g-Detect
3.
self-test
ソフトウェア設計仕様書
IOCTL_SENSOR_PORT_SET
指定するポートを出力に設定し、High 出力させます。
IOCTL_SENSOR_PORT_CLR
指定するポートを出力に設定し、Low 出力させます。
IOCTL_SENSOR_PORT_IN
指定するポートを入力に設定します。
IOCTL_SENSOR_GET_PORT
指定するポートの入力/出力状態と ポートのデータを取得します。
3.2.3
ミドルウェア
本ソフトウェアで使用しているミドルウェアは、下記の 3 つです。
Freescale MQX File System (略 MFS)
Freescale MQX Shell System
Freescale MQX USB Host/Device
詳細は、下記のドキュメントを参照してください。
Freescale MQX™ Real-Time Operating System User’s Guide Rev0
Freescale MQX™ I/O Drivers User's Guide Rev0
Freescale MQX™ MFS™ User’s Guide Rev0
35
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
4 デモアプリケーション説明
本章では、デモプログラムについて説明します。
■デモプログラム機能
ギターエフェクト
録音ファイル
4.1
デモアプリケーションDEFINE定義
デモアプリケーションで定義されている define の中でユーザーが変更可能なものについて
説明します。
DEFINE 定義
NIKE_TESTMODE
説明
定義しているファイル名
工場出荷テストモード 有効/無
\demo\x_f_gab_demo\NIKE_demo.h
効設定
DEMOCFG_ENABLE_USB_HOST
[有効:1/無効:0]
USB HOST 機能 有効/無効設
\demo\x_f_gab_demo\NIKE_demo.h
定 [有効:1/無効:0]
DEMOCFG_ENABLE_USB_DEVICE
USB DEVICE 機能 有効/無効
\demo\x_f_gab_demo\NIKE_demo.h
設定 [有効:1/無効:0]
DEMOCFG_ENABLE_SERIAL_SHELL
SERIAL SHELL 機能 有効/無
\demo\x_f_gab_demo\NIKE_demo.h
効設定 [有効:1/無効:0]
NIKE_DEMO_EFFECT(※1)
エフェクトデモ 有効設定
\demo\x_f_gab_demo\Signal_Task.c
(有効時 define 定義)
NIKE_DEMO_REC(※1)
録音/再生機能 有効設定
\demo\x_f_gab_demo\Signal_Task.c
(有効時 define 定義)
※1.NIKE_DEMO_EFFECT、NIKE_DEMO_REC は、どちらかを選択してください。
4.2
信号処理モジュール
ADC の取得したデータを 信号処理や、録音/再生処理を行い、DAC へ転送する処理を行う
モジュールです。
4.2.1
関連ファイル
<\demo\x_f_gab_demo\ Signal_Task.c>
4.2.2
エフェクト処理
■ディストーション効果
音を大きく歪ませるエフェクト。波形を歪ませる処理を行います。また、その後、音量が
小さくなるため、ゲインをかけます。
36
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
y[n] ← x[n] * α
y[n] < -P
y[n]
y[n] > P
-P ≤ y[n] ≤ P
y[n] ← - P
y[n] ← P
[論理式]
y[n]=α*((0 > x[n])) ? ((x[n] < -P)) ? : x[n]) : ((x[n] > P) ? P: x[n]))
[波形イメージ]
■ファズ効果
音を大きく歪ませるエフェクト
マイナス信号をプラス側に変更後、波形を歪ませる処理を行います。また、その後、音量
が小さくなるため ゲインをかけます。
37
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
[フローチャート]
[論理式]
y[n] =α * ((((0 > x[n]) ? (-1 * x[n]) : x[n] > P) ? P: ((0 > x[n]) ? (x[n] * -1) : x[n]))
[波形イメージ]
38
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■エコー効果
音の遅延と音の遅延情報のフィードバックすることで より効果的なエコー効果を実現し
ます。
[論理ブロック図]
[論理式]
y[n] = x[n] + α * y[n-d]
4.2.3
DEFINE定義
信号処理モジュールで定義されている define の中でユーザーが変更可能なものについて説
明します。
DEFINE 定義
説明
EFFECT_DISTORTION_GAIN_INIT_VAL
ディストーションのゲインの初期値。元の音声にこの値をか
け 10 で割った値が出力されます。設定可能な範囲は 10~
32767 です。
EFFECT_DISTORTION_RANGE_INIT_VAL
ディストーションのレンジの初期値。増幅した音声を歪ませ
る範囲を指定します。
設定可能な範囲は 0~32767 です。
EFFECT_FUZZ_GAIN_INIT_VAL
ファズのゲインの初期値。元の音声にこの値をかけ 10 で割
った値が出力されます。設定可能な範囲は 10~32767 です。
EFFECT_FUZZ_RANGE_INIT_VAL
ファズのレンジの初期値。増幅した音声を歪ませる範囲を指
定します。
設定可能な範囲は 0~32767 です。
EFFECT_ECHO_DELAY_INIT_VAL
ディレー間隔初期値。値を多くすることで音声が遅れる間隔
が広がります。
設定可能な範囲は 0~19 です。
SIGNAL_NORMAL_MODE
定義することでノーマルモードに切り替わります
SIGNAL_BPS
音声データのサンプリングレート。
設定値は 1000~10000(10Khz~100Khz)を想定しています。
39
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■イベント通知関数概要
下記が本タスクにイベントを通知する関数です。
SignalEvent_Set_StartSignal:アナログ信号取得、出力の開始を通知する関数
SignalEvent_Set_EndSignal:アナログ信号取得、出力の停止を通知する関数
SignalEvent_Change_Effect_Bank:エフェクトのタイプ(エコーやディストンシ
ョンなど)を切り替える関数
SignalEvent_Set_RECODE_PLAY:再生動作を通知する関数
SignalEvent_Set_RECODE_PLAY_3AXIS:加速度センサーより 再生動作を通知
する時の関数
SignalEvent_Set_RECODE_REC:録音動作 開始を 通知する関数
SignalEvent_Set_RECODE_REC_STOP:録音動作 停止を 通知する関数
4.3
ユーザーインターフェイスモジュール
LED の表示と SW 検出を行う処理モジュールです。LED の表示と SW 検出を 100msごと
に検出を行う。
■関連ファイル
<\demo\x_f_gab_demo\Switch_Task.c>
■SW 検出
SW2,SW3 の OFF/ON/ON 長押しを検出し、それそれを処理します。本ソフトウェアでは、
録音/再生デモの操作を実装しています。本 SW 検出で 下記の動作ステータスを処理してい
ます。
OFF:SW が押されていない状態です。
ON:OFF 状態から SW が押された状態です。
ON 長押し中:SW が長く押されている時間を計測している状態です。
ON 長押し確定:SW が長く押されたことを 確定した状態です。
ON 長押し中に OFF:SW が長く押されている時間を計測している状態で SW が OFF
になった状態です。
ON 長押し確定後 OFF:SW の長押しが確定した状態で SW を OFF にする状態です。
※長押し確定時間は、OFF 状態から SW が押された状態から、1~2 秒後としています。
■ 各 SW2/SW3 の機能
SW2 の機能
OFF ステータス:機能なし
ON ステータス:機能なし
ON 長押し確定ステータス:録音開始
ON 長押し確定後 OFF ステータス:録音停止
SW3 の機能
40
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
OFF ステータス:機能なし
ON ステータス:再生
ON 長押し確定ステータス:機能なし
ON 長押し確定後 OFF ステータス:機能なし
■LED 表示処理
各 LED(LED2/3)の点灯/点滅/消灯処理イベントを用意します。
また、LED2、LED 3 は消灯のとき、LED2 と 3 を交互に点灯する機能を実装しています。
点滅仕様は 500ms点灯、500ms消灯の繰り返しを実装しています。
■イベント通知関数概要
下記が本タスクにイベントを通知する関数です。
SwitchEvent_Set_LED1_OFF: LED2 の消灯イベント
SwitchEvent_Set_LED1_FLASH:LED2 の点滅イベント
SwitchEvent_Set_LED1_ON:LED2 の点灯イベント
SwitchEvent_Set_LED2_OFF:LED3 の消灯イベント
SwitchEvent_Set_LED2_FLASH:LED3 の点滅イベント
SwitchEvent_Set_LED2_ON:LED3 の点灯イベント
4.4
MFSモジュール
PCM メモリを MFS ファイルシステムと接続しており、MFS ファイルシステムへの保存、読
み出しの管理を行います。主に、録音/再生機能の ファイル、ファイルサイズの管理を行い
ます。記録するファイル名は、「voice.wav」です。
■関連ファイル
<\demo\x_f_gab_demo\mfs_Task.c>
■イベント通知関数概要
下記が本タスクにイベントを通知する関数です。
MfsControlEvent_Set_SetOpen:録音用 ファイル OPEN 要求
MfsControlEvent_Set_SetClose:録音用ファイルクローズ要求
MfsControlEvent_Set_SetSignalData:録音用 ファイル WRITE を通知する関数
MfsControlEvent_Set_GetOpen:再生用 ファイル OPEN 要求
MfsControlEvent_Set_GetClose:再生用 ファイル CLOSE 要求
MfsControlEvent_Set_GetSignalData:ファイル情報 読み出し関数
41
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
4.5
ソフトウェア設計仕様書
センサーモジュール
加速度センサー/温度センサーの ADC 値の取得および加速度センサの検地処理を行います。
以下の流れに沿って、処理を行っています。
1.
センサータスク起動後、
センサードライバへ 3 軸加速度センサーと温度センサーの ADC
チャンネルパラメータを登録します。
2.
200ms 毎に X, Y, Z 軸と温度センサーの ADC 値(12bit)を計測します。(ドライバに依存
します。)
3.
200ms 毎に各軸の ADC 値の変化量を計測します。
4.
各状態に応じた処理を行います。
5.
200msec 間タスクを Wait させます。
6.
200msec 経過したら、1)から処理を開始します。
本デモアプリケーションでは、センサドライバをクローズしません。
■関連ファイル
< \demo\x_f_gab_demo\Sensor_Task.c>
< \demo\x_f_gab_demo\Sensor_Task.h>
■ADC チャンネルパラメータ
本デモアプリケーションで、使用する ADC チャンネルのパラメータのリストは、下記のフ
ァイルに定義しています。
/demo/ x_f_gab_demo/ sensor_adc_list.c
センサータスク起動後にドライバへ登録する際に、このリストを使用しています。登録後、
すぐに ADC を計測するようにしています。計測する間隔は、200msec 毎となります。
各パラメータの詳細は、MQX I/O ドライバ ユーザーガイドの「Chapter 8 ADC Driver」を
参照ください。
http://www.freescale.com/files/32bit/doc/user_guide/MQXIOUG.pdf?fsrch=1
42
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■状態と状態遷移
センサでは、以下の状態を定義して、制御しています。
状態名
説明および処理
SENSOR_ST_INIT
初期状態
タスク起動後の初期処理のあとに必ず移行する状態。
加速度センサーの 3 軸の静止判定処理
・3 軸すべて静止していると NORMAL 状態へ移行します。
SENSOR_ST_NORMAL
ある条件(変化量が一定以上の場合など)により、信号処理へイベントを
通知します。
信号処理へイベントを通知したら、WAIT 状態へ移行します。
図 1 センサーモジュール 状態遷移図
信号処理
SENSOR_ST_N
SENSOR_S
モジュールへイベント通知
T_WAIT
ORMAL
T_INIT
SENSOR_S
NORMAL
500msec 経過
■3 軸加速度センサの軸の移動検出の仕組み
ADC の計測間隔は、200msec のため 200msec 毎に ADC 取得を試みます。
1.
200ms 毎の各軸の ADC の変化量から 一番大きい変化量がある軸を選択
2.
1.の軸の変化量がある一定以上の場合、信号処理モジュールへイベントを通知します。
■Define 定義
センサモジュール内で定義している中でユーザーが変更可能なものについて説明します
定義名
説明
SENSOR_ENABLE_EASY_DEMO
簡易デモ用オプション
コメントアウトをはずすと、どれかの軸の移動量
がある一定以上を超えた場合に、信号処理モジュ
ールへのイベントを通知するようになります。
その他の定義については、
/demo/ x_f_gab_demo/ Sensor_Task.c
/demo/ x_f_gab_demo/ Sensor_Task.h
を参照ください。
43
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
4.6
ソフトウェア設計仕様書
シェル・モジュール
コマンドは、ファイルシステム用コマンドと デバッグ用コマンドを搭載します。
■関連ファイル
< \demo\x_f_gab_demo\NIKE_demo_Shell_Commands.h>
< \demo\x_f_gab_demo\NIKE_demo_Shell_Commands.c>
< \demo\x_f_gab_demo\Command_Lists.c >
< \demo\x_f_gab_demo\sensor_Shell_Commands.c>
< \demo\x_f_gab_demo\Signal_Shell_Commands.c>
■デバッグコマンド一覧
コマン
コマンド書式
機能内容
関数
db<SP>[アドレス]<CR>
メモリダンプ機能(8bit
Shell_mem_dump_byte
ド名
db
データ)
dw
dw<SP>[アドレス]<CR>
メモリダンプ機能(16bit
Shell_mem_dump_word
データ)
dd
dd<SP>[アドレス]<CR>
メモリダンプ機能(32bit
Shell_mem_dump_dword
データ)
rb
rb <SP>[アドレス]<CR>
メモリ READ 機能(8bit
Shell_mem_read_byte
データ)
rw
rw <SP>[アドレス]<CR>
メモリ READ 機能(16bit
Shell_mem_read_word
データ)
rd
rd <SP>[アドレス]<CR>
メモリ READ 機能(32bit
Shell_mem_read_dword
データ)
wb
ww
wd
pdb
wb <SP>[アドレス]<SP>[デー
メモリ WRITE 機能(8bit
タ]<CR>
データ)
ww <SP>[アドレス]<SP>[デー
メモリ WRITE 機能(16bit
タ]<CR>
データ)
wd <SP>[アドレス]<SP>[デー
メモリ WRITE 機能(32bit
タ]<CR>
データ)
pdb<SP>[アドレス]<CR>
PCM メ モ リ ダ ン プ 機 能
Shell_mem_write_byte
Shell_mem_write_word
Shell_mem_write_dword
Shell_PCM_mem_read_dump
(8bit データ)
pwr
pse
pwr<SP>[ ア ド レ ス ]<SP>[ デ ー
PCM メモリ WRITE 機能
タ]<CR>
(8bit データ)
pse <SP>[アドレス]<CR>
PCM メモリ セクタ消去
Shell_PCM_baw_write
Shell_PCM_sec_erase
機能
44
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
備考
ニケ・ボード
ソフトウェア設計仕様書
※<SP>は、スペース、< CR >は。キャリッジ・リターンを示します。
■ファイルシステム一覧
下記が 今回実装する予定のファイルシステムコマンドです。MS-DOS のコマンドと互換が
あります。
コマン
コマンド書式
機能内容
関数
cd<SP>〔directory〕<CR>
現在のディレクトリを表示した
Shell_cd
備考
ド名
cd
り, 変更
copy
copy<SP>〔source〕<SP>〔dest〕<CR>
ファイルのコピー
Shell_copy
dir
dir<SP>〔filespec〕<SP>〔attr〕<CR>
ディレクトリ中のファイルとサ
Shell_dir
ブディレクトリを一覧表示
format
format<SP>〔drive:〕<SP>〔volume
ディスクの初期化
Shell_format
label〕<CR>
mkdir
mkdir<SP>〔directory〕<CR>
ディレクトリを作成
Shell_mkdir
rmdir
rmdir<SP>〔directory〕<CR>
ディレクトリを削除
Shell_rmdir
del
del<SP>〔file〕<CR>
ファイル(複数可)を削除
Shell_del
※<SP>は、スペース、< CR >は。キャリッジ・リターンを示します。
■その他
コ マ
コマンド書式
機能内容
関数
help
help<SP>〔command〕<CR>
コマンド書式リスト
Shell_help
?
? <CR>
コマンドリスト
Shell_command_list
ン ド
名
※<SP>は、スペース、< CR >は。キャリッジ・リターンを示します。
4.7
その他
簡易 DSP 機能のデモ用に LPF/HPF の関数を実装しています。
45
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
備考
ニケ・ボード
ソフトウェア設計仕様書
5 フォルダー構成説明
[nike_fot MQX 3.3]
|
+---<config>
:ニケ・プロジェクト プラットフォーム用 プロジェクトファイル
+-+-<demo>
:ニケ・プロジェクト アプリケーション プロジェクトファイル一式(デモ用)
+---<lib>
:共有ヘッダー/MQX オブジェクトファイル
+---<mfs>
:MQX ミドルウエア ファイルシステム 一式
+-+-<mpx>
:BSP/PSP プログラム ソースファイル
+---<rtcs>
:MQX ミドルウエア RTCS プログラムファイル
+---<shell>
:MQX ミドルウエア SHELL プログラムファイル
+---<usb>
:MQX ミドルウエア SHELL プログラムファイル
5.1
フォルダ構成説明
5.1.1
ニケ・プロジェクト プラットフォーム用 プロジェクトファイル
開発プラットフォーム用 CodeWarrior プロジェクトファイルは、
<\config\common\nike_ADI_mcf52259\build_libs.mcp>にあります。
開発プラットフォームとは、アプリケーション以外の下記のモジュールを示します。
BSP
PSP
RTCS スタック
MFS ファイルシステムスタック
SHELL モジュール
USB スタック
また、各モジュールの CodeWarrior プロジェクトファイルは、下記のあります。
■BSP
BSP の CodeWarrior プロジェクトファイルは、
<\mqx\build\codewarrior\bsp_nike_mcf52259.mcp>にあります。
■PSP
PSP の CodeWarrior プロジェクトファイルは、
<\mqx\build\codewarrior\psp_nike_mcf52259.mcp>にあります。
46
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■MFS ファイルシステムスタック
MFS ファイルシステムスタックの CodeWarrior プロジェクトファイルは、下記のフォルダ
にあります。
<\mfs\build\codewarrior\mfs_nike_mcf52259.mcp>
■RTCS スタック
<\rtcs\build\codewarrior\rtcs_nike_mcf52259.mcp>
■SHELL モジュール
<\shell\build\codewarrior\shell_nike_mcf52259.mcp>
■USB スタック
<\usb\device\build\codewarrior\usb_ddk_nike_mcf52259.mcp>
<\usb\host\build\codewarrior\usb_hdk_nike_mcf52259.mcp>
5.1.2
ニケ・プロジェクト アプリケーション用 プロジェクトファイル
<\demo\x_f_gab_demo\codewarrior\x_f_gab_ADI_mcf52259.mcp>
5.2
ソースファイルの場所について
■アプリケーション ソースファイル
<\demo\x_f_gab_demo>
<\demo\x_f_gab_demo\dsp_library>
■ニケボード用 専用ドライバについて
外部 ADC/DAC ドライバ ソースファイルは、<\mpx\source\io\ADI>にあります。
センサ ドライバ ソースファイルは、<\mpx\source\io\sensor>にあります。
そして、初期起動時のファイルは、<\mpx\source\bsp\m52259demo>にあります。
■BSP/PSP ソースプログラムファイル
<\mqx\source>
■MFS ファイルシステムスタック ソースプログラムファイル
<\mfs\source>
■RTCS スタック ソースプログラムファイル
<\rtcs\source>
47
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
ニケ・ボード
ソフトウェア設計仕様書
■SHELL モジュール ソースプログラムファイル
<\shell\source>
■USB スタック ソースプログラムファイル
<\usb\device\source>
<\usb\host\source>
48
アヴネット・ジャパン株式会社 テクニカル・マーケティング部
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します