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月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系 | このブログの読者になる | 更新情報をチェックする

2015年06月25日

Arduino UNO互換: 16bitマイコン ML620Q504搭載 Lazurite出る

Arduino UNO互換: 16bitマイコン ML620Q504搭載 Lazurite出る
* 電子工作向け、超省エネマイコンボード
トップページはここか。
http://www.lapis-semi.com/lazurite-jp/product/basic.html#feature
 値段は5600円。 

「 Lazurite (ラズライト) Basic (ベーシック) 」を開発
 Arduino (アルドゥイーノ) 互換で待機時電力を90%削減し、
電池駆動の電子工作に最適 ?
http://www.lapis-semi.com/jp/company/news/news2015/r201506_2.html?utm_content=17240025&utm_medium=social&utm_source=twitter

関連ファイルダウンロード
http://www.lapis-semi.com/lazurite-jp/download.html
開発言語はC言語ベース
http://www.lapis-semi.com/lazurite-jp/product/basic.html#feature_aru

* マイコン仕様
マイコン発表時のニュース  
http://www.lapis-semi.com/jp/company/news/news2014/r201409_3.html
64KB Flash + 6KB RAM(ML620Q504)
EEPROMは1KB搭載

詳しいマイコン仕様がダウンロードできない。
レジスタアーキテクチャとか命令表とか等々の資料。
マイコン自体は2014年12月に量産開始されているはずなのに。
http://news.livedoor.com/article/detail/9291885/
どうもなんだかアレな感じが否めない。
ハード仕様
http://www.lapis-semi.com/jp/data/datasheet-file_db/miconlp/FJDL620Q504-01.pdf
以下のページのドキュメントをクリック。
http://www.lapis-semi.com/jp/semicon/miconlp/hp-mcu.html
SWI(ソフトウエア割込み 64個)機能付きの様だ。

IDEでコンパイルしてみるとアセンブラファイルを吐いたので見てみると
少なくとも汎用レジスタが14個ある。
16bit固定長命令なのでPIC24Fよりコード効率が期待できそうか?
PIC24FはFlashに定数定義するともったいないことになる。

* 感想
発見されたばかりなので全くアレだけど。
C++言語ではなくC言語で開発する様だ。
(PinguinoもC言語だ)
IDEも独自開発ぽい。
IDEはエディタ非搭載だ。そう言うのはIDEとは言わない気がする。:D
ArduinoでもIDEのエディタ使わないからいいんだけど、省略しすぎ感がなくもない。
16bitで乗除算、積和演算付きのマイコン。
16MHzで16MIPSだろう。
ライブラリライセンスは、GPLとLGPL縛り。

値段的にはArduino UNOじゃなくてCortex-M0と比較するのが妥当かも。
性能的にはちょっと可哀想か。


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

2015年05月18日

arduino.ccがAdafruitと手を組んだ日 2015/05

arduino.ccがAdafruitと手を組んだ日 2015/05
大混乱状態(注0)に陥っているArduino分裂訴訟問題で、新たに動きがあった様だ。

詳細は、以下の原文を参照
Arduino Announces New Brand, Genuino, Manufacturing Partnership with Adafruit
http://makezine.com/2015/05/16/arduino-adafruit-manufacturing-genuino/

マッシモ・バンジー率いるarduino.cc勢(注1)、
以前このブログで書いた様に、
"Arduino(arduino.cc)の基板製造部門である会社が離反独立し(注2)、訴訟沙汰になった"
状態である。
従って、
    arduino.ccは、基板の製造販売ができなくなっていたと思われる。

そこで 今後の
arduino.ccの基板製造は「Adafruit(注3)」が担当すると発表されたようだ。
2015年の7月から「Aruduino Uno」を含む各種Arduino基板の製造をはじめる。

同時にGenuino という姉妹ブランドも発表された。

* Genuinoブランド?
このGenuinoブランドの詳細は、ちょっと不明というか、
わざわざ「姉妹ブランド」を作る意味がいまひとつ読み取れない。(こともない :D )

