コンピュータを楽しもう! RSSフィード Twitter

2014-06-21

[]WindowsVagrant ec2を試してみる(7) vagrant up --provider=aws 04:54

いよいよ、vagrant upして、awsEC2インスタンスVagrantを用いて生成してみます。

起動は、--providerオプションをつけます。

GitBashを起動します。GitBashについては、WindowsでVagrant ec2を試してみる(1) 事前環境作りで説明しています。


vagrant up --provider=aws実行

実行するには、先ず、Vagrantを起動するフォルダを作成します。今回は ~/Documents/Vagrant/aws フォルダでVagrantを起動したいと思います。先ず、~/Documents/Vagrant/awsフォルダに先ほどのVagrantfileを置きます。そして、~/Documents/Vagrant/awsフォルダに移動します。

そして、vagrant up --provider=aws を 実行します。

$ cd ~/Documents/Vagrant/aws
$ vagrant up --provider=aws
Bringing machine 'default' up with 'aws' provider...
[fog][WARNING] Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.
==> default: HandleBoxUrl middleware is deprecated. Use HandleBox instead.
==> default: This is a bug with the provider. Please contact the creator
==> default: of the provider you use to fix this.
==> default: Warning! The AWS provider doesn't support any of the Vagrant
==> default: high-level network configurations (`config.vm.network`). They
==> default: will be silently ignored.
==> default: Launching an instance with the following settings...
==> default:  -- Type: t1.micro
==> default:  -- AMI: ami-bddaa2bc
==> default:  -- Region: ap-northeast-1
==> default:  -- Availability Zone: ap-northeast-1c
==> default:  -- Keypair: VagrantEC2
==> default:  -- Security Groups: ["VagrantEC2SecurityGroup"]
==> default:  -- Block Device Mapping: []
==> default:  -- Terminate On Shutdown: false
==> default:  -- Monitoring: false
==> default:  -- EBS optimized: false
==> default: Waiting for instance to become "ready"...
==> default: Waiting for SSH to become available...
==> default: Machine is booted and ready for use!
==> default: Warning! Folder sync disabled because the rsync binary is missing in the host.
==> default: Make sure rsync is installed and the binary can be found in the PATH.

これでインスタンスが生成されているはずです。vagrant sshしてみます。

$ vagrant ssh
[fog][WARNING] Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sat Jun 21 19:26:23 UTC 2014

  System load:  0.81             Processes:           73
  Usage of /:   9.6% of 7.75GB   Users logged in:     0
  Memory usage: 11%              IP address for eth0: 172.31.23.210
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


ubuntu@ip-172-31-23-210:~$

無事、ログインできました。

awsEC2を見てみると、インスタンスが生成されていることが確認できます。

f:id:tarosay:20140622043426p:image


TeraTermからログインしてみる

ここまで来ると、使い慣れたTeraTermからログインしたくなります。ということで、ログインしてみます。TeraTermインストール方法は、TeraTermの最新版(4.82)をWindows7にインストールしてみました!サイトなどを参考にしてください。

TeraTermを起動します。EC2IPアドレスは、awsEC2インスタンスのConnectポタンを押して確認します。WindowsでVagrant ec2を試してみる(6) Vagrantfilesの作成のoverride.ssh.usernameのところで少し解説しています。

f:id:tarosay:20140622044522p:image:w320

OKを押すと、セキュリティ警告がでるので、「続行」を押します。

f:id:tarosay:20140622044523p:image:w320

User名に ubuntuを入れて、パスフレーズは無しでいいです。RSA/DSA鍵を使うを選択し VagrantEC2.pemファイルを選びます。

f:id:tarosay:20140622044524p:image:w320

OKを押すと、TeraTermEC2ログインできました。

f:id:tarosay:20140622044525p:image:w320


以上でWindowsからVagrantaws EC2インスタンスを生成する解説を終わります。

[]WindowsVagrant ec2を試してみる(6) Vagrantfilesの作成 04:13

vagrant-awsプラグインインストールしたので、最期にVagrantfilesを作成したいと思います。

とりあえず、下記のような感じです。それぞれ説明していきたいと思います。

# vagrant up --provider=aws
#
Vagrant.configure("2") do |config|
  config.vm.box = "aws-dummy"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id = "アクセスキー"
    aws.secret_access_key = "シークレットアクセスキー"
    aws.keypair_name = "VagrantEC2"

    aws.instance_type = "t1.micro"
    aws.region = "ap-northeast-1"
    aws.availability_zone = "ap-northeast-1c"
    aws.security_groups = "VagrantEC2SecurityGroup"
    aws.ami = "ami-bddaa2bc"

    override.ssh.username = "ubuntu"
    override.ssh.private_key_path = "~/.ssh/VagrantEC2.pem"

    aws.tags = { 'Name' => 'VagrantTest' }

  end
