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

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

2進数から、コンピューターの教え方が飛びすぎている気がする

2013-08-09 20:05:49 | Weblog
一般に、コンピューターを教えるとき、
2進数までは教える。
AND、OR,NAND,NOR、XORについては教える。

で、その先・・・

この話はぶっ飛んで、いきなり、プログラムの話とかにいっていないだろうか?
あんなに覚えた、2進数は、どこに使われているの?
みたいな・・・

その間を埋めないと、arduinoとか、組み込みとかをC言語で、何で制御
できるのか、よくわかんないことになるので、ちょっと、この間について
触れてみたい。




■記憶回路と周辺機器

 コンピューターは結局、情報処理をするものであるが、これは、
   情報:データを
   処理:処理加工する
 ことである。

 そして、データは、記憶装置に置かれる。
 入出力したデータも、記憶装置に置かれる。
 記憶装置というのは、フリップフロップを使うと作れて、こいつは、1といれたら、
 電気が入っている間、書き換えない限り1になる。0も同じ。

 で、いろんなロボットも、通信も、ディスクの書き換えも、結局は、電気信号の
0,1→電気的なスイッチON,OFFで行われ、それは、記憶装置のどこかに
つながっていて、そこのON,OFF(1,0)で決まる。

 だから、この、いろんな装置に繋がる記憶装置の0、1を、コンピューターで
制御できれば、コンピューターでいろんな装置が制御できることになる。
 じゃあ、このコンピューターで、いろんな装置に繋がる記憶装置の0、1をセット
できるのか・・・




■アドレス

 これら、いろんな装置に繋がる記憶装置の0、1の場所には、名前がついている。
 そう、アドレス。
 アドレスを指定して、ON,OFFを設定すればいい。
 ここでC言語。

 C言語では、ポインタという、アドレスを指定して、その中身を(*変数で)
みたり、セットしたりできたりする。
こんなかんじ。

volatile unsigned int *PINSEL0;
PINSEL0=0xE002C000;

こうすると、*PINSEL0で、アドレスE002C000の中身が見れる。
*PINSEL0=1で、アドレスE002C000の値を1にセットできる。
このアドレスE002C000が、ハードウェアの装置の入出力するところとつながると、
その装置を操作できる。

OS上だと、そういうところはアクセスできないが(OSで禁止されるので)
OSが無ければ、アクセスOKとなる。




■加算機

これで、いろんなロボット、センサー、入出力装置なんかのデータは、
取ったりセットしたりできるようになった。

つぎに、これを処理する。

結局、処理は、積分だろうが微分だろうが、最終的には、四則演算になり、
四則演算は、結局+に帰着する。なので、2進数の足し算ができればよい。

2進数の足し算は、

  信号Aと信号Bがあり、これが、Oと1のときがある。
  そのとき、桁上がりCと、答えXは、こんなかんじのくみあわせ

  AB|CX
----------
  00|00
  10|01
  01|01
  11|10

ここで、ABとCだけみると、ABが1のときのみCが1、
つまり、ANDなので、ABとCをAND回路で結べばよい
ACとXをみると、ABがどちらか1のとき1、
つまり、XORなので、ABとXをXOR回路で結べばよい

ANDやXORの回路はICとして売っているので、これを
線でつなぐ。こいつが加算機

現実には、こんなものが、果てしなくいっぱい並んでいる。
そして、計算している。これが、CPU(のアキュムレーター)




こんなかんじで、線から値をとってきて、計算して、その結果をまた線に返して
・・・を繰り返している。

ざっくり説明すると、こんなかんじ。



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

mrubyの事例とか

2013-08-09 16:04:44 | Ruby
OSSユーザーのための勉強会 <OSS X Users Meeting>の第4回mbuby
のときに聞いてきた話のメモメモのつづき(これでおしまい)




IIJによるmruby事例紹介
・SEIL(さいる):企業向けルーター
 アーキテクチャ
   NetBSDベース
   ルーティングエンジン
   コンフィグ管理システム

・ルーター:
  C,C++
    エラーハンドリング:割と大変・煩雑
    文字列処理:大変
    コンフィグ管理=mruby

・事例紹介1
  バックボーン計測
  プローブの開発にRuby→mruby化したい

・事例紹介2
  SEIL:イベントスクリプト処理

・事例紹介3
  SACM(サービスアダプターコントロールマネージャー)
  機器の自動接続、一元管理
  http://www.scam.jp/
  機械SA-W1は無償:月額で、機能に対してお金を払う
  SA-W1にmruby(レシピフレームワーク)
   →開発効率が上がる

・組み込み機器の開発プロセスが進化する
  今までの組み込み機器開発
   ドライバ、アプリすべてC
  今後
   速度が要求されるところC

・スクリプト言語があつい
  NetBSDカーネルでLuaが動く




福岡SCSKでのmruby活用
・軽量rubyへの取り組み
  mrubyの活用
  mrubyの啓蒙
  軽量ruby

・事例:産業用ロボット
  リアルタイムOS上で複数のmruby VM
  お絵かき上をロボットが追随
  RTOS:VxWorks タスク4つ

・今後の取り組み
  ロボットDSL
   JOB言語を覚えなくてもmrubyでロボットが動く

  MindstormNTXをmrubyで動かす
   きびしい?
   →新しいMindStorm
      Linux,ARM9,メモリいっぱい

  enzi
   http://enzi.cc
   mrubiを手軽に実行できるプラットフォーム
   実行環境はwebブラウザ(そのまま使える)
    →AWS上に構築
   Web上でボードシミュレーター
   Cortex-M4 168MHz
   RAM 192K+1M
   Rom 1M
   クロック落としたかんじでシミュレーション可能

   近日発売予定 6980円予定




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

「組み込みにも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でシェアする