2018年12月29日土曜日

gogsの移動

以前から少しずつやっている自宅サーバーの環境移行。

gitリポジトリ保存用にgogsを使っているのだけど、これを移動させたいと思う。gogsやmariadbバージョンが移行前後で随分違うからすごくハマった。

移行元の環境

かなり昔に構築したため、詳細は全く覚えていない。

  1. gitというユーザーがある

  2. /home/gitにgogsとgogs-repositoriesがある

  3. インストールしていたバージョンは「gogs_v0.9.13_linux_386.tar.gz」みたい。。

  4. /etc/systemd/system/gogs.serviceがある

  5. DBはMariaDB 5.5.45を使用

上記から、おそらく

https://gogs.io/docs/intro/faqs#how-do-i-run-gogs-at-startup-with-systemd%3F

あたりを参考にインストールしたのではないかと思う。

データの引き継ぎについて

このあたりに詳しく書いてあった。コピペでできるのか・・

https://gogs.io/docs/upgrade/upgrade_from_binary

移行先での作業

ユーザー作成

ここでいうユーザーはgogsを起動するユーザー。

gogsのページだとgitになっている。


adduser git

gogsのダウンロード

https://dl.gogs.io/0.11.79/gogs_0.11.79_linux_amd64.zip

/home/gitに展開する。

所有者をgitにしておく。

DBサーバーの準備

mariaDB 10.1.34を使用することにした


apt-get install mariadb-server

apt-get install mariadb-client

rootのパスワード忘れたぁOrz

やれやれ・・・。

https://qiita.com/y1row/items/994ecf8b478b7aac4c7d

https://ips.nekotype.com/3426/

https://better-coding.com/solved-xterm-256color-unknown-terminal-type/

gogs用のデータベースとユーザーの作成


create user 'gogs'@'localhost' identified by '<password>';

create database gogs_git;

grant all on gogs_git.* to 'gogs'@'localhost';

データの移行

先述のデータの引き継ぎ方法にしたがって作業を行う

gogsとgogs-repositoriesを移行元からコピー

移行元から移行先にコピー


scp -r gogs git@移行先:/home/git/gogs_old

scp -r gogs-repositories git@移行先:/home/git/

続いて移行先で


cp -R gogs_old/custom gogs/

cp -R gogs_old/data gogs/

cp -R gogs_old/log gogs/

DBの移行

移行元で


mysqldump -u root -p gogs_git > gogs_bkup.dump.sql

移行先で


mysql -u gogs -p gogs_git < gogs_bkup.dump.sql

これでコピー完了。

テスト起動

コピーが終わったので、テストで起動してみる

gitユーザーで


./gogs web

でlocalhost:3000にアクセス・・・あれタイムアウト。。

切り分け

そもそもデータを引き継がない場合に、ちゃんと起動するか

起動自体はしたが、インストール画面で

Error 1071: Specified key was too long; max key length is 767 bytes

な、なんだこれ???

あーめんどくせー。ぐぐってみたら

https://github.com/gogs/gogs/issues/4992

この通りやってみたら、とりあえずログイン画面まで行けた。

ということは、データを引き継いだ場合もこの手順でいけるのかな?

ということで、同じ手順でやってみたらログイン画面・ログイン後のダッシュボードなどなど行けた。

自動起動設定

移行元の設定と同じような記載があったので、この通りにやってみる。

https://gogs.io/docs/intro/faqs#how-do-i-run-gogs-at-startup-with-systemd%3F


# cat /etc/systemd/system/gogs.service

  

[Unit]

Description=Gogs (Go Git Service)

After=syslog.target

After=network.target

After=mysqld.service

  

[Service]

# Modify these two values and uncomment them if you have

# repos with lots of files and get an HTTP error 500 because

# of that

###

#LimitMEMLOCK=infinity

#LimitNOFILE=65535

Type=simple

User=git

Group=git

WorkingDirectory=/home/git/gogs

ExecStart=/home/git/gogs/gogs web

Restart=always

Environment=USER=git HOME=/home/git

  

[Install]

WantedBy=multi-user.target

自動起動テスト


systemctl enable gogs

>Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.

systemctl start gogs

systemctl status gogs

● gogs.service - Gogs (Go Git Service)

Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: ena

Active: active (running) since Sat 2018-12-29 00:46:16 JST; 9s ago

Main PID: 6978 (gogs)

Tasks: 8 (limit: 4915)

