2016年03月22日

WAVE/PCM再生: Arduino: AVRで8bit PWM音楽再生 2016

WAVE/PCM再生: Arduino: AVRで8bit PWM音楽再生 2016
* はじまり
* ChaNさんのFatFs
* プチ音の消去
* Arduino NanoでSDカード,5V:3.3Vレベル変換接続
    抵抗でレベル変換 バツ:
    ダイオードでレベル変換 ○△:
    残念ながら:
* 動作可能ボード
* Arduino Wave PWM Player Lite版 仕様
    概要:
WAVファイル仕様:
    機能:
* SDカードの速度問題
    44.1KHz(以下)/8bitに変換する:
* SDカード速度測定機能
    使い方:
* SDカード シールド対応
* 実体配線図
    出力の高域カットフィルタ:
    Arduino(ATmega328p with 16MHz crystal) UNO/Nano/etc. :

* Download v1.3 (2016/04)
    書き込み方:
* 動作確認

* avr-gccのバージョン
* Petit(ぷち) FatFs

* その他のWave player
    TMRpcm
    SimpleSDAudio

* はじまり
AE-ATmega/AVR: 8bit PWMの音 / PCM/WAVE再生
から3年。
47秒周期くらいのクラスタ境界で「プチ音」がするために見捨てられていたのを復活させてみた。

* ChaNさんのFatFs
http://elm-chan.org/fsw/ff/00index_j.html
前回は
R0.09b    (C)ChaN, 2013 を使っていて,今回は
R0.11a    (C)ChaN, 2015 という最新版を使ってみた。
disk_read()関係がかなり高速化されている様でビックリしました。
ATmega328p 16MHz でSDカードのリードテストしたら 720KB/sec 出てた。(OoO)/
古い版だと"512バイト読み出し直前の準備期間"が固定長で結構時間がかかっていて,
低速でSRAMが少ないマイコンの場合,速度のボトルネックになっていたが,その部分が消失していた。
これは良い。

