SlideShare a Scribd company logo
MBEDへのオーディオ・フレームワークの実
装
堀江誠一
オーディオフレームワークを実装すると
誰が喜ぶか
今日のお話
 MBEDとは何か
 インターフェース考察
 フレームワークの設計
MBEDとは何か
簡単な紹介
 元はARM社内のプロジェク
ト
 開発リソースを全部クラウ
ド化する
 ゼロ・インストール
 ターゲットはUSB接続
 歴史
 1.0で人気に火が付く
 2.0でソース公開、マルチプ
ラットホーム化
 3.0でARMが2.0を見捨てる
 3.0の開発が難航、5.0が発表
される
 2.0復活
クラウド
ストレージ&
コンパイラ
MBED IDE
利点
 ゼロ・インストール
 よくあるペリフェラルに
対応
 直感的なAPI
 ほとんど同じAPIのまま
RTOSに移行できる
 MBED-RTOS
 IDEにバージョン管理シ
ステムが組み込まれてい
る
SPI
Async
Serial
I2C
GPIO
ADC
DAC File
MBED-SDK
Application
直感的なピン指定
 GPIOのAPI指定がピン番
号になっている。
 データシートをひっくり
返す必要がない。
MBED LPC1768
欠点
 ペリフェラルAPIがポーリング方式
 割り込みが全く考慮されていない
 APIの解説に踏み込みが足りない
ARMの無関心
 個人コミュニティに人気があるのはMBED2.0
 ARMはMBED2.0に対する関心が薄い
 MBED3.0 (MBED OS)でIoT向け産業用OSを目指した。
 MBED 2.0とは非互換
 結局、MBED2.0を捨てられず、5.0を発表した
 2.0 + 3.0 = 5.0
統制の甘さ
NUCLEO F746
!!!!
MBEDとは何か
 特徴をまとめる
 メンテがずさんで全貌を把握しにくい
 屋上、屋をかさねる拡張
 持ち主の熱意が薄れている
 古くさいが、使いやすいインフラ
 つまり、どういうことだってばよ?
これ、
廃墟じゃないの?
MBEDをどう使うか
持ち主の熱意
が薄れている
古くさいが、
使いやすいイ
ンフラ
秘密基地
に
ぴったり
インターフェース・レイヤーについ
て
誰に従い、何を押しつけるか
 インターフェースとは約
束
 上と下、双方が守る
 インターフェースが従う
約束もある
マイコン
デバイス・ドライバ
ミドルウェア
アプリケーション
Hardware
HAL
API
上が約束を守るメリット
 約束を守るとは、イン
ターフェースを利用する
こと
 インターフェースを使う
ことで、それより下の層
の構造を意識しなくて良
くなる
 抽象化
 逆に抽象化を提供しない
インターフェースを使う
意味はほとんど無い
インターフェース
インターフェースの
提供者
インターフェースの
利用者
下が約束を守るメリット
 約束を守るとは、イン
ターフェースを変えない
こと
 インターフェースを固定
することで、改良を自由
に行うことができる
 リファクタリング
 異なる実装であっても、
インターフェースを統一
しておけば、既存のアプ
リに利用してもらえる
 ポータビリティ
インターフェース
インターフェースの
提供者
インターフェースの
利用者
API
 ユーザーはアプリケーション
 APIはアプリケーションに対してアルゴリズムを隠す
 アルゴリズムはAPIに従うことで、ポータビリティを
確保できる
 例:
 ファイルシステムAPI
 ファイル・システムの種類を隠しきっている
 新しいファイル・システムを実装しても、ユーザー・プ
ログラムは変えなくてよい
HAL
 ユーザーはアルゴリズム
 HALはアルゴリズムに対してハードウェアを隠す
 ハードウェアはHALに従うことで、ポータビリティを
確保する
 例:
 ストレージ・デバイス・ドライバ
 ストレージ・デバイスを取り替えても、ファイル・シス
テム・アルゴリズムを変えなくて良い
インターフェースが従うこともある
 「隣」のインターフェー
スとあまりに異なったイ
ンターフェースを実装す
ると、ユーザーが混乱す
る
 Read ⇔ Receive
 ライブラリ⇔クラス