CGroup: /system.slice/gogs.service

└─6978 /home/git/gogs/gogs web

  

12月 29 00:46:16 blackcube systemd[1]: Started Gogs (Go Git Service).

12月 29 00:46:16 blackcube gogs[6978]: 2018/12/29 00:46:16 [TRACE] Custom path:

12月 29 00:46:16 blackcube gogs[6978]: 2018/12/29 00:46:16 [TRACE] Log path: /ho

12月 29 00:46:16 blackcube gogs[6978]: 2018/12/29 00:46:16 [TRACE] Log Mode: Fil

12月 29 00:46:16 blackcube gogs[6978]: 2018/12/29 00:46:16 [ INFO] Gogs: Go Git

systemdに登録できて、起動できたので、これで移行完了!!

つかれたー。空き時間でやっていたから思い立ってから1か月もかかった。Orz.

2018年11月28日水曜日

VSCodeでMarkdown

VSCodeでMarkdown

Markdown環境にBoostnoteを使おうを思ったけど、VSCodeにしたという話。

はじめに

MarkdownとUMLに触れる機会が出てきたので、何か良い環境が無いかと探していたら、Boostnoteというものを見つけた。

やりたいことは、

1.各種メモとプログラムコードをシンタックスハイライトで見やすく残したい

2.UMLやシーケンス図の作成

3.Markdown→HTMLにして、Blog投稿

4.オフライン環境やネット規制がかかっている環境でも使いたい

最初の2つは、そのままできそう。

Blog(Blogspot)はどうやれば良いのか。

いい感じに装飾して欲しいし、画像やgistの引用もしたい。

と、思っていたのだけど、4が曲者で、BoostnoteのUML(Plantuml)が外部(platumlサーバー)に通信しているため、オフライン環境では使えない??

uml diagram

というような表示になってしまう。

そこで、オフラインでなんとかしようと方法を探してみた。

PlantUMLのローカルインストール

このあたりに

The servlet for server side

GitHub - plantuml/plantuml-server: PlantUML Online Server

方法としては、

1.docker

2.maven

というのがあるみたい。

お出かけ用のネットブックで使うこともあるので、dockerは難しいと思う。


git clone https://github.com/plantuml/plantuml-server.git

apt-get install maven

apt-get install libjetty9-java

cd planyuml-server

mvn jetty:run -Djetty.port=9999

で何やらインストールが始まった。

でさっきの「http://www.plantuml.com/plantuml 」を

http://localhost:9999 」に変えてみる。


ソース・オプション5は現在サポートされていません。

6以降を使用してください。

Orz…挫折。

Boostnoteの使用感が良かったので、ちょっと悲しいけど、

あまり時間をかけたくなかったので、VSCodeに変更。。。

VSCodeでMarkdown環境を構築

VSCodeにしたら情報がたくさんある。

「2」に関しては、PlantUMLで無く、Mermaidを使うことにした。

ゴリゴリにUMLしたいわけでは無いので…。

Mermaidって、昔使ったことがあるような。結局同じようなことしかやっていないね。

http://continue-to-challenge.blogspot.com/2015/10/markdownmermaidjs.html

エクステンション

1.Markdown Preview Enhanced

2.Prettier - Code formatter

3.markdownlint

もう以下の記事のまんま

https://qiita.com/kumapo0313/items/a59df3d74a7eaaaf3137

mermaidに関しての変更

大した変更じゃないけど、見やすくするために


Mermaid  theme, you  can  choose  one  from ["mermaid.css", "mermaid.dark.css", "mermaid.forest.css"]

MarkdownPreviewEnhancedのCSSカスタマイズ

コードブロック

ctrl+,で設定開いて、変更する。


Markdown-preview-enhanced: Code Block Theme

Code block theme. If `auto.css` is chosen, then the code block theme that best matches the current preview theme will be picked.

>monokai.css

本体

以下の説明の通り、ctrl+shift+pでコマンド入力開いて、

https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css


Markdown Preview Enhanced: Customize Css

を入力して、開いたstyle.lessにカスタマイズしたいcssを入力する。


/* Please visit the URL below for more information: */

/* https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */

  

