ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

「組み込みにもRuby」のmrubyの話

2013-08-09 12:09:33 | Ruby
OSSユーザーのための勉強会 <OSS X Users Meeting>の第4回mbuby
のときに聞いてきた話のメモメモ(いくつかにわけて、送る予定)のつづき




Ruby
・オブジェクト指向プログラミング言語
・高い生産性と可読性
・国際標準規格ISO/IEC30170:2012
・今年で20周年 Ruby2.0登場
・Ruby On Railsの登場で大ブレイク
・Web界のトップ3
  Java、PHP、Ruby

Rubyを組み込み開発業界にも
・組み込み業界の課題
  高機能、高付加価値の要求
  製品サイクルの短期化
  低コスト化
・C/C++ベースの開発の限界

・地域イノベーション創出研究開発事業
  軽量Rubyを用いた組み込みプラットフォームの研究・開発
  Rubyのよさをそのままに軽量化

  2012年4月にmruby公開
  https://github.com/mruby/mruby

mrubyの特徴・仕様
・軽量なruby
・mrubyのm
  eMbedded→erubyは存在
  Moduler
  Minimalistic
  matusmoto
・提供されるもの
  ソースコード
    ビルド  make
    C,Ruby,bison→標準Linuxならいけるかな?
  モジュール
    mrbc,mruby,mirb,libmruby.a
・コンパクトな処理系
  仮想マシンmrubyVM
  コンパイラ言語
  中間表現(バイトコード)を実行
  容易にカスタマイズ可能→ライブラリも
  環境非依存→Cがコンパイルできれば
・拡張性
 mruby版GEM 「mrbgems」
   Rubyによる拡張
   C言語による拡張
    C/C++既存資産の有効利用
 CRubyのGEMとは互換性なし
・組み込み可能
  システムに組み込む
   さまざまなOS(OSなしも)で動作可能
  アプリケーションに組み込む
   ソフトウェアの一部としてのRuby
・ソフトウェアリアルタイム
  インクリメンタルGC
   GCによる停止時間の短縮
  C言語よりも遅い
   10倍以上
   ハードリアルタイムには不向き
   人間が気づかない程度には速い
・その他
  ISO規格のRubyに準じる言語仕様
  環境依存しないライブラリ群
   環境依存部はmrbgemsで拡張
  MITライセンス
・適用例
  iosアプリケーション
  Webサーバー拡張
  ルーター
  自販機
  mruby学習キット
・課題
  ライブラリが少ない
  ドキュメントが少ない
  安定バージョンが不明

まとめ
・mruby
  OSSとして日々進化中
  いろいろなところに組み込める素材

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

今ならmrubyの星になれるかも!軽量Rubyフォーラムただいま会員1ケタ

2013-08-09 09:35:13 | Ruby
OSSユーザーのための勉強会 <OSS X Users Meeting>の第4回mbuby
のときに聞いてきた話のメモメモ(いくつかにわけて、送る予定)

一番最後のパート、「NPO法人 軽量Rubyフォーラム」について




軽量Rubyフォーラム
・軽量Rubyの維持メンテナンスなど
・2013/1から
・現在、デバッガない
・はやく安定バージョン
・啓蒙活動、教育
・各種イベント
ワーキンググループ
・5つ
・RubyチップWG
企業7社、個人3人
mrubyのボードEAPL-Trainer(ILC)
  8月24日:ルネサス 16800円(ボードこみ)
部門とかでも入れる
http://forum.mruby.org


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「超高速開発コミュニティ」・・ただ、時代は、要件定義の正確さとUXの満足度かも?

2013-08-08 17:39:12 | Weblog

「超高速開発コミュニティ」は何を目指すのか
http://yoshinorinie.hatenablog.com/entry/2013/08/07/093056

によると、超高速開発のコミュニティ

超高速開発コミュニティ
http://www.x-rad.jp/index.asp

ができたのだとか・・・

でも、時代の流れは、開発レベルに入ってからの高速化よりも、
要件での段階の無矛盾性と、UXの満足度、自由度の話に
移ってきているような気がする。2010年以降。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