シリアル
SPI
I2C
EthernetMAC
「雲仙」
オーディオ・フレームワークの設計
目標
 ユーザーが使いやすいこ
と
 mbedをOSとして、異
なるMPUで動作すること
 mbed SDK 2.0, mbedRTOS
2.0で動作すること
 複数のサンプルレートに
対応すること
Unzen API
 mbed の作法に従い、Classとして実装する
 Doxygen文書
 Mbedサイトに文書とサンプルをアップロード
 DataOutなどのmbed APIと同じ作法で使える
 Singletonはやめた
 ユーザー初期投資の低減
『雲仙』フレームワークが提供するもの
 APIとHALの二層を提供し
て、オーディオ制御を
ユーザーから隠す。
 ユーザーにはオーディオ
信号処理の利用インター
フェースを提供する
mbed SDK / RTOS
デバイス制御
割り込み番号
ダブル・バッファ
割り込みハンドラ
アプリケーション
Hardware
Unzen HAL
Unzen API
『雲仙』フレームワークの各API
 Unzen API
 mbed作法
 オーディオ・処理のス
タート
 デバッグ・フック
 ダブルバッファの遮蔽
 Unzen HAL
 ハードウェアの抽象化
 LPC4337
 LPC4088
 STM32F746
mbed SDK / RTOS
アプリケーション
Hardware
Unzen HAL
Unzen API
デバイス制御
割り込み番号
ダブル・バッファ
割り込みハンドラ
MBEDプログラマから見た雲仙
 Block Size = 1, 2, 3…
 Fsに縛られない
 信号処理コールバック
 デバッグ用コールバック
 mbedの作法に従い、フ
レームワークをクラス化
 信号処理は割り込みコン
テキストで行う
 バックグラウンド
 メイン関数では通常の
mbed SDKを利用できる
MBEDプログラマから見た雲仙
 雲仙は信号の流れだけに
対応する
 オーディオ・コーデック
の制御は島原に任せてい
る
 I2Cチャンネル
 サンプル・レート
 ゲイン
島原雲仙
SoC マイコン
I2S I2C
制御の流れ ( blocksize = 1 )
main()
process_irq()
i2s_irq()
i2s_irq()一回毎にprocess_irq()をトリガ
制御の流れ ( blocksize = 3 )
main()
process_irq()
i2s_irq()
ブロックサイズ分貯まったらprocess_irq()
HAL
 HALのほうが面倒くさい
 どいつもこいつも好き勝
手なハード作りしやがっ
て
 mbed SDKに依存してい
る
 IRQ関連
 mbedは割り込み関係の
サポートが無いので、や
や苦心した。
使い方:コールバックの定義
 二つのコールバックを定
義する
 アルゴリズム初期化
 信号処理アルゴリズム
 関数の名前はご自由に
使い方:
 島原コーデック・ドラ
イバのインスタンスを
作る
 Fsを指定
 雲仙オーディオ・フ
レームワークのインス
タンスを作る
 コーデック・スタート
 オーディオ・スタート
 あとはmbedアプリと
同じ
まとめと今後の目標
まとめ
 Mbed SDK上で動作する
オーディオ・フレーム
ワークを開発した
 Mbed作法に従った造り
 複数のSoCマイコンに対
応
 柔軟なブロック・サイズ
 複数のオーディオCODEC
に対応可能
 ドキュメント完備
 https://developer.mbed.org
/users/shorie/notebook/un
zen_audio_framework/
今後の目標
 ホストマイコンやホスト
PCからシリアル経由で操
作できるようにしたい。
 実物のボリュームを並べ
るのが面倒
 Python
 Qt
 JASON
 いろいろ勉強する口実に
なる
ご静聴ありがとうございました
と、書くと不機嫌になる方がいらっしゃるそ
うです

More Related Content

PDF
ネットワーク構築訓練 入門
PDF
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
PPTX
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
PPTX
IoTハンズオン
PDF
IoTハンズオン資料(おうちハック)配布用
PDF
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
PDF
CML-Personal (VIRL2)のインストールと基本機能
ネットワーク構築訓練 入門
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
IoTハンズオン
IoTハンズオン資料(おうちハック)配布用
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
CML-Personal (VIRL2)のインストールと基本機能

What's hot (20)