end

config.vm.box

config.vm.boxは、vagrantのダミーボックスです。WindowsでVagrant ec2を試してみる(5) vagrant-awsプラグインインストールで作成したものです。

config.vm.box = "aws-dummy"

aws.access_key_id と aws.secret_access_key

aws.access_key_id と aws.secret_access_keyは、WindowsでVagrant ec2を試してみる(2) awsでのアクセスキー設定で取得したAccess Key Id と Secret Access Keyのことです。****は各自のコードになります。

aws.access_key_id = "********************"
aws.secret_access_key = "****************************************"

aws.keypair_name

aws.keypair_nameは、WindowsでVagrant ec2を試してみる(3) awsでのKey Pairs設定で設定したKey pair nameになります。今回は「VagrantEC2」と設定しました。

aws.keypair_name = "VagrantEC2"

aws.instance_type

aws.instance_typeは、作成するインスタンスのタイプを設定します。「t1.micro」は最も小規模なインスタンスです。

aws.instance_type = "t1.micro"

f:id:tarosay:20140622031606p:image:w320


aws.region と aws.availability_zone

aws.region と aws.availability_zoneは、インスタンスを生成する地域を指定します。WindowsでVagrant ec2を試してみる(3) awsでのKey Pairs設定で、「Tokyo」を選択しており、「Tokyo」のリージョンは「ap-northeast-1」となり、アベイラビリティゾーンは「ap-northeast-1c」となります。

aws.region = "ap-northeast-1"
aws.availability_zone = "ap-northeast-1c"

aws.security_groups

aws.security_groupsは、WindowsでVagrant ec2を試してみる(4) awsでのSecurity Group設定で作成しています。今回は、「VagrantEC2SecurityGroup」というグループを作成しました。

aws.security_groups = "VagrantEC2SecurityGroup"

aws.ami

aws.amiは、生成するインスタンス上で動かすOSを指定します。今回はUbuntu Server 14.04 LTS 64bitのインスタンスを作成したいので、「ami-bddaa2bc」としました。

aws.ami = "ami-bddaa2bc"

f:id:tarosay:20140622033130p:image:w320


override.ssh.username

override.ssh.usernameは、sshログインするときのユーザー名です。選択したaws.amiによって決まっています。今回はUbuntu Server 14.04 LTS 64bitを選んだので、ユーザー名は「ubuntu」です。ユーザー名をインスタンスを作る前に調べる方法がわかりませんでした。一度、EC2インスタンスを作れば、Running中にConnectボタンが押せるようになるので、Connectボタンを押せばユーザー名を確認することができます。

override.ssh.username = "ubuntu"

f:id:tarosay:20140622040628p:image:w320


override.ssh.private_key_path

override.ssh.private_key_pathは、WindowsでVagrant ec2を試してみる(3) awsでのKey Pairs設定で保存したKey Pairsファイルのパスを指定するものです。今回は .sshフォルダにVagrantEC2.pemを保存しています。

override.ssh.private_key_path = "~/.ssh/VagrantEC2.pem"

aws.tags

aws.tagsはタグを指定するものですが、生成したインスタンスのNameをセットしてみました。インスタンスの名前にVagrantTestと表示されます。

aws.tags = { 'Name' => 'VagrantTest' }

ここで作成したVagrantfileをVagrantを起動するフォルダに置きます。

[]WindowsVagrant ec2を試してみる(5) vagrant-awsプラグインインストール 02:57

WindowsVagrant ec2を起動するためのaws上の設定は(4)までで全て終わりました。ここからは、Windows上での設定になります。


vagrant-awsインストール

vagrantプラグインであるvagrant-awsインストールします。GitBashを起動します。GitBashのインストールWindowsでVagrant ec2を試してみる(1) 事前環境作りに説明しています。

vagrant-awsを下記のようにしてインストールします。

$ vagrant plugin install vagrant-aws
Installing the 'vagrant-aws' plugin. This can take a few minutes...
Installed the plugin 'vagrant-aws (0.4.1)'!

$ vagrant plugin list
vagrant-aws (0.4.1)
vagrant-login (1.0.1, system)
vagrant-share (1.1.0, system)

vagrant plugin listを取るとインストールされているのがわかると思います。


ダミーのBoxの生成

vagrant-awsを使用するときに、ダミーのBoxが必要となります。そこでダミーのBoxを生成します。ダミーのボックスはvagrant-aws作者さんのサイトから取得できます。