.markdown-preview.markdown-preview {

// modify your style here

// eg: background-color: blue;

  

h1 {

color: #ff4f00;/*文字色*/

position: relative;

line-height: 1.4;

padding:0.25em 0.5em;

display: inline-block;

top:0;

}

  

h1:before,h1:after{

position: absolute;

top: 0;

content:'';

width: 8px;

height: 100%;

display: inline-block;

}

  

h1:before{

// border-top: dotted 1px #404040;

border-left: dotted 1px #404040;

// border-bottom: dotted 1px #404040;

left: 0;

}

  

h1:after{

content: '';

// border-top: dotted 1px #404040;

border-right: dotted 1px #404040;

// border-bottom: dotted 1px #404040;

right: 0;

}

  

h2 {

padding: 0.2em;/*文字周りの余白*/

color: #404040;/*文字色*/

background: #fffaf4;/*背景色*/

border-left: solid 10px #ff4f00;/*左線(実線 太さ 色)*/

border-bottom: dashed 1px #ff4f00;

}

  

h3{

color: #ff4f00;/*文字色*/

border-bottom: dashed 1px #ff0600;

}

  

h4 {

border-bottom: solid 2px #cce4ff;

position: relative;

}

  

h4:after {

position: absolute;

content: " ";

display: block;

border-bottom: solid 2px #5472cd;

bottom: -2px;

width: 10%;

}

}

メモ

シーケンス


title: Authentication Sequence

A->B: text

A->B: text

B->B: tesue

A->B: text

mermaid

クライアントサーバーデータベースデータ取得要求select発行select結果データ取得要求結果取得データ表示エラー表示alt[ 正常終了 ][ エラー ]クライアントサーバーデータベース

記載例は、以下URLのパクリです。

https://qiita.com/poro1985/items/b23bad93bf721a195f15

こんな感じ。

しばらくは、これでやってみようと思う。

Bloggerへの投稿

最初、いろいろな人がやっていることを真似してmarked.jsを考えたのだけど、表示するときにtextareaが見えてしまうのと、スマホ表示時にうまく表示されなかった(こっちはテーマを修正すれば良いような気がするけど・・)

なので、Blogger投稿時は、オンライン環境だと割り切って、オンラインサービスを使うことにした。

StackEdit

ネット上に情報が溢れているため、特に書くことはない。

以下がとても参考になった。

https://qiita.com/yonori/items/fe733aee419019fbacc4

2018年10月29日月曜日

Nextcloudを導入してみた

まとまった時間を確保するのは難しい。
でもスキマ時間を見つけて、いろいろやっている。続けることが大事。

家族からDropboxがいっぱいになってしまったとクレームが来た。
容量アップするか、他のクラウドサービスにするか、といろんな人が体験したような悩みに直面。
うちの使い方は
  1. 大事な写真・動画の保存
  2. 家族や親戚との共有
  3. ドキュメント類の同期
  4. LINEでは動画が何日かすると消えてしまう
のために使っている。
動画とか保存しだすと1Gとかあっという間なので、一杯になってしまうというのも、頷ける。。。

それぞれいろんなサービスを駆使したら解決できるのだろうけど、
勉強がてら、家サーバーで何かできないか調べてみた。
ちょうど、今のサーバー君が2010年くらいの代物なので、リプレースがてら環境構築してみた。

 メモ
現行 Atom N270 1.6GHz 1コア2スレッド 32bit メモリ:1GB
新規 AMD E-350 1.6GHz 2コア 64bit メモリ:8GB
あれ??あまりスペックアップしていないOrz

(まぁ64bit対応できているからいいか・・・)


ownCloudとNextcloud

歴史とかよくわからないけど、Nextcloudの方がダウンロードリンクが
分かりやすかったので、そっちにした。

インストール手順は以下にまとまっていた
https://docs.nextcloud.com/server/14/admin_manual/installation/source_installation.html#ubuntu-installation-label
0.前提条件
先述のAMD E-350という年代物・・・。これにMint 64bitをインストール。

1.必要なパッケージインストール 
apt-get install mariadb-server
apt-get install mariadb-client
apt-get install nginx
apt-get install php-fpm php-mysqlnd php-zip php-xml php-mbstring php-gd php-curl

