読者です 読者をやめる 読者になる 読者になる

めまいプログラマーの徒然

小脳出血でめまいをおこしている プログラマの忘備録

CentOS 7.3 に mruby をインストールする。

PCには CentOS 7.3 と Windows 10 をデュアブートでインストールしています。CentOS 側に mruby をインストールしてみます。

mruby は Github よりソースをダウンロードしてビルドします。(他の方法を知りません?)

先ず、必要なプログラムの準備。

ruby と bison が必要になります。

root になってそれぞれインストールします。

# yum install ruby

# yum install bison

git を使ってソースをダウンロードします。

git はインストールされていたのでそのまま使用します。

$ git clone https://github.com/mruby/mruby.git

Cloning into 'mruby'...
remote: Counting objects: 36077, done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 36077 (delta 36), reused 0 (delta 0), pack-reused 35999
Receiving objects: 100% (36077/36077), 7.90 MiB | 1.64 MiB/s, done.
Resolving deltas: 100% (22432/22432), done.

mruby ディレクトリが出来上がり、その中に無事、ダウンロードが完了しています。

$ cd mruby
$ ls -l
合計 120
-rw-rw-r--.  1 white white   861  1月 15 12:14 AUTHORS
-rw-rw-r--.  1 white white  2357  1月 15 12:14 CONTRIBUTING.md
-rw-rw-r--.  1 white white   176  1月 15 12:14 LEGAL
-rw-rw-r--.  1 white white  1061  1月 15 12:14 MITL
-rw-rw-r--.  1 white white   277  1月 15 12:14 Makefile
-rw-rw-r--.  1 white white   343  1月 15 12:14 NEWS
-rw-rw-r--.  1 white white  3866  1月 15 12:14 README.md
-rw-rw-r--.  1 white white  4673  1月 15 12:14 Rakefile
-rw-rw-r--.  1 white white   253  1月 15 12:14 TODO
-rw-rw-r--.  1 white white   542  1月 15 12:14 appveyor.yml
-rw-rw-r--.  1 white white   912  1月 15 12:14 appveyor_config.rb
drwxrwxr-x.  2 white white  4096  1月 15 12:14 benchmark
drwxrwxr-x.  2 white white  4096  1月 15 12:14 bin
-rw-rw-r--.  1 white white  3799  1月 15 12:14 build_config.rb
drwxrwxr-x.  3 white white  4096  1月 15 12:14 doc
drwxrwxr-x.  4 white white  4096  1月 15 12:14 examples
drwxrwxr-x.  3 white white  4096  1月 15 12:14 include
drwxrwxr-x.  3 white white  4096  1月 15 12:14 lib
-rwxrwxr-x.  1 white white 13468  1月 15 12:14 minirake
drwxrwxr-x. 36 white white  4096  1月 15 12:14 mrbgems
drwxrwxr-x.  2 white white  4096  1月 15 12:14 mrblib
-rw-rw-r--.  1 white white   615  1月 15 12:14 mruby-source.gemspec
drwxrwxr-x.  3 white white  4096  1月 15 12:14 src
drwxrwxr-x.  3 white white  4096  1月 15 12:14 tasks
drwxrwxr-x.  3 white white  4096  1月 15 12:14 test
-rw-rw-r--.  1 white white  1065  1月 15 12:14 travis_config.rb

その中に minirake がありますので実行します。

$ ./minirake 

ビルドが開始されます。

暫くすると bin 内にプログラムが出来上がっています。

-rwxrwxr-x. 1 white white 1536056  1月 15 12:17 mirb
-rwxrwxr-x. 1 white white 1048688  1月 15 12:17 mrbc
-rwxrwxr-x. 1 white white 1642472  1月 15 12:17 mrdb
-rwxrwxr-x. 1 white white 1524064  1月 15 12:17 mruby
-rwxrwxr-x. 1 white white 1255632  1月 15 12:17 mruby-strip

バージョンを確認してみます。

$ ./mruby -version
mruby 1.2.0 (2015-11-17)

 

 

vim (その3) & PuTTY 設定

 今年は正月からダウンしていました。昨年から vim を使うことが多くなり色々と設定を追加しています。今回も vim の設定を追加して少しでも快適に使おうとしています。(~/.vimrcに追加です。)