$ vagrant box add aws-dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
==> box: Adding box 'aws-dummy' (v0) for provider:
    box: Downloading: https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
    box: Progress: 100% (Rate: 139/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'aws-dummy' (v0) for 'aws'!

$ vagrant box list
aws-dummy                       (aws, 0)

次に、Vagrantfileの作成について書きたいと思います。

[]WindowsVagrant ec2を試してみる(4) awsでのSecurity Group設定 02:37

WindowsVagrant ec2を起動するために、Security Groupを設定する必要があります。既にEC2インスタンスを作成したことがあるのであれば、Security Groupが自動生成されていると思うので、それを使っても大丈夫です。

ここでは、新規にセキュリティーグループを作成してみます。


セキュリティーグループを設定する

EC2のメニューからSecurity Groupsを選択します。そして、Create Security Groupボタンを押します。

f:id:tarosay:20140622022702p:image:w320

Create Security Group画面が出てくるので、セキュリティーグループ名と説明と開くポートの設定をします。

f:id:tarosay:20140622022703p:image:w320

今回は、Security group nameは、VagrantEC2SecurityGroupを、Descriptionは、VagrantEC2 Security Groupを設定し、SSHアクセスを通素ようにしました。

Type:SSH、Protocol:TCP、Port Range:22、Source:Anywhereを設定しました。これでCreateボタンを押せば設定終了です。

[]WindowsVagrant ec2を試してみる(3) awsでのKey Pairs設定 01:35

WindowsVagrant ec2を行うために、Key Pairを生成する必要があります。その方法について書きます。


Avilability zoneの変更

awsサーバーをどこの地域のサーバーに作成するかを指定する必要があります。デフォルトではオレゴンになっていると思います。それをTokyoに変更したいと思います。これを変更しておかないと、Key Pairsなどはzoneごとに作成されるので、面倒くさくなります。

awsのサービスからEC2を選択します。

f:id:tarosay:20140622010124p:image:w320

画面右上にある地域を選択するメニューからAsia Pacific(Tokyo)を選びます。

f:id:tarosay:20140622013213p:image:w320


Key Pairsの生成

EC2のメニューからKey Pairsを選び、Create Key Pairボタンを押します。

f:id:tarosay:20140622010125p:image:w320

Key pair nameを聞いてくるので、名前を入れてCreateボタンを押すと、暗号キーが生成されてダウンロードできます。

f:id:tarosay:20140622010126p:image:w320

今回は、VagrantEC2と入れたので、VagrantEC2.pem というファイルが生成されました。


Key Pairsのフォルダ保存

生成したpemファイルをどこに保存してもいいのですが、とりあえず、GitBashのホームの .ssh2フォルダに保存しておこうと思います。

GitBashを起動します。GitBashのインストールWindowsでVagrant ec2を試してみる(1) 事前環境作りに書いています。

GitBashを起動後、下記のコマンドを実行して No such file or directory と表示されたなら、.sshフォルダが無いので、作成してください。

$ ls -l .ssh
ls: .ssh: No such file or directory

.ssh フォルダの作成。

$ mkdir .ssh

.ssh フォルダを生成したら、pemファイルをそこにコピーします。Windowsのフォルダを開いてコピーするのであれば、下記のように .ssh に入って、pwdコマンドを用いると、/c/Users/...とcドライブからのパスが表示されるので、.sshがどこにあるのかわかると思います。

$ cd ~/.ssh
$ pwd
/c/Users/minao/.ssh
$ ls -l
total 1
-rw-r--r--    1 minao    Administ     1692 Jun 22 00:58 VagrantEC2.pem

pemファイルがコピーされていれば、lsコマンドで確認できます。

[]WindowsVagrant ec2を試してみる(2) awsでのアクセスキー設定 00:49

Vagrant ec2を使うために、先にawsで設定しておかなければならないことがあるので、それを書いておきます。


IAMの設定

ec2Vagrantから使うためには、aws.access_key_id と aws.secret_access_key を用意する必要があります。これが何なのか、わからなくて長く悩んでいたのですが、ec2とは関係なくてIAMで生成するということがわかりました。

AWS IAM のご利用開始にあたって というビデオを見ると、生成方法が良くわかります。

先ず、AWSのサービスからIAMを選びます。

f:id:tarosay:20140621200725p:image:w320

次に、Create New Group of Usersボタンを押します。

f:id:tarosay:20140621200726p:image:w320

グループ名を入力します。とりあえずAdministratorsにしました。Continueを押します。

f:id:tarosay:20140621200727p:image:w320

グループのパーミッションを聞かれるので、自分しかいないので、Administrator Accessを選択しました。

f:id:tarosay:20140621200728p:image:w320

ポリシー名はデフォルトContinueを押します。

次にユーザーを作る必要があるので、ユーザー名を聞かれます。Vagrantからec2にアクセスするときのユーザ名を入力します。

このとき、Generate an access key each Userのチェックは外します。

f:id:tarosay:20140621200729p:image:w320

ユーザ名を入力すると、「Group Name」「Permissions」「User Names」が表示されるので、OKならばContinueを押します。

これで、Vagrant ec2で用いるaws.access_key_id と aws.secret_access_key を取得する準備が整いました。


パスワードポリシーの変更

今回は生成したユーザーでawsログインする予定は有りませんが、とりあえずパスワードポリシーをデフォルトから変更しておきます。

最低パスワード長を8文字にして、Requireに全てチェックをいれます。

f:id:tarosay:20140622002506p:image:w320

これでApply Password Policyボタンを押します。


アクセスキーとシークレットアクセスキーの生成

いよいよ、aws.access_key_id と aws.secret_access_keyを生成します。

Usersを選択すると作成したユーザーが表示されるので、ユーザーをチェックしてUser ActionsのManage Access Keysを選びます。

f:id:tarosay:20140622002505p:image:w320

Create Access Keyボタンを押します。

f:id:tarosay:20140622003924p:image:w320

アクセスキーとシークレットアクセスキーが自動生成されるので、これをDownload Credentialsボタンを押して保存します。

f:id:tarosay:20140622003925p:image:w320

以下のようなcredentials.csvファイルが保存されたと思います。

User Name,Access Key Id,Secret Access Key
"tarosay",ここにアクセスキー,ここにシークレットアクセスキー

User Nameは生成したユーザ名です。続いてアクセスキーとシークレットアクセスキーが書かれています。

これが、Vagrant ec2で使用するアクセスキーとシークレットアクセスキーです。

次に、override.ssh.private_key_pathに必要なKey pairを生成したいと思います。

[]WindowsVagrant ec2を試してみる(1) 事前環境作り 17:58

 最近、awsec2を使い始めました。Vagrant ec2というVagrantec2インスタンスをコントロールできるプラグインがあるので、Vagrantからec2インスタンスを作成してみるまでをまとめてみました。というか、このブログを書きながら試しています。

VagrantVirtualBoxインストール

すいません。VagrantVirtualBoxインストールされていて、WindowsVagrantが動く環境ができているというところからスタートしたいと思います。

WindowsVagrantを動かす方法などは、Windows7にVirtualBoxとVagrantをインストールしたメモサイトさん等を参考にしてください。

先ずは、事前準備です。WindowsコマンドプロンプトからVagrantを使うよりも、linuxシェルから使ったほうが個人的には好きなので、bashが使える環境を作ります。

とりあえずGitインストールする

何故、Vagrantとは全然関係ないgitインストールするかというと、gitは便利だし覚えた方がいいと思うからです。すいません、それだけです。でもgitのMSYSからVagrantを使うことになります。

Windows用のgitとしてGit for Windowsインストールします。ダウンロードGit for Windowsから、下記のDownloadボタンを押します。

f:id:tarosay:20140621164759p:image:w320

GitBashのインストール

ダウンロードしたインストーラーを起動します。Nextを押します。

f:id:tarosay:20140621171501p:image:w320

Nextを押します。

f:id:tarosay:20140621171508p:image:w320

Nextを押します。

f:id:tarosay:20140621171507p:image:w320

Git Bash Hereを選択して、Nextを押します。

f:id:tarosay:20140621171506p:image:w320

Nextを押します。

f:id:tarosay:20140621171505p:image:w320

Use Git from the Windows Command Promptを選択します。

f:id:tarosay:20140621171504p:image:w320

Checkout as-is, Commit as-isを選択して、Nextを押します。

f:id:tarosay:20140621171503p:image:w320

Finishを押します。チェックをつけているとリリースノートが開きます。

f:id:tarosay:20140621171502p:image:w320

これでGitBashのインストール終了です。


GitBashのショートカット作成

GitBashのショートカットを作っておきましょう。たぶん、スタートメニュにあると思います。

f:id:tarosay:20140621172912p:image:w320

リンク先は、"C:\Program Files (x86)\Git\bin\sh.exe" --login -i

作業フォルダは、%HOMEDRIVE%%HOMEPATH%

です。

マウスの右クリックでペーストしたいので、簡易編集モードにチェックを入れます。

f:id:tarosay:20140621172913p:image:w320

最近、目が悪くなって、大きな文字でないと辛いので、フォントも大きくします。

f:id:tarosay:20140621172914p:image:w320

ウィンドウの高さも大きめにします。

f:id:tarosay:20140621172915p:image:w320


プロパティの設定は、こんなもんでしょうか。

日本語ファイル名を表示できるように

GitBashはそのままだと日本語ファイル名が化けます。気持ちが悪いので見えるようにします。

$ cd ~;ls -al

上のようにコマンドを打って、.bashrcファイルが無ければ作成します。

.bashrcファイルの作成

$ touch .bashrc

.bashrcファイルに下記の一行を追記します。

alias ls='ls --show-control-chars'

追記した後、GitBashを再起動するか、

$ source ~/.bashrc

すれば、日本語ファイル名が見えるようになります。

その他のGitBashに関する設定方法などは、WindowsのGitbashで、Githubをssh経由で操作できるようにセットアップしたなどのサイトを参照してください。

Windowsへの必要なもののインストールは終了しました。次に、awsで事前に設定しておかなければならないことが有るので、それらについて書いていきます。

2014-04-27

[][]Wakayama.rbのmrubyボード用Bluetooth基板 18:50

勢いで、Wakayama.rb mrubyボード(WRRB)用のBluetooth基板を作りました。初めてFusion PCBに基板を頼んでみました。発注して手元に届くまで2週間ちょっと掛かりましたが、安いからいいですね。

この基板、GR-KURUMIPocketDuinoでも使えるつもりで設計したのですが、設計をミスっていまして、一ヶ所パターンをカットしないと使えません。

既に何人かの知り合いに強引に配ってしまったので、どこをカットするのか説明を兼ねてブログに書いておきます。

Wakayama.rbボード用Bluetoothシールドとは

下がWakayama.rbで製作しているmrubyボード(写真右)とBluetoothシールド(写真中央)です。写真左側はGR-KURUMIです。

f:id:tarosay:20140427174804j:image:W320

Wakayama.rbのmrubyボードはGR-KURUMIとほぼピン互換となっています。このボートに直接刺さり、Bluetooth通信ができるものが今回作製したBluetoothシールドです。

GR-KURUMIはArduino MiniProピン互換なので、実はArduino MiniPro互換ボードで使えるはずです。

ただし、3.3V動作とボードなので、5Vを入れると壊れます。

間違いの修正箇所

このBluetoothボードですが、致命的な設計ミスがあります。それは、BluetoothモジュールのRN42のリセットラインとGR-KURUMIのGNDラインが接続されていることです。何故、こんなありえない間違いが起こったかといいますと、Wakayama.rbのmrubyボートは写真の向かって左側の列のピンにはリセットとGNDピンを用意していないのです。Wakayama.rbのmrubyボードに用いているRX63N MPUは使えるポートが多く、少しでもたくさん引き出そうとした結果、リセットとGNDの割り当てを一ヶ所だけに省略て設計しており、それが敗因となりました。

それでは、パターンカットの場所を示します。下の図に示すように、リセットに繋がっているパターンをカットしてください。基板自体はリセットラインをプルアップしているので、カットしても大丈夫です。

f:id:tarosay:20140427180527j:image:W480

使用パーツ

Bluetoothボードに使用しているパーツ一覧を書いておきます。

    • Bluetoothモジュール: RN42-I/RM(Microchip Technology): 写真を見てもわかると思いますが、いろいな通販で購入できると思います。
    • チップ抵抗 1608: 330Ω 2個
    • チップ抵抗 1608: 4.7kΩ 3個
    • チップコンデンサ 1608: 0.1uF 1個
    • チップLED 1608: 2個

Bluetooth基板の詳細資料はGithubにアップしています

Bluetooth基板の詳細資料

回路図PDFにしてアップしています。zipファイルはFusion PCBに送信したファイルそのままです。このまま発注すれば、同じボードが作製できます。

RN42のGPの説明は回路図に書いていますので参照してください。


おまけ回路

このBluetoothボードには、おまけ回路が付いています。それは昇圧回路です。写真に写っているBluetoothシールドの上の部分に昇圧回路のパターンを入れています。実装した写真を下に示します。

f:id:tarosay:20140427182354j:image:W320

HT7733Aを使って、0.7Vくらいから3.3Vに昇圧できます。下は単4電池1本で、GR-KURUMIを動かしている写真です。GR-KURUMIは、もともと昇圧回路を内蔵しているので余り意味無いですが、GR-KURUMIの昇圧回路を使わないで動作しています。

f:id:tarosay:20140427182355j:image:W320

下はWakayama.rbのmrubyボードを動かしている写真です。上にあるLEDが点滅しています。

f:id:tarosay:20140427182356j:image:W320

HT7733Aの出力は200mAなので、これでWakayama.rbのmrubyボードとRN42を動かせるかどうか自信がないので、おまけ回路としました。

おまけ昇圧回路の部品実装

部品の実装は下の図を参考にしてください。

f:id:tarosay:20140427182357j:image:W480

上のテスト実装回路ではダイオードは適当なものをつけています。上図のものではないです。インダクタは47uHで昇圧できています。また、出力側のコンデンサは100uFを付けると、Wakayama.rb mrubyボードが安定して動作しました。

まっ、おまけ回路なので、適当に遊んでみてください。

2014-01-23

[]mrubyでのバイナリの扱い その2 17:23

以前のブログ文字列でバイナリを扱えることを書きましたが、これを書いたことすら忘れてしまって、また、バイナリについて悩んでしまったので、さらに、防備録として書いておきます。

mrubyで.hexは使えない

Ruby 16進数 変換」で検索すると、16進数は.hexで変換できると出てきます。

print '80'.hex #=> 128 ただし、mrubyでは使えません。

これでいいのかと思って、mrubyで .hexを使ってみましたが使えませんでした。16進数表記は、0x を付ければいいだけ。

16進表記は0xを付ける

Rubyの場合もC言語などと同じで、頭に0xを付ければ16進数となります。

print 0x80 #=> 128

 より、詳しくは、先のブログで・・・。

2013-12-29

[]FDTを用いてGR-SAKURAmotファイルを書き込む E1経由編 17:26

E1を買った云々と書きながら、先にUSB編を書いてしまいました。ここではE1経由でGR-SAKURAmotファイルを書き込む方法を書きます。

FDT(Flash Development Toolkit)のダウンロードは、先のUSB編で書きましたのでそちらを見てください。

試しに、書いてみるGR-SAKURAの元ファーム「Gr_sakura_fw_rev1.mot」のダウンロードについても、先のUSB編で書きましたのでそちらを見てください。


E1経由のmotファイルの書き込み方法

E1を買った目的がHEWを使ってGR-SAKURAプログラムを作ったりデバッグしたりするということでしたので、ルネサスからe1e20rxfullv10300.exeとccrxv102r01_ev.exeダウンロードしてインストールします。ダウンロードについては西村さんのブログに詳しく書かれています。


GR-SAKURAとE1とUSBケーブルを接続する

GR-SAKURAJTAGのポートにヘッダピンを付けてE1と接続します。また、E1とUSBケーブルを接続します。FDTとE1E20RXが正常にインストールできていれば、Windows7の場合ですが、USBドライバは自動で認識されると思います。

f:id:tarosay:20131229163549j:image:w640


FDTの設定

FDTを起動して新規設定を選びます。初めての場合は、自動的に新規設定画面になるかもしれません。

f:id:tarosay:20131229153031j:image:w320

デバイスカーネルの選択は、一番下の「Generic BOOT Device」を選びます。「次へ」を押します。

f:id:tarosay:20131229154427j:image:w320

通信ポートの選択は「E1 Direct」を選びます。「次へ」を押します。

f:id:tarosay:20131229163800j:image:w320

電源の供給は、3.3Vを供給する場合は下のように設定して「OK」を押します。

f:id:tarosay:20131229163801j:image:w320

ピン設定は、GR-SAKURAの場合、MDはLOW、EMLEもLOW、UBもLOWなので、下図のような設定になります。チェックを入れたら「OK」を押します。

 io0 (EMLE)    - LOW
 io2 (PC7/UB)  - LOW
 io3 (MD)      - LOW

f:id:tarosay:20131229163802j:image:w320

E1と接続している場合は下のメッセージが出ます。「OK」を押します。

f:id:tarosay:20131229165834j:image:w320

E1のシリアルのようなものが表示されるので「OK」を押します。

f:id:tarosay:20131229165835j:image:w320

デバイスを聞いてくるので、RX600シリーズのLittieEndianで「OK」を押します。

f:id:tarosay:20131229165836j:image:w320

そうすると、汎用デバイスの確認がすべて通ります。

f:id:tarosay:20131229165837j:image:w320

OKするとクロックの設定画面が出ます。入力クロックは12MHz、メインクロックの逓倍比を 8、周辺クロックの逓倍比を 4として「次へ」を押します。

  入力クロック                 - 12.00MHz
  メインクロックの逓倍比(CKM)  - 8
  周辺クロックの逓倍比(CKP)    - 4

f:id:tarosay:20131229165838j:image:w320

接続タイプはこのままで「次へ」を押します。

f:id:tarosay:20131229165839j:image:w320

書き込みオプションはこのままで「次へ」を押します。

f:id:tarosay:20131229165840j:image:w320

リセットピンセッティングは何もせずにこのままで「完了」を押します。

f:id:tarosay:20131229165841j:image:w320

設定が終わって、E1接続が完了します。

f:id:tarosay:20131229165842j:image:w320


E1経由で書き込む

「File Selection」の 「User / Data Area」にチェックして右向き黒三角ボタンを押し、書き込むmotファイルを指定します。今回書き込むのは「Gr_sakura_fw_rev1.mot」です。

f:id:tarosay:20131229155656j:image:w320

スタートを押すと書き込みが始まります。38400bpsなので少し時間が掛かります。

f:id:tarosay:20131229172012j:image:w320

しばらくすると終わります。

f:id:tarosay:20131229172013j:image:w320

後は、デバイスとの切断を押すと下の画面が出て「OK」を押すとE1接続が切れます。

f:id:tarosay:20131229172014j:image:w320

接続が切れた画面

f:id:tarosay:20131229172015j:image:w320

これでmotファイルの書き込み終了です。E1コネクタを抜いてGR-SAKURAを起動してください。もしくはHEWを立ち上げてデバッグもできます。

[]FDTを用いてGR-SAKURAmotファイルを書き込む USB16:18

ずいぶん前に買ったルネサスのE1エミュレータがありまして、今まで箱から出していなかったのですが、GR-SAKURAにつないで遊んでみようと使い始めました。とりあえず、motファイルをGR-SAKURAに書き込むところを防備録として書いておきます。


FDT(Flash Development Toolkit)のダウンロード

FDT(フラッシュ開発ツールキット)の無償評価版をルネサスのサイトからダウンロードします。2013/12/29現在では「フラッシュ開発ツールキット V.4.09 Release 02」が最新でした。インストールしてください。


GR-SAKURAの元ファームを書きこんでみる

試しに、GR-SAKURAの元ファームである「Gr_sakura_fw_rev1.mot」を書き込んでみたいと思います。Gr_sakura_fw_rev1.motRenesas Rulzサイトに有ります。ダウンロードしてください。


E1を使わないmotファイルの書き込み方法

なんと、GR-SAKURAmotファイルを書き込むためには、E1が必要だと思っていたのですが、E1を使わなくてもUSB経由で書き込めることがわかりました。

ということは、間違ってGR-SAKURAに初めから入っているファームを壊してしまっても、ルネサスから無償のFDTをダウンロードしてくるだけで、元のファームに書き戻すことができるのですね。知りませんでした。


GR-SAKURAUSBケーブルを接続する

今まで謎だったGR-SAKURAについているスイッチの意味がわかりました。このスイッチを通常と反対側(写真参照)にスライドするとUSB経由でのファーム書き込みモードになります。回路的にはMDピンがLOWに落ちます。そして、GR-SAKURAUSBケーブルを接続します。FDTが正常にインストールできていれば、Windows7の場合ですが、USBドライバは自動で認識されると思います。

f:id:tarosay:20131229153030j:image:w320


FDTの設定

FDTを起動して新規設定を選びます。初めての場合は、自動的に新規設定画面になるかもしれません。

f:id:tarosay:20131229153031j:image:w320

デバイスカーネルの選択は、一番下の「Generic BOOT Device」を選びます。「次へ」を押します。

f:id:tarosay:20131229154427j:image:w320

通信ポートの選択は「USB Direct」を選びます。「次へ」を押します。

f:id:tarosay:20131229154428j:image:w320

GR-SAKURAと接続している場合は下のメッセージが出ます。「OK」を押します。

f:id:tarosay:20131229154429j:image:w320

GR-SAKURAのVID等が表示されるので「OK」を押します。

f:id:tarosay:20131229154430j:image:w320

デバイスを聞いてくるので、RX600シリーズのLittieEndianで「OK」を押します。

f:id:tarosay:20131229154431j:image:w320

そうすると、汎用デバイスの確認がすべて通ります。

f:id:tarosay:20131229154432j:image:w320

OKするとクロックの設定画面が出ます。12MHzで「次へ」を押します。

f:id:tarosay:20131229155654j:image:w320

書き込みオプションはこのままで「完了」を押します。

f:id:tarosay:20131229155653j:image:w320

設定が終わって、USB接続が完了します。

f:id:tarosay:20131229155655j:image:w320


USB接続で書き込む

「File Selection」の 「User / Data Area」にチェックして右向き黒三角ボタンを押し、書き込むmotファイルを指定します。今回書き込むのは「Gr_sakura_fw_rev1.mot」です。

f:id:tarosay:20131229155656j:image:w320

スタートを押すと書き込みが始まり、あっという間に終了します。

f:id:tarosay:20131229155657j:image:w320

後は、デバイスとの切断を押すと下の画面が出て「OK」を押すとUSB接続が切れます。

f:id:tarosay:20131229155658j:image:w320

後は、GR-SAKURAのスライドスイッチを元に戻せばファームの書き込み終了です。結構、簡単でした。

続けて、E1経由編を書きたいと思います。

2013-10-14

[]バイナリファイルをアップロードする 22:58

mrubyをいじり始めてRubyに興味を持ち、最近、Railsをいじり始めました。

Railsも難しくてなかなか勉強も捗りませんが、やったことを自分の防備録として書いておきます。

スマホなどからサーババイナリファイルをアップロードしたかったので、その方法を調べてようやくできたので書いておきます。

使用しているバージョンは下記です。

$ ruby --version
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]