2.mariaebのセットアップ
以下のセットアップを実行する
/usr/bin/mysql_secure_installation
rootユーザー設定
create user 'nextcloud'@'localhost' identified by 'パスワード';
create database nextcloud;
grant all on nextcloud.* to 'nextcloud'@'localhost';
これで、mariadbはOK
3.nginxのセットアップ
以下を変更し設定する
/etc/nginx/nginx.conf
/etc/nginx/sites-enabled/default
4.php-fpmのセットアップ
以下を変更し設定する
/etc/php/7.2/fpm/pool.d/www.conf
5.nextcloudのダウンロード
https://nextcloud.com/install/#instructions-server
https://download.nextcloud.com/server/releases/nextcloud-14.0.3.zip
以下のセットアップを実行するだけ
sudo -u www-data php occ  maintenance:install --database "mysql" \
--database-name "nextcloud"  --database-user "nextcloud" \
--database-pass "パスワード" \
--admin-user "admin" --admin-pass "あどみんパスワード"
これでおしまい。 こんな感じ

2018年7月16日月曜日

キャラクタ液晶に天気予報を表示する

暑い・・・。暑すぎる。

キャラクタ液晶の使い道を考えていた。
暑くて、天気予報が知りたくなった。

早速結果からだけど、こんな感じ


1. 天気予報を取得する

livedoorの天気予報サービスを利用させてもらう。
http://weather.livedoor.com/weather_hacks/webservice

都市は「東京」なので「http://weather.livedoor.com/forecast/webservice/json/v1?city=130010

JSONで応答してくれるみたい。
[forecasts][0][telop]に[晴のち曇り]
[forecasts][0][temperature][max][celsius]に[最高気温]

linuxボードにpythonとか入っていないので、awkとsedで頑張る!



2. 天気アイコンをアニメーションしたい

外字(CGRAM)は8種類しかないけれど、書き込むと表示中のものも変更された!
ということは、動的に変更できて、なんちゃってアニメーションできそう。


3. 表示

上段に「サイコウ キオン:●●°C」
下段に「テンキ:■■■■■」
■部分は、例えば「晴のち曇」なら
「晴アイコン」「ハレ」「→」「曇アイコン」「クモリ」

JSON出力はUnicodeで「晴のち曇」は「"\u6674\u306e\u3061\u66c7"」となる。
「のち」なら「→」、「時々」なら「/」とした。
外字は

外字は1s毎に書き換えを行い、アニメーションしてるっぽくした。
また、1時間毎に天気予報を更新する。
(今回は実験なので、この間隔にしたけど、長期に使う場合には、
 利用規約確認したり、迷惑かからないように12時間とか24時間とかのほうがいいかも)

ソース

使いそびれたパラレルキャラクタ液晶のSPI化(2/2)

前回からのつづき
制御用のFON2405E(LEDE・Openwrt)向けドライバ作成

1. SPI仕様

[0x01][コントラスト] ※コントラストは0x00〜0x06
[0x02][コマンド]  ※ RS=0 でLCDに出力
[0x03][データ]   ※ RS=1 でLCDに出力

http://akizukidenshi.com/download/ds/sunlike/SD1602HULB-XA-G-G.PDF
http://219.117.208.26/~saka/ham/LCD2/

2. ドライバ仕様

基本的には、MCP23S09の時と同じ。
キャラクタデバイスとして[/dev/ PicClcdDriver0]が作成される。
これに表示したい内容を流しこめばOK
一方で、各種制御は[/sys/bus/spi/drivers/PicClcdDriver/spi0.1/]に
lcd_clear:Clear Display(全表示クリア)
lcd_set_cgram:Set CGRAM address
lcd_set_ddram:Set DDRAM address
が作成される

3. 動作

insmod pic_clcd.ko
echo > /sys/bus/spi/drivers/PicClcdDriver/spi0.1/lcd_clear
echo -n HelloWorld! >  /dev/ PicClcdDriver0

英数字以外 例えば 「イ」とか
echo -ne "\xB2" > /dev/ PicClcdDriver0

外字CGRAM
0番目に「晴?」アイコン
echo 00411040E04110400 > /sys/bus/spi/drivers/PicClcdDriver/spi0.1/lcd_set_cgram



ドライバソースコード

使いそびれたパラレルキャラクタ液晶のSPI化(1/2)

ずっと昔にまとめ買いした「LCDキャラクタディスプレイモジュール」(秋月電子のSC1602BSLB-XA-GB-KとかSD1602HULB-XA-G-G)が使いそびれていた。
5Vだしパラレル入力だし・・・。
最近では、3VとかI2C通信のものが安価に出ている。
困った。 FON2405E(Linuxボード)は 3Vだし、今のところSPIしか使えていない。
そこで、PICマイコン使って
  • インターフェース変換(SPI to パラレル)
  • 3V駆動
  • SW入力
  • バックライト