要求仕様は訓令、ソフトウェアファクトリは号令、実は命令セットが重要

2013-08-08 13:30:00 | Weblog
人を動かすには、訓令、命令、号令という3種類の指示方法がある。

くわしくは、

人によって仕事のできる意味が違う(訓令・命令・号令)
http://teoria.co.jp/10to493/003komaji/komaji02.html


  訓令:目的のみ伝える
  命令:目的をもとに、どう作業すべきか説明する
  号令:作業指示をする

ソフトウェア工学的に言うと、要求仕様はwhatのみしか書かないので
目的のみを伝える訓令にあたる。

そして、ソフトウェアファクトリーというのは、誰がやっても
同じ結果になるはずなので、号令をだしていることになる。

つまり、ソフトウェア工学とは、「要求=訓令」をもとに、
「号令=属人性を排除する作業内容」を生み出す、
命令セットを作っていることになる。

しかし、この命令セットが明白な場合(昔のCOBOLによる
開発の場合は、結構あった)、訓令から号令が直接出せる。
これが、昔のウォーターフォールの開発であり、開発手順を
知らないSIerやプロジェクトマネージャーが生きていけた時代だった。
このころは、力任せに開発してれば、どうにかなった。

ということで、いまだに、命令セットを考えず、訓令レベルのことを
指示しているだけのSIerやプロジェクトマネージャーは、下についた
部下や下請けが動けないから、デスマーチ化する。

適切な命令セットを見つけ出せる、SIerやプロジェクトマネージャーが
どれだけいるかが、開発のキーポイントになったりする。
ただし、「適切な命令セット」は、爆速で変わっているところが、注意点
だったりする。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

gccでspawnとかcc1: execvpがNo such file or directory

2013-08-08 11:24:05 | トピックス
昨日、ARM7のボードを使って、組み込みのC言語のお話を聞いてきた!

CDに必要なものは入っていますといわれたのを信じたら、
なんとまあ、大きな2つのトラップが・・・

ってことで、その2つについて。




■ドライバのCP210x_VCP_Win_XP_S2K3_Vista_7.zipが入っていない!

ということで、調べた。
どうも、2Shareというところにあることまではわかった。
そしてみたら、こんながめん。ここでトラップ!

まんなかの、Downloadをクリックしてはいけない!
ここは、広告。

下のDownload(赤で囲んだ)をクリック!

ちなみに、広告のところには「通常ダウンロード」とでたり、
ウィルスを発見した、スパイウェアを発見した、
いろいろでるけど、全部広告・・・
・・・まぎらわしい・・・




■CDの中のCygwinを立ち上げてmakeしたら・・・

パスが無い!
調べると、arm-toolsの下に、arm-elfというのがあって、その下のbin
にgccやldが入っている。これを利用しても・・・できてないみたい・・・

ということで、バイナリを変えてみる・・・


ARMアーキテクチャ用クロスコンパイラ/アセンブラ環境
http://www.ced.is.utsunomiya-u.ac.jp/lecture/2012/aca/arm-tools.html


の一番下のほう(斜体は上記サイトから引用)

クロスコンパイラ/アセンブラ環境の導入
ARMクロスコンパイラ/アセンブラ環境をまとめたアーカイブファイルを ここ(41.8MB)に置いておくので、ダウンロード&解凍して使用する。


というので、その下に書いてある通りに解凍して、やってみた。
いろいろやってみたけど、

・オブジェクトができない
・以下のエラー(太字はエラー表示)

gcc: spawn: No such file or directory

とか

gcc: error trying to exec 'cc1': execvp: No such file or directory

とか。

どうも、バージョン、くみあわせが悪いよう・・・

結局見つけた組み合わせ。

CC = /usr/local/new-arm-tools/bin/arm-elf-gcc-3.4.6.exe
AS = /usr/local/new-arm-tools/arm-elf/bin/as
LD = /usr/local/new-arm-tools/arm-elf/bin/ld.bfd
OBJCPY = /usr/local/new-arm-tools/arm-elf/bin/objcopy