$ rails --version
Rails 3.2.14

Railsアプリケーションを作る

今回はchotplusというアプリケーションを作成します。生成されたらフォルダに入ります。

$ rails new chotplus
$ cd chotplus

Gemfileの修正

ファイルのアップロードに'Carrierwave'を使うので、gem 'carrierwave'を追記します。後、gem 'therubyracer'のコメントを外します。

   gem 'therubyracer', :platforms => :ruby
  gem 'carrierwave'

Bundleする

Gemfileの修正が終わったら、bundle installします。

$ bundle install

Java Scriptを有効にする

Java Scriptを有効にするため/config/environments/production.rbを修正します。

config.serve_static_assets = true にします。

# Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = true

バイナリアップロードする受け皿を生成する

バイナリアップロードときに指定するカラムを設定します。

$ rails g uploader runningrecord

runningrecordというカラムを設定しました。これにより、app/uploaders/にrunningrecord_uploader.rbが生成されています。

$ ls -l
合計 2
-rwxrwxrwx. 1 root root 1510 1014 12:13 2013 runningrecord_uploader.rb

runningrecord_uploader.rb の中身(コメントは省略)。CarrierWave::Uploader::Baseを継承したRunningrecordUploader クラスができて、保存される場所が書かれています。

# encoding: utf-8
class RunningrecordUploader < CarrierWave::Uploader::Base
  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