を目指す。

先に結論↓ こんな感じで、Linuxボードから制御してみた。



1. インターフェース変換

SPI搭載の手持ちPICマイコン=PIC16F818 / 819 にした。
まぁシフトレジスタでも実現できるような気がするけど。
http://www.aitendo.com/product/14623
だけど3V駆動化とかSW入力とかやりたいので、今回はPICにこだわった。


2. 3V駆動

いろいろな方が実現している。感謝!
PICにてPWM出力し、チャージポンプにて負電圧を生成する。
最初に思いついた方すごいね!
http://elm-chan.org/docs/lcd/lcd3v_j.html
http://jsdiy.web.fc2.com/lcd3v/


3. SW入力

入力ピンが足りないので、アナログ入力+抵抗分圧にて。
こちらもいろいろな方が実現している。感謝。
https://synapse.kyoto/hard/keypad/page001.html


4. バックライト

バックライト駆動するためには4V 40mA程度必要っぽい。
2のチャージポンプでは賄えないか・・・。
要検討・・・。

んでもって、現状の回路図はこんな感じ。


ソースコード

2018年6月3日日曜日

MCP23S09制御用のFON2405E(LEDE・Openwrt)向けドライバ作成

気づけば、毎年同じようなことをやっているような気がするけど。。。
SPI接続のIOエキスパンダ(MCP23S09)を使う+ドライバ作成練習として
7セグ制御を行うドライバを書いてみた




0.前提

・カスタムファーム入りFON2405E
http://continue-to-challenge.blogspot.com/2018/02/fon2405eledeopenwrtspi.html
http://continue-to-challenge.blogspot.com/2018/02/fon2405eledeopenwrtspi144.html

・MCP23S09
3.3Vで動くSPI-IOエキスパンダ
https://www.microchip.com/wwwproducts/jp/MCP23S09


1.手順

(1)eclipceで空のプロジェクト作成
  Makefile project → Empty Project
(2)ソースファイル・Makefile作成
  ソースは末尾のgist参照、Makefileは


(3)ビルド
(4)ターゲットボードに転送
  scpとかで
(5)動作確認
  insmod /tmp/mcp23s09_7seg.ko


2.ソース


3.参考
 ・Raspberry Piで学ぶARMデバイスドライバープログラミング
 ・LINUXデバイスドライバ 第3版
 ・ci-bridge-spi
https://android.googlesource.com/kernel/msm/+/android-msm-hammerhead-3.4-kk-r1/drivers/misc/ci-bridge-spi.c
 ・spike
https://github.com/scottellis/spike/blob/master/spike.c


2018年5月21日月曜日

FON2405Eのフラッシュメモリを交換してOpenwrt導入

LEDEとOpenWrtが統合したらしいので、再度環境構築手順をまとめてみた。

以前の方法
http://continue-to-challenge.blogspot.jp/2017/11/fon2405eledeopenwrt.html
からあまり変更がないかもしれない。

手順0.フラッシュメモリ交換

リスクをとって簡略化した方法で

0.u-boot他を旧フラッシュからバックアップ

cat /dev/mtdblock0 > /tmp/mtdblock0.img  <Uboot>
cat /dev/mtdblock1 > /tmp/mtdblock1.img  <Config>
cat /dev/mtdblock2 > /tmp/mtdblock2.img  <RF>

1.通電状態でフラッシュを交換する(ハイリスク!)
cp /tmp/mtdblock0.img /dev/mtdblock0
cp /tmp/mtdblock1.img /dev/mtdblock1
cp /tmp/mtdblock2.img /dev/mtdblock2

手順1.OpenWrtのカーネルソース入手

ここは変更なし
git clone https://git.lede-project.org/source.git
./scripts/feeds update -a
./scripts/feeds install -a

手順2 FON2405E用にカスタマイズ・Device Tree Source (dts)を作成


ここも変更なし


手順3 カーネルイメージ作成

適宜、設定を行う

make menuconfig
make kernel_menuconfig
そして
make -j4 V=99
openwrt-ramips-rt305x-fon2405ekai-initramfs-kernel.bin
openwrt-ramips-rt305x-fon2405ekai-squashfs-sysupgrade.bin
が作成される

手順4 ファームアップ

u-bootからのファームアップのあと、sysupgradeを実施
カーネルが4.14.41になったのかー。

メモ(git diff)
git diff origin/master..HEAD > FON2405EKAI.patch