これでmakeがとおった・・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C言語での組み込みの開発方法について聞いてきた

2013-08-07 18:54:00 | ネットワーク
今日、C言語での組み込みの開発方法の入門講座みたいなの
聞いてきた。内容をメモメモ




クロス環境
 ホストマシンからターゲットマシンにダウンロードする
   →ターゲット側のプログラムを作る

バイナリツール
  実行形式を変換

デバッグ
  ICEを使う場合、モニタプログラムを使う場合

【手順】

Cコンパイラ
  ↓
リンカー
  ↓
バイナリツール
  ↓(変換)
ROMライター(ベンダーで決めている)
  ↓
ターゲットで動かす


GNUでARM用サポートされている
 gas:コンパイラ
 ld:リンカ
 objcopy:実行形式変換

モトローラー、インテル(HEX)どっちかを変換
  →Objcopyで設定

【実習】
・USBドライバをインストール
・USBのポート番号を確認
  マイコンピューターのシステム ハードウェア デバイスマネージャー ポート
・FlashMagicを設定する

・プログラムを作る
・makeする
  →コンパイル、リンク、実行形式の変換をする
  →*.hexファイルができる
・ボードをプログラムが書き込めるモードにする
  →ジャンパーを入れて(閉じて)リセット
・FlashMagicでファイルを指定してStart
  →下のほうが動く
・基盤のジャンパーをとって(開いて)リセットすると実行

【組み込みプログラム】
・常に動き続ける→返ってしまうと暴走してしまう
  while(1){}

【しくみ】
・マクロでアドレスを指定しておく
#define PINSEL0 *((volatile unsigned int *)(0xE002C000))
→#define マクロ名 *((volatile unsigned long *)アクセスしたいアドレス)
→つまり、ハードウェアを直接たたいて制御

・そのマクロを組み合わせて1コマンドへ
 LED_ON
  ・ピンモードをGPIO
  ・プルアップに設定
  ・出力に設定
  ・マスクなし(0)
  ・1をセットするとHigh,0でLow、LowでLEDON

・Cでプログラム
  上記のものは、ライブラリとして用意
   →プロトタイプ宣言してあるヘッダーファイルをインクルード
    LED_ONとかを書く


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

FPGAなんかの検証のSystemVerilogや、制約付きランダムなんかの本

2013-08-07 09:25:48 | Weblog
PGAなんかの検証で、アサーション、カバレッジ、制約付きランダムなどを行う手法(メソドロジと読んでいるらしい)と、それを記述するSystemVerilogの本、めもめも(今見てる暇無いので)
「Design Wave Advance」のシリーズの本のよう・・・


ベリフィケーション・メソドロジ・マニュアル―SystemVerilogでLSI機能検証プロセスを徹底改善
http://www.amazon.co.jp/dp/4789836150

SystemVerilog設計スタートアップ―VerilogからSystemVerilogへステップアップするための第一歩
http://www.amazon.co.jp/dp/4789836193

SystemCを使ったハードウェア設計―システム・レベル・モデリングからビヘイビア合成まで
http://www.amazon.co.jp/dp/4789836169

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ソーシャルゲームは落日なのか?

2013-08-06 19:17:46 | ネットワーク
要するに、データ分析してカモを探し、
カモからむしりとるという課金ビジネスの
ビジネスモデルが変わったってことだよね。

ソーシャルゲームは落日なのか? 力押し課金に限界
http://headlines.yahoo.co.jp/hl?a=20130806-00010003-wordleaf-game


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ネットワーク図を書くフリーソフトNetwork Notepadがトラップありすぎな件(1)

2013-08-06 14:04:04 | ネットワーク
ネットワーク図を書くとき、Visioじゃたいへんだしなあ・・・
というとき、ネットワーク図を書くフリーソフトNetwork Notepadが
あるみたいなんだけど、使おうとして、トラップありすぎなので、
そのトラップを公開してみる・・・




