ニケ・ボード ソフトウェア設計仕様書 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 単一電源 動作温度範囲: -40C~+85C パッケージ: 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 アヴネット・ジャパン株式会社 テクニカル・マーケティング部 本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
© Copyright 2024 Paperzz