Controller、View、Modelを自動生成する

scaffoldを用いて、Controller、View、Modelを自動生成します。先に作成した「runningrecord」カラムは必ず必要です。logという名称にしました。

$ rails g scaffold log name:string title:string: datetime:string runningrecord:string temp:string

下記のようなデータベースが生成されることになります。

class CreateLogs < ActiveRecord::Migration
  def change
    create_table :logs do |t|
      t.string :name
      t.string :title
      t.string :datetime
      t.string :runningrecord
      t.string :temp

      t.timestamps
    end
  end
end

データベースを作成する

データベースを生成します。

$ rake db:migrate

モデルにmount_uploaderを追記する

app/models/log.rb に uploaderを追記します。RunningrecordUploader は、runningrecord_uploader.rbのクラス名です。

class Log < ActiveRecord::Base
  attr_accessible :datetime, :name, :runningrecord, :temp, :title
  mount_uploader :runningrecord, RunningrecordUploader
end

Viewの_form.html.erbを修正する

ファイルをアップロードできるように、app/views/logs/_form.html.erb を修正します。

<%= f.text_field :runningrecord %>を、<%= f.file_field :runningrecord %>に変更します。

  <div class="field">
    <%= f.label :runningrecord %><br />
    <%= f.file_field :runningrecord %>
  </div>

日本語ファイル名を扱えるようにする

CarrierWaveは、そのままでは日本語ファイル名を扱えないので扱えるようにします。config/initializers フォルダに carrierwave.rb というファイルを作成して、下記の1行の内容を書きます。

CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/

これで日本語ファイル名が扱えるようになります。

rails server

rails serverを起動して確かめます。

$ rails server

http://localhost:3000/logs にアクセスすると下記のような画面が出ました。

f:id:tarosay:20131014225042j:image

New Logをクリックすると入力画面になりました。

f:id:tarosay:20131014225043j:image



アップロードしたファイルをダウンロードする

試しにtest.logファイルをアップロードしました。

f:id:tarosay:20131014225044j:image

ダウンロードするには、runningrecord カラムにそのままのURLが表示されているので、それをhttpプロトコルで指定して呼び出せばOKです。

この場合は、http://localhost:3000/uploads/log/runningrecord/4/test.log を呼べばいいことになります。


以上、Railsでファイルのアップロードダウンロードを行う方法を防備録として書きました。