RaspberryPi のGPIO

RasPiは普通 Linux で動かすので、GPIOのレジスタを直接アクセスすることはない。

また、CPUはARM Cortex-A53 であり、MMUを持っている。物理アドレス論理アドレスに変換し、ページングされたメモリ空間がOSからアプリに渡される。

 

GPIOやタイマ、ADCなどの他のペリフェラルは、それぞれの制御レジスタ・データレジスタを持っている。メモリマップドIOでメモリ空間にマッピングされている。

Broadcom BCM2837 のハードウェアマニュアルに記載があるらしい。

[BCM2837 ARM Peripherals]

https://web.stanford.edu/class/cs140e/docs/BCM2837-ARM-Peripherals.pdf

p5 に物理アドレスMMUと仮想アドレスの図があった。

 

/dev/mem はルート権限が必要で使いにくいので、RasPi には /dev/gpiomem が追加されている。こちらはルート権限は不要で、ユーザが gpio グループに所属していれば良い。そして、デフォルトの pi ユーザは gpio グループに所属している。

これは、RasPi固有の話で、Linux 全般に通じる話ではない。

 

疑似ファイルシステム sysfs は、Linux全般に通じる話。/proc 以下が整理がつかずわかりにくくなったため、 /sys が設計・実装されたらしい。知らなかった。(汗

/sys/class/gpio にアクセスすれば良いらしい。

qiita.com

RPi GPIO Code Samples - eLinux.org

 

tool-lab.com

tool-lab.com

karaage.hatenadiary.jp

 

Makefile と VSCode

MakefileVSCode はどちらも環境変数を参照することができる。なので、情報を共有・一元管理するには、環境変数を使えばよい。

ラズパイ用のパスを設定・リセットするスクリプトを用意する。セットスクリプトを実行したシェルで make を実行したり、VSCode を起動すれば、セットしたパスを使ってクロスコンパイラを呼び出せる。

【phoenix】ユーザリストアプリ

ToDoリストではないが、例題のコードを発見。

etc9.hatenablog.com

mix で postgres を使う方法の一例が分かった。

phoenixRuby on Rails と似た構造で Model-View-Controler なので、それぞれのコードを読んで、何をやっているのかみてみよう。

【Phoenix】インストール完了!

いろいろ手間取ったが、漸くインストールと動作確認完了!

shotat.hateblo.jp

最終的にはこのページの情報でうまくいった。

 

引っかかっていたのはデータベース。PostgreSQLMySQL が選べる。

Ubuntuにどちらのデータベースもインストールはしていたのだが。

データベースのユーザ登録だとか、データベースの作成だとか、やっていなかった。

 

また、ubuntu 16.04 LTS で用意されているDBはバージョンが古くて Phoenix とうまく通信できなかった。

いくつものウェブサイトを読んで真似したのだが、上手くいかず。最終的にうまくいったのが上記のサイトだった。

 

あとは、ToDoリストだとか、JSON API だとか、Webに例が見つかるものを真似するところから始めよう。

【ELM】Ubuntu 16.04 LTS へのインストール

普通にインストールしようとしたらエラーになった。

 

sudo npm install elm

Error extracting linux-x64.tar.gz - Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/elm/Elm-Platform'
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! elm@0.18.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the elm@0.18.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

で、ググったところ、下記の記事を発見。

qiita.com

sudo npm i -g elm --unsafe-perm=true --allow-root

 で、無事にインストールできた。

【Webシステム開発】Percel な時代が来るらしい

Webシステムの開発には、様々なツールを使わなければならない(らしい)。

で、Webpack やら Gulp やらを使うのが常道らしいのだが、使いこなすのが大変で、Parcel という後継ツールがでてきたらしい。

 

qiita.com

qiita.com

qiita.com

qiita.com