follow me

[emo] Hotplugについて書くよ

2020年、Advent Calendar も終盤です。そろそろ誰か Advent Calendar にツッコミいれませんかね?
1年も開発に関わってしまっていたユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。

今日は、Hotplug について。
BOCCO emoのビルド環境のベースとなっている OpenWrt の Hotplug は凄く便利なんです。
Hotplug と聞くと USBデバイス を思い浮かべるかもしれません。
しかし、それだけではなく様々なイベントを扱えるのです。
デバイスのアタッチ/デタッチ、ネットワークインタフェースのリンクアップ/リンクダウン、ボタンのプッシュ/リリース、様々です。
また、コマンドからイベントを発生させる事も出来るので、ユーザプログラムから他のアクションを発生させるのに便利です。

follow me

[emo] aarchとaarch64について書くよ

2020年ももう終わりそうですね、Advent Calendar もかなり進みましたね。
1年も開発に従事してしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。


今日は、aarch と aarch64 について。
まぁ、正確には、lib32 と lib64 について書きたい。
Raspberry Pi 3Bが登場した頃から、aarch64 も一般に広まって、気軽に組込Linuxでも64bit動くんでしょ?と云われる様になった気がしています。
逆に Raspberry Pi 4B から 64bit になったんでしょ?という人も増えましたが。。。(3B、3B+で64bit動くの?みたいな話が尽きない。。。)
ハードウェアが64bitに対応しているかと、OSが64bitに対応しているかと、アプリケーションが64bitに対応しているか、みたいな話をしないといけないのですが、OSを利用しないベアメタルな開発とか、RTOSを利用した様な開発しか、縁がないと、感覚として掴み難いのかもしれない。
逆に上物か触らない人が、下側がどうなのかというのを気にしないで良い様になっているという幸せな状況というのもあり、64bit対応なのかを考えなくて動いてしまう方向に進んでいるのだろうか。。。 (たしかに、Ubuntuつかってて気にする機会あまりないな。。。
follow me

[emo] パーツ変更について書くよ

2020年、Advent Calendar を書いています。クラウドファンディング終わってたらしいですね。
1年も開発に関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。

今日は、パーツ変更で発生する作業 について。

製品を作った際、途中でパーツを変更する事があると思います。
パーツの価格を下げるため、パーツに問題があった、パーツが入手できなくなった、ただなんとなくの思いつき。
思いつきで変えられると大変面倒なので、そのパターンは考えない事にします。

まず、2つに分けます。
  1. パーツの価格を下げるため: 価格を妥協すれば同じハードで製造継続できる
  2. パーツに問題があった、パーツが入手できなくなった: パーツを変えないと製造継続できない
1. については、妥協できるなら、対応するスケジュールは間に合わなくても何とかなります。
2. については、スケジュールが破綻すると、販売できないという状況に直結するので、ビジネスとしては成り立ちません。

今回は、2. の場合に、どんな作業が発生して、いつから動き出せばいいのだろうかを書いていきます。
follow me

[emo] Linux Gadget driverについて書くよ

2020年12月さすがに寒い日が続きます、Advent Calendar を続けています。
何の因果か1年も開発に関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。

今日は、Linux Gadget driver について。
linux-cdc-acm の前に、Linux Gadget driver ってみなさん利用されていますか?

Raspberry Pi Zeroが登場した辺りから、Linux Gadget driver の知名度がぐんと上がった気がしているのですが、Linux Gadget driver 機能をメインに使っている製品以外では、製品で利用しているケースってどれぐらいあるのですかね?
あっ、未来ガジェット研究所の話ではないです。(そんなのはいいですね。
今回はじめて Linux Gadget driver を利用してみたのですが、思った以上に便利ですね。
OpenWrt でも普通にモジュールとして定義されていたのは驚きでしたが。

ハード的には、USBポートを外部に露出させておけば良いというのは本当に最高ですよ。
まぁ、USBホストとゲストに同時にはなれないという説明を何度もしないといけない羽目になりましたがw
follow me

[emo] リビジョンについて書くよ

2020年のクリスマスがあと少しですね、Advent Calendar を書き進めています。
1年も開発に何故か関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。
$ cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='19.07-SNAPSHOT'
DISTRIB_REVISION='r11235-34fabbc7f6'
DISTRIB_TARGET='imx8mm/emo'
DISTRIB_ARCH='aarch64_generic'
DISTRIB_DESCRIPTION='OpenWrt 19.07-SNAPSHOT r11235-34fabbc7f6'
DISTRIB_TAINTS='no-all no-ipv6 glibc'
今日は、リビジョン について。
みなさんは、リビジョン表示とかどうしていますか?
ファームウェアのバージョン管理って結構面倒ですよね。
毎回、番号付けますか?結構面倒ですよね。(それって何の修行ですか?
自動で付きませんかね?
どういう番号なら使いやすいですかね?
そういう話を今回書いていきます。
follow me

[emo] overlayfsについて書くよ

2020年も何故か終わりが近くなってきてしまいました、Advent Calendar を書き続けています。
1年も開発についつい関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。

今日は、overlayfs について。

相変わらず、書く能力低めで申し訳ないです。
follow me

[emo] コミットメッセージについて書くよ

2020年、ただただ Advent Calendar を書いています。
1年もついつい開発に関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。

今日は、コミットメッセージ について。

しょっぱなに、CEOに向けた皮肉なコミットメッセージを出してますが、別にディスってる訳ではないですよ。(このコミット打ったの朝の4時ぐらいでしたっけ?愉快です。

コミットメッセージは、簡潔に必要な事は余さず書け。という考え方ですが、なかなかに難しいですよね。
また、書く人の性格も良くでますよね。
ほんと、やめてくれ。と言いたくなるコミットメッセージもありますよね。
結局、コードを見るしかなんのコミットなのかさえ解らない様な。。。
あと、日付をコミットメッセージに書いてるだけなんて人も居ますよね。(バージョン管理 (github) をバックアップとして使うんじゃないよっ! 「2020-12-12のコミット」「2020-12-13のコミット」みたいな。。。
コミットメッセージが空。。。なんて人も居ますよね。(もぅバージョン管理使うな (github) と言いたくなりますよね。
コミットメッセージが、コミット内容と合ってない、なんて人はあまり居ませんが、たまに居ますよね。(もぅ何をやりたいのか解りません。

と書いてますが、僕が綺麗にコミットメッセージ書けているかというと、そこまで書けてるとは思ってません。
が、綺麗に書きたいと思いながら、綺麗に書こうとはしています。
follow me

[emo] XVF3000とXVF3100について書くよ

2020年も何故か12月を迎えてしまっていたので、Advent Calendar を始めました。
1年も開発に関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。

今日は、XVF3000とXVF3100 について。

emoには、音声認識を組み込む事を前提として開発が始まったので、音声認識をしやすい様にDSPを搭載させています。
emoのハード構成について書いた際にあった XMOS社のDSP XMOS XVF3000 の話ですね。
今回、XVF3000とXVF3100 としているのは、ユカイ工学株式会社が出している XMOS を採用しているもう一つの製品 codama が XVF3100 を採用しているので、何が違うのかという話も入れたいと思います。
まぁ、データシートを読んでいけば解るのですが、「The XVF3100 variant includes the Sensory TrulyHandsfree wakeword. 」 そのままですね。
Sensory社の TrulyHandsfree wakeword の機能を使いたかったら、XVF3100を使えと、おそらく他は同じだという認識です。
codama が売りにしている トリガーワード(ウェイクワード) が使えるというやつですね。
ここで、emo でもトリガーワード(ウェイクワード)を売りにしていると気づき、首を傾げてしまう人がいるかもしれません。
emo が売りにしている トリガーワード(ウェイクワード) は、XMOS (DSP) で実現したものではなく、Linux上のソフトウェアで実現したものなので、emo に関しては XVF3000 で事足りるという事です。

ここから、emo に搭載されている XMOS XVF3000 の話に入っていきます。
follow me

[emo] 表に出てこない社員について書くよ

2020年、Advent Calendar を書いています。13日目という事で、半分終わりましたね。
1年以上も開発についうっかり関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。


今日は、表に出てこない社員 について。
こんな内容を書いておこうかなとか思ってしまったのは、これの影響ですね。
emo開発メンバーインタビューnote#3

まぁ、なんか座談会やるから参加してという話が来た訳ですよ。
今まで表に出てこない社員をやってきたので、目玉飛び出るかと思った訳ですよ。(バセドウ病の話ではないです。
担当している範囲も、目に見える動きをするものではないので、造った処も表に出てこない箇所をやっている訳ですよ。(LED光らせる訳でも、モータ動かす訳でも、音を出す訳でもなく)
(※ユーザから目に見える範囲をやりたいという話でもないです。)
珍しい話もきたもんだと。

業界関わらず、表に出てこない人(社員)って居る訳ですよ。
発表だの、後記だの、秘話だの、記事は沢山あるのだが、出てこない人(社員)って一定数居る訳ですよ。
しかし、今回の記載は、表に出たいという話でも無いというのを念頭に読んで頂きたい。(そんな柄じゃない、人前に出たらキョドってしまうので
follow me

[emo] gpio-exportについて書くよ

2020年も何故か12月もほぼ終わった様なものではないですか、Advent Calendar を書いています。
1年も開発にうっかり関わってしまったユカイ工学株式会社の「BOCCO emo」について赤裸々に書き綴ろう。


今日は、gpio-export (OpenWrtでの実装) について。
gpio-exportって必要ですか?
無くても動かせます。
gpio-exportを実装するかは、動かせるかの問題ではないのです。

動かすだけであれば、こんな感じで操作すれば出来るのですよ。gpio-exportなんて無くても良いのですよ。
$ echo 25 > /sys/class/gpio/export
$ ls -l /sys/class/gpio/gpio25
$ echo "out" > /sys/class/gpio/gpio25/direction
$ cat /sys/class/gpio/gpio25/direction
$ echo 1 > /sys/class/gpio/gpio25/value

これを、gpio-exportを使う事で、/sys/class/gpio/play の様な名前でアクセスする事ができる様になります。
別に番号を指定すれば操作出来るので、何故わざわざ工数を掛けて、gpio-exportの実装を入れるのか。