■トラップその1:ダウンロード

Network Notepadは、ここ

Network Notepad 4.6.9
http://www.filecluster.com/downloads/Network-Notepad.html

にあるんだけど・・・


のように、External Mirror1をクリックすると、
ダウンロードできる・・・

どこをクリックするのかと思った・・・




■インストールは、トラップない

ダウンロードすると、netnotep.zipというファイルができるので
解凍する。フォルダの中に、setup.exeができるので、これを
ダブルクリックで起動

となって、あとは普通のインストール。

I agreeして

Nextをクリックしていけばできる









■トラップ2:起動後、何をする?

インストールが終わったら起動。
立ち上がると、こんな画面・・・なにをすれば・・・

だまって、ObjectLibrariesのボタンをクリック
こんなダイアログが出る

そこからネットワーク機器をえらび、クリック
白いところにドラッグアンドドロップ!

ネットワーク機器が選べるが・・・

・・・あれ、選びっぱなし。
エスケープキーで抜けるんだけど、タイミングが悪く
抜けないときもある・・・




■トラップ3:位置移動

選択は、クリックすれば良い
削除は、選択後、Xボタンをクリックするか

deleteする。

問題は、移動。選択後、移動すると、エラーになる。
「シフトキーを押しながら」選択、ドラッグして移動する



■トラップ4:線を引く

機器は配置した。
あとは、ネットワークの線を引く。
これもトラップ。線は下図のように


鉄アレイを斜めにしたような青○赤線のボタンをクリックし、
横のリストから、100BaseTとか選んで、機器のところを
クリックして、(そうすると、その機器が選択される)
結びたい機器のところまでドラッグして引く



■トラップ5:ビットマップ保存
File→Export to ~
で、ビットマップ、PNGなどで保存できる
で、ほぞんすると、とっても大きな大きさになる

下の図は、それを切ったもの

保存は、Fileのsaveでできる




まだまだ道半ば・・・このコーナー続く。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

LIXILのトイレ操作アプリに脆弱性

2013-08-06 12:00:43 | Weblog
記事によると


そのため攻撃者は、トイレ利用者が予期しないタイミングでトイレのフタを開け閉めすることができるほか、ビデや空気乾燥機能のオン/オフも可能となるという。

とのこと。これは、危険かも?(^^;)


LIXILのトイレ操作アプリに脆弱性 - 使用中に蓋の開閉やビデが行われる恐れ
http://news.mynavi.jp/news/2013/08/05/015/index.html

(エントリ内の太字は上記サイトより引用)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

カスタマーエクスペリエンスと、カスタマージャーニーマップ、ユーザーストーリー

2013-08-05 14:24:48 | Weblog
あれ、不思議?

日経情報ストラテジー2013年9月号は、
「カスタマーエクスペリエンス」
の特集なんだけど、ちょっと、気になったことがあったので、メモメモ

カスタマーエクスペリエンスを注目するのに、
  バーンド・H・シュミット先生や
  ジョセフ・パイン2世さん
が挙がっていて、それはそれでいいんだけど、

特集をざっとみたところ、では、カスタマーエクスペリエンスを
どのように反映して、どうシステム開発に生かすかという部分が
抜けている気がするのは、気のせい?

ふつうは、カスタマーの行動と経験を両方図示した、
カスタマージャーニーマップを作成し、
その中で、経験上問題のあるところを改善し、
その結果を、ユーザーストーリーとしてまとめる。

ユーザーストーリーまでくれば、アジャイルUX開発になるので、
あとは、システム屋さんの話なんだけど・・・

・・・なんか、日経ストラテジー、その後の文を、SNSとか
ビッグデータ分析とか、むりやり、ビッグデータに話結び付けて
いるな・・・(^^;)

や~商魂たくましい!

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WindowsXP乗り換えに、「パソコンもBYOD」という選択肢

2013-08-03 19:19:54 | Weblog
たしかにそれは、ありだよなあ~

今日ゼミで、企業におけるWindowsXP乗り換えの話になり、そのときに先生が、