コメントの表示

vim を使っていて見にくくなるのがコメント表示です。# から行末までが青色で目をこらして画面を見ることになります。.vimrc に

hi Comment ctermfg=Green

の1行を追加するとコメントは緑色で表示されグッと見やすくなります。

f:id:xskawabe:20170111175918p:plain

10 key を有効とする。

vim を使う時は PC から PuTTY でログインすることが多いです。数字の入力が連続する場合は うっかりと 10 Key を使ってしまいます。shell の場合は 10 key でもOKなのですが vim 使っていると数字が入力されません。こんな場合は PuTTY の設定を行えば 10 Key を使うことが出来ます。

PuTTY 設定

端末--> 高度な設定

    □ アプリケーションキーパッドモードを無効にする(K)

にチェックを付加すれば 10 Key が使えます。

f:id:xskawabe:20170111180932p:plain

vim (その2 - ファイラー)

Linux を使っているとファイル名やディレクトリ名を入力するのですが、1文字間違うと反応してくれません(そんな名前は無いよ!: No such file or directory といわれてしまう。) TAB で補完すればいいだけど。似通った名前でうろ覚えだと、なかなか目的のファイルを修正するのに時間がかかってしまう。

そんな時は vim に組み込まれている Netrw ( ファイラー)を活用して作業を早く済ませてしまいましょう。

vim . (vimの後にスペースとピリオッドを入力して Enter を押す。)

これでカレントディレクリのファイルやディレクトリの一覧が表示される。あとは目当てのファイルをカーソルキー(,, J , K) で選択すればOK, もちろんディレクトリを選択すれば、そのディレクトリのファイル一覧が表示される。

ファイル一覧を表示中に i キーを押せば、その都度表示形式が替わる。

f:id:xskawabe:20161219202722j:plain

 

CentOS の /etc を表示した場合。

DOS の頃の FD を思い出す!

vim その1

久しぶりに Blog 更新

暫く、Linux (Fedora , CentOS, Ubuntu ) にハマって(嵌められて)いた。Linux では色んな設定をエディターで行うが、OSインストール直後は vi (vim) を使うことが多い。GUIだと、gedit, kate 等(私は Geany が気に入っています。)しかし、CUI で起動することが多いので vim を使うことが多くなっています。なので vim を使い易くしようと、色々、調べてみました。そうすると $(HOME) に .vimrc があり、そこに各種設定を追加すればいいらしい。でも、そんなファイルは存在しないけど、と半分、諦めていたのですが。無ければ作ればいいと。どこかの blog で見た記憶があったので。ダメ元で作ってみました。(おかしなことになれば OS 再インストールすればいいや!)

ホームディレクトリで vi .vimrc とやって作ってみました。

中身は以下のとおり。

"Tab をスペース4に設定する。
set tabstop=4
set autoindent
set expandtab
set shiftwidth=4

"########### 表示追加 ############
set number "行番号追加

 

その後、vim でファイルを開くと行番号がデフォルトで表示されタブ数も 4 になり、起動が少し楽になりました。(以前は起動直後に :se number で番号を表示していまいした。)

root の管理下では上記の.vimrc は無視されてしまうので /root の配下に .vimrc を作ってみました。こうすれば root になって実行してもOK! また、sudo vi XXXX でもOKでした。

sshd_config なんか編集するのに楽だ。

MSP432 (Cortex-M4F)

MSP432 基板が手に入ったので、まずLチカをやってみます。コンパイラーは TI社からリリースされている CCS を使って見ます。中身は Eclipse です。
ダウンロード先は

Download CCS - Texas Instruments Wiki

インストールは特に意識することなく簡単にインストールできました。
(注意点はウイルスチェックが動いていると警告が出ます。私はウイルスチェックを
一時、外してインストールしました。)
インストールの解説はこちら

CCS マニュアル | CCSv6 インストレーションガイド | TI

f:id:xskawabe:20160707201633j:plain

 3色LEDがあるのでこれを点滅させてみる。

まず、サンプルを動かしてみる。

Devices → MSP432P4xx → MSP432P401R(CMSIS) と選択する。

f:id:xskawabe:20160707203354p:plain

プロジェクト名で「msp432p401_1」を選択する。

f:id:xskawabe:20160707203827p:plain