2018年2月17日土曜日

FON2405E(LEDE・Openwrt)でSPI〜1.44インチのグラフィック液晶制御(高速化)


前回作ったものが表示が遅い+メモリリークで落ちるため、いくつか見直しを行った
実際の表示はわからないけど、LCDへの書き出し処理は大体16fpsくらい できているみたい

フリー素材のGIF動画を使わせてもらった「いいね!」
https://www.pakutaso.com/gif/gifpost-135.html



やったことは
・vecterの開放(vector<uint8_t>().swap(tbx);)
・SPIの開放忘れ(free(&spi);)

やってもあまり効果なかったこと
・SPI_IOC_MESSAGEのサイズ 結局1度に送れるのは4096Byte?


差分はここんな感じ

メモ
動画やGIFから連続したBMPを作成する
 convert -coalesce -resize 128x128! cinemagraph.gif +adjoin SL%02d.bmp
色を24bitにする
 mogrify -type truecolor SL*.bmp

参考
http://www.c-lang.net/general43/index.html
http://yoppa.org/blog/5862.html
http://cdecrement.blog.fc2.com/blog-entry-65.html

2018年2月11日日曜日

FON2405E(LEDE・Openwrt)でSPI〜1.44インチのグラフィック液晶制御

SPIの動作確認を兼ねて昔に入手した1.44インチのTFT液晶モジュール(多分Z144SN005/aitendo)を繋いでみた。
本当は、IOエキスパンダ+キャラクタ液晶でさっくり確認するつもりだったのだけど、
ヘマしたので・・・。

今回は先に結果から どーん




Z144SN005の情報
単体   http://www.aitendo.com/product/11546
変換基板 http://www.aitendo.com/product/11663
 グラフィックICはST7735Sらしい
サイズ  128x128

データシートと先人たちのライブラリもありがたく確認させてもらう
データシート https://www.crystalfontz.com/controllers/Sitronix/ST7735S
      v1.3が最新?
ライブラリ https://github.com/adafruit/Adafruit-ST7735-Library
     https://github.com/michal037/driver-ST7735S