法定闘争の詳細を良く知らないが、ひょっとすると、arduino.cc陣営が
今後「Arduinoブランド」を使う上で"かなり不利な状況に陥っている可能性"があるのかもしれない。
或いは、そうなりつつある、既にそうなるのが濃厚、
今のうちに手を打たないとまずい。
ならば「Genuinoブランド」を立ち上げて布石を打っておこう。
最悪「Genuinoブランド」に完全移行。
という意図なのか?
と、想像してしまうのだった。:D

ところで、
「Genuino Uno」という基板が出る様だ。
これは、「Aruino Uno」と中身が同じものと読める。
ということは、
既に「Arduino」という名称をarduino.ccが使用できなくなっている
可能性も高いと思わざるを得ない。

「えッ? そういう話なの?」

なんかそんな感じがする。

詳細は6月以降徐々に判明していくだろう。

arduino.ccの"Arduino Zero"(注4)は、 2015/06/09 に出荷される。 

* さらに混乱が続くArduino分離事件
そうなると、今まで"本家"と思っていたarduino.ccが

Genuinoになって、
"本家!?"と思っていた  xD 
arduino.orgが「Arduino」の名称を勝ち取る予感がする。

* arduino.orgの1300万円縛り問題
元記事によれば、arduino.orgはArduino基板を仕入れ店に販売する時に、
以下の契約を結ぶ(同意する)よう強制していた様だ。

arduino.org以外からArduino基板を仕入れて売った場合、
1300万円超(100,000ユーロ ($113,000).) (注5)
の金を払え!


これで、どっちが正義で、どっちが不正義なのか xD
が分った気がする。(爆

問題は"不正義と思われるほう"(注6)が「Arduinoブランド」の正当な使用者に
なりそうなところ。



Arduinoブランド問題はまだまだ続くと思われる。






(注0) 大混乱かどうかは、個人の主観に依存します。 :D
(注1) 対抗するのはarduino.org
(注2) これがarduino.org
(注3) Adafruitという会社の米国内(マンハッタン)の製造拠点。
(注4) arduino.orgの"Arduino Zero Pro"とは微妙に別物らしい。 :D
(注5) 約120円/ドル 換算
(注6) (爆(爆   正義か不正義かは個人の主観に依存します。xD


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

2015年03月14日

Arduino分離訴訟事件:Arduino Zero Pro and without Pro

Arduino分離訴訟事件:Arduino Zero Pro and without Pro
以下の「マイコン工作実験日記」さんのブログを見て驚いた、

SAMD21
http://blog.goo.ne.jp/sirius506/e/502d01e2266a4a32e6fb0bbc7e896fdd

のが、はじまり。

* はじまり
そう言えば、
「Arduino Zeroはまだ出ないな〜ぁ。
もうい〜や。mbedあるし、安いし。」
と思っていることさえ
忘れていた今日この頃。

知らないうちにArduinoプロジェクトが仲間割れ xD して訴訟沙汰になってた。(w 

Arduinoは大混乱に突入なのか!?
現在Webサイトは2つに分かれている。
http://www.arduino.cc:
    以前からあったサイト。
    「Arduino Zero」は下記の騒動でまだ発売できないと思われる。
    後述の様にAruduinoの基板製造担当会社が独立してしまって、そこと訴訟をやってる訳だし。:D
http://arduino.org 
    最近分離独立してできたサイト。
    ここで「Arduino Zero Pro」が既に売り出されているらしい。
    元々、Arduinoの基板製造を担当していた会社がベースになっている。

* 混乱の経緯と現状(2015/03時点)
詳しくは、原文をどうぞ。
Arduino Zero Pro Released Amid Legal Dispute 
http://www.i-programmer.info/news/91-hardware/8369-arduino-zero-pro-released-amid-legal-dispute.html
以下、概要をメモしておく。
2009年より前は省略。
---------------------------
2009年にマッシモ・バンジーを含む5人がアメリカで「Arduino LCC」を立ち上げ、
Arduino商標の法的な所有者となる。

2014年に 一人分離。
分離したGianluca Martino氏は Arduinoボードを製造している会社"Smart Projects SRL"の社長だったが、
この会社名を「Arudino SRL」に変更した。
さらに、Aruduino Yunの開発に貢献したDog Hunterという会社(IoT系)の社長も引き入れた。
現在、商標権とその使用を巡ってアメリカとイタリアで訴訟中である。
---------------------------




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