サンプルの main 関数が見えます。

f:id:xskawabe:20160707204039p:plain

LED1 ( Red のみ) の点滅です。以下のように3色LED の点滅を追加し、ビルドします。

#include "msp.h"
#include <stdint.h>
#define RGB_LED_WAIT 100000
#define RGB_OFF_WAIT 100000
int main(void) {
    volatile uint32_t i;

    WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD;               // Stop WDT
    P1->DIR |= BIT0;                          // P1.0 set as output

    P2->DIR |= BIT0;                          // P2.0 set as output (Red)
    P2->DIR |= BIT1;                          // P2.1 set as output (Green)
    P2->DIR |= BIT2;                          // P2.2 set as output (Blue)

    while (1)                               // continuous loop
    {
        P1->OUT ^= BIT0;                    // Blink P1.0 LED
        for (i = 20000; i > 0; i--);        // Delay

        P2->OUT = 0x0000 ;
        P2->OUT = 0x0001 ;                    // Blink P2.0 LED (Red)
        for (i = RGB_LED_WAIT; i > 0; i--);   // Delay
        P2->OUT = 0x0000 ;
        for (i = RGB_OFF_WAIT; i > 0; i--);   // LED All Off Delay

        P2->OUT = 0x0002 ;                    // Blink P2.1 LED (Green)
        for (i = RGB_LED_WAIT; i > 0; i--);   // Delay
        P2->OUT = 0x0000 ;
        for (i = RGB_OFF_WAIT; i > 0; i--);   // LED All Off Delay

        P2->OUT = 0x0004 ;                    // Blink P2.2 LED (Blue)
        for (i = RGB_LED_WAIT; i > 0; i--);   // Delay
        P2->OUT = 0x0000 ;
        for (i = RGB_OFF_WAIT; i > 0; i--);   // LED All Off Delay
    }
}

ビルドが成功すれば RUN → Debug でプログラムはターゲットボードに転送され、

int main ( void ) で停止しています。Run → Resume でプログラムが走りだします。

 

Go クロスコンパイル

Go 言語にはクロスコンパイルの機能が備わっているので同じソースから ARM 用の実行プログラムを作ってみます。

 おなじみの New3 フォルダーにある main.go です。

f:id:xskawabe:20160518143403p:plain

 設定を変えるのは ↓ の system となっているのをターゲットに合わせて変更するだけです。今回は Raspberry Pi B+ をターゲットとしました。

f:id:xskawabe:20160518143528p:plain

cross-arm6 の内容は以下の通りです。

 f:id:xskawabe:20160518145313p:plain

New3 を cross-arm6 でビルドすると New3 (ELF形式)のファイルが出来上がりますので、そのファイルを Raspberry Pi B+ に転送します。今回は TeraTermSSH で接続していますので ファイルメニューの SSH SCP... を使って転送します。

f:id:xskawabe:20160518145819p:plain

転送しただけでは実行権限がないので付加して、実行します。

f:id:xskawabe:20160518145834p:plain

Raspberry Pi 上で実行できました。

 

 

Go デバッグ

Go のデバッグを始めます。

まず、ソースを読み込んでコンパイルし、文法上のエラーが無いことを確認します。

f:id:xskawabe:20160518132638p:plain

ブレーク(一時停止)するところを決めます。止めたい行にカーソルを移動し F9 を押します。(最近のデバッガーではダブルクリックでブレークポイントを設定できるのですが今回はまだできません。F9 を押してください。)

f:id:xskawabe:20160518132658p:plain

デバッグを開始します。F5 を押します。

 

プログラムの先頭で停止します。続いて[ 続行 ] F5 を押すとブレークポイントで停止します。

f:id:xskawabe:20160518132747p:plain

ブレークポイントで停止したとき 変数 タブをクリックすれば、現在の変数の値が見えます。[ Name | Value    |   Type ] は それぞれ

                i          3               int ................... となっています。(途中で止めた時)

f:id:xskawabe:20160518132956p:plain

どんどん、次へ進むとプログラムは終了し、結果は下段のデバッグ出力に表示されます。

f:id:xskawabe:20160518133140p:plain

その後、F5 を押しても すでにプログラムは終了しているので ( New3 がメモリ上から消えている)

Error! プロセスに書き込めませんでした

となります。