接続
LCD側--------FON側
VLED--------5V
RST--------VCC(3.3V)
A0--------GPIO9 データ/コマンド切り替え
SDA--------SDO(Master Output)
SCK--------SCK
VCC--------VCC(3.3V)
CS--------GPIO12(CS#2)
GND--------GND

SPI制御
/dev/spidev0.1をioctlで制御
ネット上にサンプルいっぱいあるから省略

A0(データ/コマンド切り替え)制御
 こちらはGPIOを割り当てる(sysfsというのだろうか)
 https://wiki.openwrt.org/doc/hardware/port.gpio
 https://elinux.org/RPi_GPIO_Code_Samples
 汎用性とかありそうなので・・・。
 ただし、ofstreamを使うとタイミングがずれたり出力されないことがあった
 たぶん書き込み処理が最適化されてキャッシュされたりなんかだろう
 あまり突き詰めたくないので、上記例の通りopen/writeを使う

ST7735S用ライブラリ
 先人たちの偉業を参考に作成
 現状、若干モジュールに特化してしまっている感もある


200円くらいのジャンクFONでついにここまで来れた。
ArduinoとかRaspberryPiとか使えば一瞬なのは知ってる。
これぞ趣味の世界

他にもいろいろ動かしたい!


他のグラフィック液晶・OLED
なんだか行けそうな気がする

I/Oを増やしたい
SPI IOエキスパンダ(MCP23S08-E)を秋月電子で買ったら、動作電圧が5VだったOrz。
しかもSPI系のHi検出レベルが 0.8VDD。 FONは3.3Vなのでた、足りない。
仕方がないので、動作電圧が1.8V〜5.5VのMCP230S09を入手予定。
8-Eの方は、マイコンとか74HC14とかと一緒に使うとするか。
入手でき次第対応する
まだ、SPIでの入力をやっていないからこのタイミングでやってみよう

キャラクタ液晶が・・・
昔にまとめ買いしたキャラクタ液晶が余ってる。
最近のI2Cとかじゃない8bitパラレルインターフェースだよ。
IOエキスパンダ経由で制御してみるか。

SD/MMCカード
SPIでの入出力できるようになってから
多分SPI-MMC的なドライバをカーネルコンフィグ時に選択すれば良いような気がする

FON2405E(LEDE・Openwrt)でSPIデバイス追加

ようやくFONの活用に向けての一歩

フラッシュメモリが接続されているSPIポートを汎用的に使えないか

考えることはみんな同じで、すでにやっている人が居る
というかOpenWrtのHPに書いてある→Deep MMC Mod

・もともとのCS#1にインバーターを繋いでCS#2とするもの
・GPIOを1つ潰してCS#2に割り当てるもの

実現方法
極力ハードを増やしたくなかったので、GPIOにCS#2を割り当てる方法を考えることにした。
CSは負論理なので、起動時からHのままのGPIO12を使うことにした。
ubootもカスタマイズできれば、どのGPIOでも良いんだろうけど。

SPI通信のためにハードは16pinSPIフラッシュ用のランドから線出し
外れないようにホットボンドで固定
黒なので見栄えが少しイマイチ

ソフトは変更点だけを書き出すとこれだけ・・・。
dtsファイル変更、カーネルコンフィグでSPI_SPIDEV追加。
・gpio-ledsからGPIO12に関する定義をコメントアウト
・spi定義部分にcs-gpios追加
・spi定義部分にspidevを追加

ビルド→ファームアップ→デバイス確認

おぉぉぉ
ちなみに、spidevドライバを組み込むとbootログで注意されるみたい
次は動作確認だー

2018年1月23日火曜日

FON2405E(LEDE・Openwrt)のクロス開発環境(Eclipse)構築メモ

Eclipseを使ってエレガント?にクロス開発環境を構築したときの備忘録
基本的にはラズベリーパイのときと同じ

0.前提
 ・Eclipse
 ・FON2405E(LEDE)とSSH接続可能

1. クロスコンパイル環境
 ここにある
 「lede/source/staging_dir/toolchain-mipsel_24kc_gcc-5.5.0_musl/bin/」
 参考→https://wiki.openwrt.org/doc/devel/crosscompile

2.FON2405E(LEDE)側の準備
 
 ・sftpserver(OpenSSH SFTP server)
 ・gdbとgdbserver
 を追加してカーネル作成

3.Eclipse側の設定

 (1)プロジェクト設定
   ・CROSS設定にて

   ・接頭Prefixは「mipsel-openwrt-linux-」
   ・パスは「1.」参照

 (2)デバッグ設定


・Connectionで「New」 選択にて良きに計らう


・GDB debuggerは「mipsel-openwrt-linux-gdb」


あとはラズベリーパイの時と同じで行けた!

2018年1月22日月曜日

FON2405E(LEDE・Openwrt導入後の備忘録)

いろいろとやっていて忘れそうなのでメモ

1.実はGPIO9もある

今まで
・WAN(地球儀マーク?) GPIO12
・LAN GPIO11
・WPS GPIO14
だと思っていたら
WANにはGPIO9も接続されていることがわかった。
なんで今までわからなかったんだろう・・・。



 2.LANポートの割り当て

 LAN1<WAN> 白 IC面を上にして左側
 LAN3<LAN> 黒 IC面を上にして右側
 VLANは以下の通り

2018年1月15日月曜日

2017年を振り返って

もう2018年になって何日も経つけど・・・。

2017年を振り返り、いろいろな事があった。

まずは「Victrola4ZM!
NanoPI NEOにZoneMinderと焦電センサーを導入して
動体検出時にSlackに投稿するというもの。
・ZoneMinder
・焦電センサー
・Slack

次に「3Dプリンタ
 ようやくという気もするけど
 ちょっとしたパーツを作るに重宝している
最近使ってないけど(汗

そしてなんと言っても「FON2405EのLEDE/Openwrtの導入
・フラッシュメモリ交換してのLEDEインストール
・関連してラズベリーパイ+Node.jsでSPI読み書き
今後はSPI通信などを充実させたい

その他
・上半期はそれなりに時間が取れたので、なかなか腰が上がらなかった3Dプリンタにも着手できた
・下半期はNanoPI NEOに出会ってちょっとハマって嬉しかった
・親友に子供が生まれた!よかったよかった
・投資はクリアできなかった。マイナスではなかったけど。

来年(今年)も引き続き家庭も仕事も趣味も充実するといいな。
 目標は
・新しいプラン(目標探し)
・戦略的な投資
・楽しい教育
・「巨人の肩に乗る」
・「ググるよりもググられたい」
・頑張り過ぎないことを頑張る
去年とあまり変わらないか・・・。