* プチ音の消去
でもプチ音に変化なし。orz
で,
ChaNさんのFatFs:AVR用のサンプル(ATmega64)をなんとかATmega328pに移植して音を聞いてみると,
(ChaNさんのサンプルもWAVE再生可能)
なんとプチ音なしだった。orz (オイ
ChaNさんのプログラムをいろいろ調べたところ :D
バッファーアンダーフローが起きた時に"前回のデータを出す"という部分があって
それのおかげでプチ音が消失しているのが分かった。
ちなみに,
移植ミスも否定できないけど,ChaNさんのは
約3msec周期で300usecの期間バッファーアンダーフローが起きていて,
この周期で約15回づづ前回と同じデータを出していたのだった。(OoO)
バッファーアンダーフローの対処がないとノイズだらけになるハズなんだけど。。。 
恐るべし,人間の耳 xD
今回はサンプルコードの解析が目的ではないので :D
そのうち調査してみるか。。。

で,
自分の方は47秒に一回程度なんだけど,上記バッファーアンダーフローに対応することで,
ようやくプチ音が消去できました。
(^^)/ (^^)/

「ごまかした」とも言う。(^^;
この部分はマイコンクロックを20MHzに上げればクリア可能と思われます。

* Arduino NanoでSDカード,5V:3.3Vレベル変換接続
前回は秋月のArduino Duemilanove互換ボード(AE-ATmega)を3.3V改造したものを使ったけど,
http://mpu.seesaa.net/article/399685555.html
今回は一般的な「Arduino Nano互換ボード」:D につないでみた。
従って,
SDカードをつなぐためには5V(Arduino側)と3.3V(SDカード側)のレベル変換が必要です。
参考:
しなぷすさんのハード制作記のページ
3-6.5VのArduinoと接続する方法
http://www3.big.or.jp/~schaft/hardware/hard/MGLCD_AQM1248A/page004.html

抵抗でレベル変換 バツ:
    ググると1.8KΩ:3.3KΩくらいでレベル変換しているのがあったのでやってみたけど,
    再生中に頻繁にリードエラーが起きて全然ダメでした。
    ブレッドボードだからアレなのはアレなんだけど xD
    orz
    SPIクロック8MHzなのでもっと速度を落とせばひょっとしたらそれなりの用途には使用可能
    かもしれないけど,波形を観測すると,とても使う気にはなれない。orz
    さらにググると抵抗値を下げている人がいて結構きれいな波形だったが,
    電流がものすごいことになっているので今回は未実験。
ダイオードでレベル変換 ○△:
    さらにググると, (オイ
    ダイオードでやっている人がいてこっちの方がよさそうだったので試してみたら,
    抵抗変換よりだいぶマシだった。
    というか今回の用途には問題なく使えた。(^^)/
    波形を見ると立ち上がりが悲惨な感じだけど,立ち下がりは問題なさそうな感じだった。
    電流も少なくて済むのでこれを採用しました。
    簡単だし,ダイオードは部品箱にあるのだった。
残念ながら:
    上のダイオード方式も手持ちのSDカードを全部試してみると
    一部のものはリードエラーが出て使えなかったので万能ではない模様。
    ちゃんとしたレベル変換を付けるのがベストなのは間違いなさそう。:D
    と,いうことでこの手の簡易型のレベル変換は高速クロックでは信頼度が
    低いことが分かりました。

* 動作可能ボード
マイコンがATmega328p,動作クロックが16MHzの互換ボード,
Arduino: UNO, Duemilanove, Nano, Mini, Pro 及び "素のATmega328pマイコン+16MHz水晶発振子"
等々でHEXファイルを書くだけで動作します。
(注) 素のATmega328pの場合,Fuseに適切に書き込む必要あり

* Arduino Wave PWM Player Lite版 仕様
概要:
Lite版なので曲の選択機能はありません。(^^;
電源ONか,SDカードが差し替えられると以下の順でフォルダを探して,
/music
/wav
/    (ルートフォルダ)
最初に見つかったフォルダ内のWAVファイルを順に再生して無限ループします。
次の曲には飛ばせるけど,前の曲には戻れません。(^^; (注1)
SDカード挿抜とかは見ていないので,電源ONのままmicroSDカードの抜き差しは非推奨ですが,
自分は自己責任でやってたりします。:D
WAVファイル仕様:
    foobar2000又はSoXでWAVファイルに変換されたものをターゲットにしています。
    これ以外で変換されたファイルは未確認です。
        PCM: 8bit / 16bit 
        Stereo/Mono
        fs(サンプリング周波数): 48KHz以下。
        こちらで確認したのはfs=8KHz,32KHz,44.1KHz,48KHzのWAV(8bit/16bit)ファイルですが、
        最低でもfs=22.05KHz以上で使用することを強く推奨します。
        通常は最も音質が良いfs=44.1KHzを推奨します。

機能:
    [パソコン上のUARTターミナル(TeraTerm等)から操作]
         次の曲に飛ばす :  [N], [ ](スペースキー)   
         再生ポーズ/解除:  [S], [P], [ESC](エスケープキー) 
                     一度押すとポーズし,画面に「P」マークが表示されます。
                     もう一度押すとマークが消えて再生再開します。
         曲の先頭に戻す:   [F]キー
                     再生中にこのキーを押すと,その曲の先頭に戻って再生を開始します。
         早送り(FF)/巻き戻し(Rewind): FF: ]キー Rewind: [キー 
                     再生音を出しながらFF/Rewindします。
                     最後までFFすると次の曲に行ってしまいます。(^^;
         音量ボリューム:  Up:[+ or .(ピリオド)], Down:[- or ,(カンマ)]キー で音量Up/Downします。
                     32ステップです。
         可変速再生: Speed Up:[U], Speed Down:[D], Speed Normal:[0]
                        高速側はあまりSpeed Upしません。
    [外部の押しボタンSWで操作]
        (1) 次の曲に飛ばす:  SWを一回クリック。(離した(0.5秒以内)タイミングで次の曲に飛びます)
        (2) 再生ポーズ/解除: SWを1秒以上押し続けると再生ポーズします。
                         手を離してSWをもう一回クリックするとポーズ解除されます。

* SDカードの速度問題
16ビット/44.1KHz/Stereoのファイルを再生するには, そこそこ高速なSDカードが必要になります。
手元に高速なSDカードがない場合以下の対応方法があります。
44.1KHz(以下)/8bitに変換する:
マイコンのPWM出力は8ビットの分解能しか使わないので,foobar2000で
44.1KHz(以下)/8bitにWAVファイルをコンバートしたものにすれば
低速なSDカードでもOKになる可能性大です。
今回の場合,8bitに落としても音質は変わりません。(^^;

* SDカード速度測定機能
SDカードのリード速度を計測する機能を付けました。
これでSDカード速度の絶対評価が可能になります。
使い方:
    音楽の再生中(or ポーズ中)に「t」キーを押すとリードテストがはじまります。
以下のようにリード速度が表示されます。
 [PCM]  S321601.WAV 32000Hz 16bit Stereo 26115412 Byte
  -----+-----+-----+---
  *****************
 [Read]: Testing 512 byte buffer: read performance...
 Done!
        Result: 314 KB/s

  [PCM]  S441601.WAV 44100Hz 16bit Stereo 66767804 Byte
  -----+-----+-----+-----+-----#-----+--
  *****
手持ちのSDカードのなかで,44.1KHz/16bitの読み出しで問題なく使えたSDカード。
リード速度 SDカード
332KB/sec Transcend 2G FAT SD @?
303KB/sec SanDisk 16G FAT32 UHS-I @6
302KB/sec Victor 4G FAT32 SDHC @4
294KB/sec Good-J 16G FAT32 SDHC @10
266KB/sec BUFFALO 16G FAT32 SDHC @4
(22.3usecの割り込みがガシガシ入った状態で速度計測しています) 44.1KHz(以下)/8bitデータならもっと遅くても大丈夫だと思います。 * SDカード シールド対応 以下のSparkFunとSeedStudioのSDカードシールドに対応。 チップセレクトが違うだけなので二つのチップセレクト端子を同時にパタパタさせてます。 持ってるわけでないので本当に動くかどうかは未実験。 SparkFun microSD Shield https://www.sparkfun.com/products/12761 SD Card shield V4.0 http://akizukidenshi.com/catalog/g/gM-09696/ http://www.seeedstudio.com/wiki/SD_Card_shield_V4.0 * 実体配線図 電源: Arduino Nanoの場合,3.3Vは外部から供給する必要があります。 3.3VはSDカード用なので100mA以上を供給可能なものが必要と思われます。 ダイオード: ダイオードは部品箱にありがちな適当なのでOKです。(オイ 一本1円で十分かと。 http://akizukidenshi.com/catalog/g/gI-07783/ ショットキ・バリア・ダイオード(SBD)でも大丈夫です。高いけど。 出力の高域カットフィルタ: この実体配線図はPC(パソコン)のAudio入力端子との接続を想定しているので省略してありますが, 一般のアナログアンプに接続するなら,以下のページの出力ローパスフィルタを入れた方が 良いです。(或いはもっとマシなフィルタ:-) http://mpu.seesaa.net/article/432426722.html
arduino-nano-wave-pwm-player.png
注意ポイント: 当然のことながら,SDカードは壊れてもおしくないものを使って下さい。 うちは2枚ほどダメになりました。(お〜〜〜い (爆 orz Arduino(ATmega328p with 16MHz crystal) UNO/Nano/etc. : 使用端子のメモ。pin番号は28pin DIPのもの。
  [ PWM ] 
         OC1A: PB1, 15pin, D9   : Audio Left
         OC1B: PB2, 16pin, D10  : Audio Right
  [ SPI ]      <Arduino>               <SD Card>
         MOSI: PB3, 17pin, D11         DI,  2pin
         MISO: PB4, 18pin, D12         DO,  7pin 
         SCK : PB5, 19pin, D13         CLK, 5pin
         CS  : PD4,  6pin, D4          CS,  1pin
         or
         CS  : PB0, 14pin, D8          CD,  1pin
  [ Button SW port ] 
         SW  :PD2(INT0),  4pin, D2, Active low
* Download arduino_wave_player_lite_atmega328p_v1.3-201604.zip v1.3: (1) FF/Rewindがリファクタでバグってしまっていたのを修正。orz (2) バージョン表示を追加。 (3) 再生中の曲の最初に戻る[F]キーを追加。 v1.2: 最初の版 arduino_wave_player_lite_atmega328p-v1.2-201603.zip 書き込み方: 解凍して出てきた arduino_wave_player_lite_atmega328p_38400bps.hex というファイルをこのツール http://mpu.seesaa.net/article/399685603.html にドラッグ・ドロップして 書き込みます。 * 動作確認 /musicフォルダにWAVファイル(fs=32KHz以上推奨(注2))を入れたSDカードを差し込んで 電源を入れると,基板上のLED(TX)がチカチカします。 十秒以内くらいでこのチカチカが停止すれば,既に音楽再生が開始されています。 TeraTermを38400bpsの設定で開けば操作可能です。 圧電素子や100円スピーカをつなげば音声確認できるかと思います。(こちらでは未確認) * avr-gccのバージョン arduino-1.6.8に付属の gcc version 4.8.1 (GCC) を使用。 これより前の版は使わない方がよい。 後の版なら大丈夫と思われるが,あまりチェックしていない。 というか,大勢のユーザが使用しているarduino版がひとまず安心。 * Petit(ぷち) FatFs コンパイル・オプションでPetit・FatFs(以下 PFatFs)を使ってコンパイルできます。 動作はコンパチブル。 問題: 音が「ブヨブヨ」でちょっと使えません。 :D バッファーアンダーフローの対策がなければ,「ブチブチ。。。」という感じに なります。 原因: 最初期から変わっていない気がする。 FatFsよりもSDカードの読み込み速度が遅いと思って上記の「SDカード速度計測機能」で 比較するとほとんど同じ値を出していた。 フラグメント問題かもしれないが詳細未調査。 * その他のWave player TMRpcm Arduinoのスケッチタイプの以下のWAV・PWMプレイヤーがある様です。 標準でfs:32KHz mono。 拡張でもう少しアップするみたいだけど詳細不明。 TMRpcm https://github.com/TMRh20/TMRpcm/wiki Youtube動画 https://www.youtube.com/watch?v=LbqPgJe3Qd4 TMRpcm/Arduinoのフォーラム https://forum.arduino.cc/index.php?topic=179027.0 SimpleSDAudio これもスケッチタイプ http://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio * 参考 Arduinoシリーズ15種類の違い | まとめ比較表 http://ideahack.me/article/134 (注1) いろいろやればできそうなんだけど,この手の機能はキリがないので Lite版仕様ということにしました。今のところ。 (注2) サンプリング周波数(fs)が低すぎる場合,ちゃんとしたフィルタを入れないと PWMノイズと折り返しノイズ、(キーーン!)で耳が痛いです。xD
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | PCM/WAVE | このブログの読者になる | 更新情報をチェックする

2016年03月02日

Vim: きょ驚愕のSpacemacs !? 2016

以前 Emacs+Evilを発見したが,さらに強力にVimっぽくなったのが
Spacemacsの様だ。

調査中。

以下の方のページを参考にインストールしてみたが,最後のHelmの自動設定の当たりでインストールエラーが出て,「このままだとダメっぽい」というメッセージが出てしまった。
orz
Vimも秘伝のタレも飲み込むEmacsの超強力ディストリビューションSpacemacsまとめ
http://qiita.com/ryosukes/items/d0ec5094a9d3d636f7bb
Windows10, Emacs 23.x 。
一応,Spacemacsは起動したのでちょっと使ってみる。
以下 調査中。
Linuxで試したほうが良いのかも。
orz
プログラマーズ雑記帳さんのページ
Emacs (24.5 以上) の Windows へのインストール
http://yohshiy.blog.fc2.com/blog-entry-295.html
を参考に,
http://ftp.gnu.org/pub/gnu/emacs/windows/
からEmacs24.5をインストールしたらエラーはなくなった。
但し,日本語入力がATOKなんだけど,入力中のインライン表示ができない。
orz
orz
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | Vim | このブログの読者になる | 更新情報をチェックする

2016年02月26日

Arduino/Genuino 101 の追加メモ 2016/02

Arduino/Genuino 101 の追加メモ 2016/02
前回,コンパイルができないと書いていたが,
つい最近Genuino101(=Arduino101)のコンパイラとライブラリのダウンロードができたので
コンパイルだけやってみた時のメモ。
使用OSはWindows10。

* ダウンロードと設定
(1) Arduino1.6.7をダウンロード
    https://www.arduino.cc/en/Main/Software
    適当に解凍する。
(2) arduino.exeでIDEを起動,
(3) 「ツール」-「マイコンボード」で「ボードマネージャ」で「Intel Curie Boards by Intel version」を
    探して「More info」をクリックでインストールする。
(4) 「ツール」-「マイコンボード」で 「Arduino 101」を選択して適当にBlink.ino等をコンパイルする。

* コンパイル結果ファイル群を得る
(1) AruinoIDEを終了します。これ大事。
(2) 以下の一行をエクプローラのアドレスバーにコピペしてエンターキーを押すと,
    %UserProfile%\AppData\Local\Arduino15\preferences.txt
    が編集可能になるので以下の一行をどこでもいいので追加します。
    build.path=build
    保存して終了します。
(3) ArduinoIDEを起動してもう一度Blink.ino等をコンパイルします。
(4) すると,arduino.exeがあるフォルダ直下に「build」フォルダができて,
    *.bin, *.elf, *.hex, *.map など
    おもしろそうなものが一式生成されています。:D

* 逆アセンブラファイルを得る
elfファイルがあるのでobjdumpにかけてみるとシンボル情報がstripされていて
もうひとつインパクトがないので,
以下に示す「arc-asm-list.bat」というファイルをarduino.exeと同じフォルダに置いてダブルクリックします。
すると同じフォルダに例えば「ARC-blink.ino.lst」という逆アセンブラファイルが得られます。
asm-list-arduino-v02-201602.zip
arc-asm-list.bat   --- Arduino101/Genuino101用(ARCマイコン用)
arm-asm-list.bat   --- ArduinoDue/Zero用(ARMマイコン用)
avr-asm-list.bat   --- ArduinoUNO/etc.用(AVRマイコン用)
の3つがパックされています。
例えばそれぞれ識別子としてリストファイルの先頭にARC-,ARM-,AVR-が付加されます。

 >arc-asm-list.bat
[ファイル名]

ELF file name = "build\blink.ino.elf"
Scketch  name = blink.ino
List file name= blink.ino.lst

[再リンク中...]

""C:\Users\[user]\AppData\Local\Arduino15\packages\Intel\tools\arc-elf32\1.6.4+1.0/bin/arc-elf32-gcc" -nostartfiles -nodefaultlibs -nostdlib -static -Wl,-X -Wl,-N -Wl,-mARCv2EM -Wl,-marcelf -Wl,--gc-sections "-TC:\Users\[user]\AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.4\variants\arduino_101/linker_scripts/flash.ld" "-Wl,-Map,build/blink.ino.map" -o "build/blink.ino.elf" "-Lbuild" "-LC:\Users\[user]\AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.4\variants\arduino_101" -Wl,--whole-archive "-larc32drv_arduino101" -Wl,--no-whole-archive -Wl,--start-group "-larc32drv_arduino101" -lc -lm -lgcc "build\sketch\blink.ino.cpp.o" "build\core\variant.cpp.o" "build/core\core.a""

[リストファイルを生成]

"C:\Users\[user]\AppData\Local\Arduino15\packages\Intel\tools\arc-elf32\1.6.4+1.0/bin\arc-elf32-objdump -h -dS  "build\blink.ino.elf" > "blink.ino.lst""

[サイズ情報]
   text    data     bss     dec     hex filename
  14644    3172   12672   30488    7718 build\Blink.ino.elf

[終了]
これがARCコアの逆アセンブルリスト。
 void variantAdcInit(void)
{
400373a0:    fc 1c c8 b6                 st.a       fp,[sp,-4]
400373a4:    9b 43                       mov_s      fp,sp
    uint32_t creg;
    uint32_t saved;

    /* read creg slave to get current Power Mode */
    creg = READ_ARC_REG(AR_IO_CREG_SLV0_OBSR);
400373a6:    2a 20 80 0f 01 80 80 80     lr         r0,[0x80018080]

    /* perform power up to "Normal mode w/o calibration" cycle if not already there */
    if( (creg & ADC_MODE_MASK) != ADC_NORMAL_WO_CALIB){
400373ae:    c2 b8                       bmsk_s     r0,r0,2
400373b0:    35 08 11 01                 brne       r0,4,400373e4 

        interrupt_unlock(saved);
        /* Poll CREG Slave 0 for Power Mode status = requested status */
        while ( ((creg = READ_ARC_REG(AR_IO_CREG_SLV0_OBSR)) & 0x8) == 0);
    }

    WRITE_ARC_REG(ADC_CLK_ENABLE | ADC_INT_DSB, ADC_CTRL);
400373b4:    c3 40 01 80 03 50           mov_s      r0,0x80015003
400373ba:    2b 26 00 70 00 00 04 0f     sr         0xf04,[r0]
    WRITE_ARC_REG(ADC_CONFIG_SETUP, ADC_SET);
400373c2:    c3 40 01 80 00 50           mov_s      r0,0x80015000
400373c8:    2b 26 00 70 00 00 0b 00     sr         11,[r0]
    WRITE_ARC_REG(ADC_CLOCK_RATIO &ADC_CLK_RATIO_MASK, ADC_DIVSEQSTAT);
400373d0:    c3 40 01 80 01 50           mov_s      r0,0x80015001
400373d6:    2b 26 00 70 00 00 20 00     sr         32,[r0]

}
400373de:    e0 7f                       j_s.d      [blink]
400373e0:    04 14 1b 34                 ld.ab      fp,[sp,4]
* コンパイラやライブラリのありか 以下をエクプローラのアドレスバーにコピペしてエンターキーを押すと, %UserProfile%\AppData\Local\Arduino15\packages\Intel そのなかに必要なものが一式ある感じです。 リンカスクリプトやスタートアップコードやライブリコード等,必要そうなものがあり, ライセンスはLGPLやBSDだったりします。 * あれ? Intel i386じゃないの?! で,どうも勘違いしていたようで, Aruino101でユーザがコンパイル/アップロードして使うマイコンは ARCプロセッサ でした。 (OO) http://www.synopsys.com/jp2/IP/ProcessorIP/ARCProcessors/Pages/default.aspx https://en.wikipedia.org/wiki/ARC_%28processor%29 * コードサイズがデカイ? 以前使っていた多倍長演算のベンチマークコードがあって,これをAruduino UNOで コンパイルすると Flash 4980バイトでした。 これをArduino101でコンパイルすると, Flash 57Kバイトでした。 いじめでしょうか? orz orz リストファイルをみると浮動小数演算とprintf関連のライブラリがくっついてきて結構大きくなった感じ。 それでもまだ130KBバイト以上残っているので気にしないことにしようかな。 xD ちなみにprint文をカットしてみると,
 [サイズ情報]
   text    data     bss     dec     hex filename
  15988    3168   12744   31900    7c9c build\bench_muls.ino.elf
57KB - 16KB = 41KB というこでprint系のオーバヘッドは約40KBでした。 Arduino UNOに比べれば自由人 !! * 正味のコードサイズ なんとARCコアはコードサイズがデカイ。ARMの4倍以上デカイ。 可変長命令なのでこんなものなのか? まぁFlash192KBあるからよしとしよう :D 実行速度はキャッシュが8KBあるし,クロック32MHzなので32MIPS強くらいあるかもしれない。
setup()とloop()が空っぽ テストコード 正味のコードサイズ
Arduino UNO500バイト2516バイト2016バイト
Arduino Zero8196バイト8788バイト592バイト
Arduino Due11116バイト11700バイト584バイト
Aruino 10116724バイト19148バイト2424バイト
この表のテストコードはprint文なしです。 * Intel i386コア? i386がホストマイコンということなんだけど どこで出てくるんだろう? xD
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(2) | duino系 | このブログの読者になる | 更新情報をチェックする

2016年02月06日

USB Type-C ケーブルについてのメモ 2016

PCを破壊する恐るべきType-CのUSBケーブルがちまたにあふれかえる現状にGoogleエンジニアが怒りのAmazonレビューを連載中
http://gigazine.net/news/20160203-google-engineer-review-type-c-cable/

GoogleのエンジニアがUSB Type-C対応ケーブルを片っ端から品質レビュー、まともに動くのがどれなのか判明
http://gigazine.net/news/20151106-usb-type-c/

今のところType-Cとは縁がないけど,
メモするのだった。
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | PC関連 | このブログの読者になる | 更新情報をチェックする

2016年02月03日

Arduino/Genuino 101 のメモ 2016/02

Arduino/Genuino 101 のメモ 2016/02
Arduino/Genuino 101 の追加メモ 2016/02

arduino.ccから「Arduino/Genuino 101」というボードが出たらしい。
https://www.arduino.cc/en/Main/ArduinoBoard101
    回路図
    https://www.arduino.cc/en/uploads/Main/Arduino101Schematic.pdf
2015年に発表されていたらしい。
先月末にRSコンポーネンツから発売開始の案内が来ていた。
Arduno/Genuino 101
@4748円

arduino.cc的には「Arduino Uno」の後継という位置づけらしい。
あれ? Leonardoはどうした?
と思って調べてみると既に退役(Retired)してしまった様だ。
https://www.arduino.cc/en/Main/Products
Unoより後に出たのにね。
というか28pin DIPというのがミソだったわけだから当然の消滅なのか。

で,101,
2015年に起きたArduinoの内紛のため,
アメリカ国内では「Arduino 101」,
それ以外の国々では「Genuino 101」という名称らしい。

* Arduino / Genuino 101は CPUが Intel i386 + ARC になった
CPUなのかMCUなのかMPUなのかの表現は置くとして, :D
Intel CurieモジュールというSoCモジュールの中に
Intel QUARK SE (i386) 
    http://www.intel.com/content/www/us/en/embedded/products/quark/mcu/se-soc/quark-se-soc-product-brief.html
    https://ja.wikipedia.org/wiki/Intel_Quark#Intel_Quark_SE
    ブロック図
        http://www.cnx-software.com/2015/11/06/intel-unveils-three-new-micro-controllers-for-iot-quark-d1000-quark-d2000-and-quark-se/
というホスト(メイン)プロセッサと
ARCというサブプロセッサ及び
BLE,加速度センサ,ジャイロセンサモジュールを内蔵している。
RTCも内蔵。
Intel QUARK SE (i386):
    32bit 32MHz動作
    Flash 192KB (ユーザが使えるらしい)
    8KBの命令キャッシュ
    浮動小数のコプロはなし
ARC プロセッサ:
    https://en.wikipedia.org/wiki/ARC_%28processor%29
    32bit 32MHz動作
    Flash 192KB
    浮動小数のコプロあり
    8KBの命令キャッシュ
SRAM:
    トータル80KB内蔵されているがユーザが使えるのは24KBの様だ。
パターンマッチング・アクセラレータ:
    パターン認識をハードウエアで行うための,
    128入力を持つニューロン素子が128個内蔵されているようだが
    この機能がArdunio側でどうサポートされているかは不明。
その他:
    (1) DACはない。 orz
    (2) I2Sあり。ボード仕様として使えるかどうかは不明。 
    (3) DMAあり。
    (4) USB 1.1 デバイス機能あり。

* リアルタイムOS ViperOS
2016/02時点ではほとんど使えないが, 2016/03ごろに正式搭載(デフォルトで)となる様だ。
Intel Edisonでも使われているらしい。

* Genuino 101でハローワールド!
Say Hello to Genuino 101!
http://www.rs-online.com/designspark/electronics/jpn/blog/say-hello-to-genuino-101

* 日本ではまだ使えない Genuino 101 ボード (2016/02時点)
まだ,技適が通ってない様なので日本国内のホビーユースの使用はできません。
じゃあ,コンパイルだけでも,と思ってGenuino 101対応済みのIDE,
ArduinoIDE v1.6.7を入手したものの,
国別情報を見ているのか「Genuino 101」関連のライブラリは全く出現しませんでした。
orz
orz
ひどすぎないか?
orz

* NDAの壁
Intel Quark, Curieの詳細なデータシート等は
秘密保持契約(NDA)をIntelと結ばないと入手できない様だ。
orz
orz
orz
Intel Edisonもそうだったらしい。

て,いうか,
Arduino/Genuino 101は
「エントリー向けモデル」で,Unoの後継なので
「データシートよこせ」
という人向けではないのです。
orz

遠い目


米ドルで$30なので秋月のズバリ価格で
税込み4250円くらいなら記念に xD 買ってみる手もなくはない。。。


* 内蔵電源レギュレータ容量は1500mA
これは強力。

posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | duino系 | このブログの読者になる | 更新情報をチェックする