WindowsXP乗り換えに、他のWindowsOSに買い換えとか、
他のOSに乗り換えという選択肢は狭すぎる!!

まずそもそも、快適なコンピューター環境を得るというのであれば、
パソコンを使わないという選択肢だってあるし、
他の選択肢もあるはず・・・・


という話で、まあ、「パソコンを使わない」というのは、
すぐに思いつきましたよ。
すべてをiPad+クラウドですね・・・
でも、他の選択肢・・・買い替えでなく・・・
すぐに思いつかなかったが・・・・



先生、ばかな子ですみません。5時間たって、やっと気づきました!



そうですぅ、たしかに・・・・
「会社が」パソコンを買い換えない選択肢はありました。
パソコンも、BYODにしちゃえばいいんですね・・・
たしかに、これありかも・・・
みんなPC,個人用持ってるし、
もってなくても、アキバで中古で買えば安い。
まあ、買ってくれるだろう・・・

う~ん、
会社によっては、
地方自治体によっては、
学校によっては、
これありかもよ・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

個人向け3Dプリンター、販売開始 ヤマダとビック

2013-08-02 22:34:45 | Weblog
ただし、15万円前後から
フィギュアとかを作るのに使う想定らしい


個人向け3Dプリンター、販売開始 ヤマダとビック
http://news.goo.ne.jp/article/asahi/business/TKY201308020400.html


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

結局、Springフレームワークでwebするのに必要なファイルは?

2013-08-02 12:28:32 | JavaとWeb
今、SpringによるWebアプリケーションスーパーサンプル 第2版を見てる。

そのまとめ。

今、Springでサイトを作ることを考えたとする。
そして、
  ・ViewはJSPで行うとして
  ・コントローラー部分は、Springフレームワーク
  ・SpringDIでモデルを作り
  ・DBアクセスはSpringJDBC

という構成を選んだとする。
これは、この本のCDのサンプル(Sampleフォルダ)の
shopping3-6に当たると思う。

これを参考に、上記フレームワークで必要なファイルを考えると・・・
こんなかんじ?




■設定関係(プロパティ含む)

○Tomcatの設定ファイル
  WEB-INF/web.xml
 ここで、サーブレットの指定をする。

 servletタグで、
   サーブレット名を指定し、
   クラスは、org.springframework.web.servlet.DispatcherServlet
   を起動させる。
    →こうすると、サーブレット名-servlet.xmlが、
     (SpringMVCの)Spring設定ファイルとなる

 listenerに
   クラスorg.springframework.web.context.ContextLoaderListener
   を指定する
    →こうすると、applicationContext.xmlが、(MVC「以外の」)
     Spring設定ファイルになる

---

○Spring設定ファイル1 サーブレット名-servlet.xml
   (ここでは)WEB-INF/shopping3-6-servlet.xml
   SpringMVCの設定ファイル。HandlerMappingとかViewResolver
   などの設定をする。今回はJSPだが、テンプレートエンジンに
   velocityの指定をする場合なども、ここ

---

○Spring設定ファイル2 applicationContext.xml
   WEB-INF/applicationContext.xml
  その他の(主にSpringJDBC)の設定をする
  transactionManager、JDBCドライバ、
  DBのユーザー、パスワード
  メッセージソースなど


---