PDF
Node-RED勉強会(20160826)追補
PDF
#RouterBOARD 勉強会 OSPF検証班 appendix1.1
PDF
IOS/IOS-XE 運用管理機能アップデート
PDF
あいぽん落としたと聞いたので!
PDF
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
PPTX
組込みAndroid入門実習
PPTX
July techfesta2014 f30
PPTX
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
PPTX
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
PDF
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
PDF
【Interop Tokyo 2016】 キャンパス LAN の作り方 2016
PPT
Android™組込み開発基礎コース BeagleBoard編
PDF
iMulvery -Mulveryの新機能のご紹介-
PPTX
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
PDF
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
PDF
NHNグループ合同勉強会 ライブドア片野
PPT
IBM SoftLayer @ Osc tokyo-2014-fall
PDF
第39回「Windows Server 2003 EOSに備えよう -SQL Serverはどうする?-」(2014/12/18 on しすなま!)
PDF
【Interop Tokyo 2016】 SDN/Cloud 仮想環境に、この二つさえあれば、他のファイアウォールはもういらない!
PDF
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Node-RED勉強会(20160826)追補
#RouterBOARD 勉強会 OSPF検証班 appendix1.1
IOS/IOS-XE 運用管理機能アップデート
あいぽん落としたと聞いたので!
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
組込みAndroid入門実習
July techfesta2014 f30
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
【Interop Tokyo 2016】 キャンパス LAN の作り方 2016
Android™組込み開発基礎コース BeagleBoard編
iMulvery -Mulveryの新機能のご紹介-
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
NHNグループ合同勉強会 ライブドア片野
IBM SoftLayer @ Osc tokyo-2014-fall
第39回「Windows Server 2003 EOSに備えよう -SQL Serverはどうする?-」(2014/12/18 on しすなま!)
【Interop Tokyo 2016】 SDN/Cloud 仮想環境に、この二つさえあれば、他のファイアウォールはもういらない!
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Ad

Similar to MBEDへのオーディオフレームワークの実装 (20)

PDF
組込エンジニアにも役立つ!Node-RED活用術(for Node-RED Con. Osaka)
PDF
2014 0228 OSC-Spring Tokyo NETMF
PDF
Hyper-V エンタープライズ設計の現実解:2015 年版
PDF
Microsoft Intelligent Edge Technologies
PPTX
2014 1018 OSC-Fall Tokyo NETMF
PDF
20160924 mbed elementary Workshop
PPTX
Raspberry piと.net coreのstandardな関係
ODP
Debian emdebian 20100817
PPTX
これから始める Windows io t core
PPTX
Node-RED v1.3新機能紹介
PPTX
SORACOM LoRaWAN Conference 2017 | LoRaゲートウェイとデバイス 〜デバイス開発と、無線連携〜
PDF
【Interop Tokyo 2016】 エコシステムですすめる レノボのSDIソリューション
PDF
.NET Micro Framework の基礎
PDF
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
PDF
Prd008 日本初!“windows 10_team”_os_
PDF
2013 1019osc-fallnetmf
PDF
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
PPTX
2015 0227 OSC-Spring Tokyo NETMF
PDF
止めないためのWEBインフラ入門
PDF
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
組込エンジニアにも役立つ!Node-RED活用術(for Node-RED Con. Osaka)
2014 0228 OSC-Spring Tokyo NETMF
Hyper-V エンタープライズ設計の現実解:2015 年版
Microsoft Intelligent Edge Technologies
2014 1018 OSC-Fall Tokyo NETMF
20160924 mbed elementary Workshop
Raspberry piと.net coreのstandardな関係
Debian emdebian 20100817
これから始める Windows io t core
Node-RED v1.3新機能紹介
SORACOM LoRaWAN Conference 2017 | LoRaゲートウェイとデバイス 〜デバイス開発と、無線連携〜
【Interop Tokyo 2016】 エコシステムですすめる レノボのSDIソリューション
.NET Micro Framework の基礎
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
Prd008 日本初!“windows 10_team”_os_
2013 1019osc-fallnetmf
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
2015 0227 OSC-Spring Tokyo NETMF
止めないためのWEBインフラ入門
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
Ad

MBEDへのオーディオフレームワークの実装