新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

KiCad Again

KiCad あまりつかわないうちに V5 になってしまいました。で V4 を削って、V5 にしました。どっかの情報に、そのまま V4 をアンインストールせずに V5 にせよと書いてありました。 それとは別に V4 の情報が残っていると、どうやら V5 で混乱するみたいです。特にフットプリント。うまく、新しい V5 のフットプリントを参照してくれません。いろいろ調べると、KiCad はいろんな情報をユーザの領域に残しているようです。まぁそうですよね。立ち上げた瞬間に直前の回路図出るし。(ここで気がつけばよかったのだ、、、) で、その情報が V5 のフットプリントの読み込みを邪魔しているようなので、思い切って削除してみました。V4 の資産がある場合はなかなかできないでしょう。私はV4 の資産がゼロだったので、削除してみました。 https://make.kosakalab.com/eda/kicad5_fp-lib-table/ ここの情報が役に立ちました。

いろいろ書きました。

meson の使い方

滅多に編集しないけど使う時は使う機能=忘れちゃう機能。 meson による -D による開発切り分け。

まず meson_options.txt を追加する。こんな感じ。

option('engine', type: 'string', value: 'gpu')
option('use_cpu_sim', type: 'boolean', value: false)
option('generate_bitmap_in_gpu', type: 'boolean', value: false)

これで meson の configure で見ることが出来るようになった。 meson debug とか meson release とかつくる。ついでに meson cpu_sim -Duse_cpu_sim=true とかもつくる。

>meson configure cpu_sim
前略

engine                 gpu                                                                             engine
generate_bitmap_in_gpu false         [true, false]                                          generate_bitmap_in_gpu
use_cpu_sim         true                 [true, false]                                          use_cpu_sim

とかで情報を見ることが出来る。設定はあとから meson configure -Dなんとか で変更可能。 これだけだと cpp に反映されない!!ので meson.build に記述を書く。

if get_option('use_cpu_sim') == true
    nvcc_flags += ['-DUSE_CPU_SIM']
    cpp_flags += ['-DUSE_CPU_SIM']
endif

meson の Syntax は Python 風になっているけど Python じゃない。表示するのは print じゃなくて message。

message(cpp_flags)

とかで ninja でコンパイルした時に表示される。

ninja -v -C cpu_sim

-v をつけておくとほんとに -DUSE_CPU_SIM が設定されているかどうかがわかる。ついでにつかってないけど、(今後使いたい)custom_target をつかうと外部コマンドでソースの自動生成!みたいなことが出来る模様。

mesonbuild.com

GPU でエラー

cudaErrorCudartUnloading というエラーが出た。 なんかしらんが Unloading 中だという。 どうも、悪いタイミングで cudaFree を呼んだかららしい。

~MyClass() {
  cudaFree(my_memory);
} 

みたいなことをして、なおかつ

MyClass myclass;

とかグローバル変数に置くと、どうも Cuda の後処理の方が先に走って、cudaFree が後になるらしい。そうなると、たぶん cudaFree はすでに GPU へ送っているプログラムを実行しようする(あるいはその情報を使おうとする)が、すでに unloading されているという話らしい。ということで、

~MyClass() {
  // nothing to do
}
term() {
  cudaFree(my_memory);
}

とかして、main ないで

myclass.term();
exit(0);

と順番通りにすると、、、、うまくいきました!!も~。

地味に gstreamer

まずは gstreamer の情報を集めてみた

GStreamer の情報を集めてみる

あー地味だ。でもってちょっと使ってみる。

GStreamer 事はじめ

せっかく VLC つかっているのに絵がない。 でもって、element つくってみる

GStreamer で element

GObject なので Python からアクセスできたりするのだが、そこまで、まだ記事にしていない。

OpenVPN とか NGINX とか WordPress

なんか毎回同じことをしているような気がする。 とりあえず OpenVPN できた。そして NGINX はともかく Let's Encrypt はだいたい理解した。 certbot が使えれば OK!!

OpenVPN を導入するかも

OpenVPN クライアントを使う

今度は OpenVPN Access Server を使う

Let's Encrypt と連携させる

Let's Encrypt と Nginx と WordPress