○各種プロパティ
  WEB-INF/classes/*.properties

 メッセージソース(ここではApplicationResource.properties)

 log4j用(log4j.properties)

 画面チェックにBeanValidatorを使う際、このサンプルでは

 HibernateValidatorを使っていて、その日本語エラーメッセージ用
  ValidationMessages_ja.properties
 が、ここでは置かれている





■ソース

○View  : JSP
 サーブレット名-servlet.xml(shopping3-6-servlet.xml)で
 /WEB-INF/jsp/におくと宣言した

 JSPファイルがいっぱい

 ちなみに、このサンプルでは、c:などのタグがでてくるが、
 これは、header.jspにtaglib宣言されていて、それを各JSPが
 インクルードしている。

---

○コントローラー
 /WEB-INF/srcにソース、classesにクラス。

 controllerの下にコントローラークラスがある

---

○ロジック(モデル)
 /WEB-INF/srcにソース、classesにクラス。

 logicの下に
   インターフェース ItemService
   その実装 ItemServiceImpl
   データ用のクラス Item
 がある

---

○DAO(モデル:データアクセス)
 /WEB-INF/srcにソース、classesにクラス。

 daoの下に
   インターフェース ItemDao
   その実装 ItemDaoImpl
 がある

 データ用のクラス(DTO)は、logic.Itemを使っている




こんなかんじかしら。
間違っていたら、ごめん
  

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

今日FPGAで学んだこと(7)NIOSについて

2013-08-01 20:45:21 | トピックス
今日じゃなくって、昨日だけど、学んだこと。
昨日とはぜんぜん違う話。
ソフトコア・プロセッサ、NIOSをつかいます。
バージョンが9.1なので、SOPCビルダーをつかいます(最近のバージョンはQSys)




■SOPCとQSYS
・Quartus9.1などの場合につかう。
 バスのavalonが、マスタースレーブ

・QSYS
 12.1から登場、13.0では、こちらしかない?
 バスが、マルチマスター

外部とのやり取り:JTAG




■NIOSを利用したプログラムを作る手順

(1)QuartusⅡで、トップモジュールを作成する。
  verilogと、ピン配置もやっておく
  下位モジュールは、コメントにしておく

(2)SOPC Builderで、NIOSなど、いろいろ取り揃える
・QuartusⅡのTools→SOPC Builderで起動
・いろいろモジュールを組み込む
   RAM
   NIOS
   JTAG
   SystemID
   入出力(GPIO)
・アドレス設定
  SOPC Builder→System→AutoAssignBaseAddresses
・保存して、生成(Generateボタンクリック)

(3)QuartusⅡで、トップモジュールを完成、転送
・(1)でコメントにしておいた、下位モジュールとのつなぎの
 部分のコメントをはずして、コンパイル
  →あらかじめ、ピン配置をしておくこと

・この時点で、Programmerを使って、FPGAに書き出す
  →QuartusⅡの作業はここでおしまい

(4)NIOSⅡSoftware Build Tool for Eclipseで
   (C言語)プログラムを作成

  File→New→NIOSⅡApplicationTemplate
   (2)で作ったscopeinfoを選択
   プロジェクト名をいれ、
    templateにblankProject(空のプロジェクト)を選択
   プロジェクトにbspと付いているものと、いないものができる

  Cプログラム作成
    bsdが付いて「いない」ほうのフォルダ=プロジェクト名を右クリック
    new→SourceFileを選択
    ファイル名(なんとか.C)をいれて、Cのソースを書いて保存

  BSPエディタを起動
   bspフォルダを右クリック
     settingでC++をはずしたり(settingタブenableC_Plus_plus)
     commonで、enable_reduce_device_driverやenable_small_c_libraryに
     チェックを入れたりいろいろして
     保存後、一番下にあるGenerateボタンをクリック

  public.mkを修正
   bspフォルダを右クリック
    ALT_LDFLAGSのしたに
    LT_CFLAGS += -DSMALL_C_LIB
   をつけたしてみたり、しなかったりで、保存です
   →この作業をやる前に、上記のBSPエディタをGenerateし、終了しておくこと
    そうしないと、public.mkはひらかない。
    終了してもひらかなかったらF5キー(リフレッシュ)

  プロジェクトのビルド
    bsdが付いて「いない」ほうのフォルダ=プロジェクト名を右クリック
    Build Project
    最後にビルドがコンプリートしたよとでる

  転送、実行(FPGAが動いていて、USBブラスターが繋がっていること)
    bsdが付いて「いない」ほうのフォルダ=プロジェクト名を右クリック
    RunAs→NiosⅡHardwareを実行
    画面が出てくるので、Runをクリック

これで、実行できる

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする