KiCAD 5.0 stable install

KiCAD 4.0.Xの操作感に不満を覚え始めたので、乗り換えPCBエディタを探していた。
無料のものだとEagle(古いやつ)
手頃な値段のものだと、
Diptrace, Eagle(Autodeskのほう)、CircuitStudio,
高いやつなら
Altiumとか。。。?
80万は出せない。

とかお金かけようかと悩んでいたタイミングでKiCADのver5がでてしまい
またかなり変更されているようなのでKiCAD v5を試用する。

まずはじめに、KiCAD v4とv5を共存させるためには少し手間がかかるらしい
github.com
ここら辺も勝手にどうにかしてほしい

起動して
まずメインパネルが少しだけUIがカラフルになった?
f:id:katakanan:20180801000818p:plain

回路図エディタのメイン部分はそれほど変わっていない。
ボタンアイコンがカラフルになった。
DRCチェックの虫がちょっとリアルになった?

フットプリントを関連付け。
この画面がv4に比べて重くなっている。
関連付ける対象を選ぶと回路図上でそのシンボルのところへカーソルが移動するのは昔からあったが
その動作を含めて、すべてが遅い。
関連付ける対象を選んでから10秒ぐらいたってから移動する。

ひとまず置いておいて、
PCBレイアウトへ
初回起動で以下のようなものがでた
f:id:katakanan:20180801000944p:plain

どうやらPCBレイアウトエディタは
v4でいうところのOpenGLmodeが標準?
f:id:katakanan:20180801002859p:plain
レガシーモードは昔の表示モードで
モダンツールセットはOpenGL表示モード
アクセラレータA」と「代替C」で何が違うのかはすぐにわからなかった。

f:id:katakanan:20180801003201p:plain
ビアが起き放題になった。
これでGNDパッドからダサい配線を伸ばさなくて済む。

f:id:katakanan:20180801003439p:plain
3D表示は相変わらずだった。
ただしwheelボタンを押し込んだ位置に移動する機能が付いた。
CPUレイトレーシングで表示するモードもあるがクッソ重い。

f:id:katakanan:20180801003701p:plain
きれいではある。

3D関係で最も期待していたものはSTEPファイル出力への対応
f:id:katakanan:20180801003750p:plain
個人的に3DデータフォーマットはSTEPが一番使いとおもう。
これで吐けるとFusion360に簡単にアップロードすることができて機械設計へと移行できる。(まだあまりしたことないが)

f:id:katakanan:20180801004759p:plain
コンポーネントのモデルも一緒に出力されてないはずがないと思うが、何か設定しなければならないのかと思う。
後日確かめる。
あと本当は配線もモデルに表示されていたらかっこよかったが、
DiptraceのほうでもExportされていなかったので、
データ量が多くなってしまうのだろう。残念である。

ここには書いていないが
Eagleのプロジェクトを直接インポートできるようになったとか環境変数をいろいろ設定できるとか
Spiceとの連携が強くなっているとかライブラリエディタの編集性がよくなったとか
PCBをフリップして見れるとかネットリストを介さずに回路図からPCBをアップデートできるとか
フットプリントの3Dモデルにstepファイルが使えるようになったとか言っている動画
hackaday.com

そしてもうすでにKiCAD v6の開発が始まっていた
givetokicad.web.cern.ch

3Dの強化はうれしいが、回路図/PCBエディタ上でのカクカクした操作があまり好きじゃなかったのが変わっていなかったのが残念だった。
(マウスの移動量/拡大はスムーズにおこなれて、シンボル/ワイヤーの移動量やコンポーネントはgridにスナップするとかいうオプションになればいいと思っている)

結局、v4と操作思想はほとんど変わっていないという感じだった。
逆に言うと、v4向けに書かれた本は無駄にならずに相変わらず参考になると思う。

AXI DMA テスト

AXIのDMA動作をメモしておく。

この記事を参考に
Using the AXI DMA in Vivado | FPGA Developer

DMAのパスにILAを接続しておく。
f:id:katakanan:20180722155334p:plain


手順通りにHelloWorldができたら、
HelloWorld_bspのsystem.mssを開いて
axi_dmaのImport Exampleをクリックして
xaxidma_example_simple_pollにチェックを入れてOKを押す。
f:id:katakanan:20180722160551p:plain

HelloWorld_bsp_xaxidma_example_simple_poll_1とかいうプロジェクトができるので、
これがビルドできることを確かめる。

VivadoからBitstreamを書く。

HelloWorld_bsp_xaxidma_example_simple_poll_1/Debug/HelloWorld_bsp_xaxidma_example_simple_poll_1.elfを右クリックして、
Debug as → Launch on Hardware を選択する。
f:id:katakanan:20180722161230p:plain

実行が始まると、mainの先頭で実行が止まっている状態になるので、
ここからステップ実行などができる。

一方で、Vivadoから
Program AND Debug→ Open Hardware Manager→Open Targetとすると、
ILAの画面が開く。
(プログラムをDebugで止めておかないと、ILAの画面が出てきてくれない)

あとは、ILAの画面でDMAのARVALIDなどにトリガーをつけてから、
XSDKで実行を開始すれば、DMAの動作が見れる。

f:id:katakanan:20180722161909p:plain
切断されることもある。

write_hw_ila_data my_hw_ila_data_file.zip [upload_hw_ila_data hw_ila_1]
で波形を保存できる。

display_hw_ila_data [read_hw_ila_data my_hw_ila_data_file.zip]
で波形を再生できる。

Zybo Zynq-7000 ARM/FPGA SoC Trainer Board

Zybo Zynq-7000 ARM/FPGA SoC Trainer Board

FPGAプログラミング大全 Xilinx編

FPGAプログラミング大全 Xilinx編

C++ Rest SDKでtwitter④

http://e-tipsmemo.hatenablog.com/entry/2018/07/14/000000e-tipsmemo.hatenablog.com
次は画像をアップロードする方法を示す。
昔は画像のアップロードとツイートを同時にできるENDPOINTがあったらしいが、今は使えないので
画像をアップロードしてからそれから得られるmedia_idを伴って、ツイートするという流れになる。

また、画像をアップロードするときの画像のデータ形式はバイナリでなければならない。


とりあえずアップロードする方法なので、画像を得るとか読み込む方法は無視して、
前提として、画像データ(jpg/png)のバイナリをvectorに入れたものを引数に取っているとする。


今までのsignature parameterの作り方とは違って、画像のバイナリデータをパラメータに入れない。


bodyに書き込むバイナリデータにはプログラム中の変数名で言うと、
[preData][image binary][postData]
という構成になっている。
preDataのフォーマットはコメントにあるとおりで、boundaryという文字列は適当に10文字以上ぐらいの長さであれば
本当にどんな文字列でもよくて、それを使用する。
postDataもboundaryを用いている。


あとは、headerにboundary文字列を示すものを入れておきつつ。
bodyに先ほど作ったデータを入れて、
httprequestを投げるだけ。


jsonの文字列がかえってくるので、C++ Rest SDKjson::valueクラスに突っ込むと、連想配列でアクセスできるので
ツイートするときに必要なmedia_idを得る。
帰ってくるjsonには型の違いから、media_id_string(ダブルクオーテーションでくくられている)とmedia_id(純粋に数値)があるので使いやすいほうを選べる。

また、
軽く実験したところ、他人のAccess Token Secretを利用してでアップロードされたmedia_idを利用して
つぶやくことはできない。(と思われる)

参考

blog.livedoor.jp

プログラミング言語C++ 第4版

プログラミング言語C++ 第4版

C++ Rest SDKでtwitter③

e-tipsmemo.hatenablog.com
続き。

認証が完了したら、
oauth_tokenはaccess token
oauth_token_secretはaccess token secret
を得ている。

ツイートを行う。


signatureを作るパラメータにはツイートと、画像をアップロードしてmedia_idがあるならばあるならばmedia_idsを入れる。
画像がないときは、meida_idsのパラメータ自体がなくてもよいし、その値が、空白(media_ids="")でもよい。


ツイートとmedia_idsはbodyに入れるので、parameterから消しておく。


bodyにはツイートとmedia_idsを入れる。
media_idは9桁の数字なので、四枚ツイートとするとき以下のようになる。
status=ツイート内容&media_ids=[9桁の数字],[9桁の数字],[9桁の数字],[9桁の数字]

あとは、httprequestするだけ。

ツイートidとかがjsonで帰ってくる。

ツイートidはメンションつたり、ツイート削除するときに必要となる。

プログラミング言語C++ 第4版

プログラミング言語C++ 第4版

投稿記事が100を超えた

記念すべき100記事目は
http://e-tipsmemo.hatenablog.com/entry/2018/07/08/000000e-tipsmemo.hatenablog.com

であった。
3日に1記事書くことを目標にやっているので、100記事増えるのに、だいたい1年ぐらいかかる。

記事のカテゴリは適当につけているけれどもどうしても
ソフトウェアは試行が楽なので記事の数が多くなってしまいがち。

でもハードウェアの記事も書けば結構見られているきがするし、
逆にネットにそういう記事が少ないからこそ書くというのは
ビュー数を増やす戦略になりえるかもしれない。

10000ビュー超えた記事からあまり時間が経ってはいないけれども、
はてな管理画面で見られている記事ランクを以下に示す。
(2018/07/05時点、この時点での訪問数ははてな管理画面によると、12757)

e-tipsmemo.hatenablog.com
訪問数の10%が見ているらしい。
しかしココ最近になってこの記事が急上昇しているきがする(気のせいかも)ので、
クローラー的ななにかが頻繁にきているとも思えないし、
EZ-USB FX2を使うひとはまだまだいるということだなぁと思う。

e-tipsmemo.hatenablog.com
9%の人が見たらしい。
上のEZ-USBの記事と順位が入れ替わることもある。

AMDRyzen CPUは2017年から2019、2020年にかけて最も話題のCPUのひとつなので
とくにZen2のRyzen5 2600Xの記事を発売すぐにかけるのはビュー数上昇に一役買っていると思う。
しかし内容が中途半端なので、そろそろPlexチューナーで環境を設定する記事が必要な気がしている。

e-tipsmemo.hatenablog.com
ココらへんからのビュー数順位は、あまり前と変わらない。
最近WSLもUbuntu18にアップデートしたが何の問題もなしに使えている。
機能的にはまだたりない部分があると思う。
個人的には、GPU supportや
nmapなどのコマンド、さらにext4のマウントとかが使えるようになれば言葉では言い表せないほど便利だと思う。

C++ Rest SDKでtwitter②

e-tipsmemo.hatenablog.com
の続き。

requestTokenが成功すると

oauth_token=xxxxxx&oauth_token_secret=yyyyy&hoge=zzzzz

みたいな文字列が返ってくる。
Request TokenとRequest Token Secretとなんとかid(つかわない)

https://api.twitter.com/oauth/authorize?oauth_token={oauth_token}
にアクセスするとPIN codeを貰えるので、それを次のAccess Tokenを得るときに使う。

requestTokenを得るときと同じ様にパラメータを作っていく。
signatureを作るときにSecret Keyを必要とするが、ここは先程得た、””Request Token Secret(oauth_token_secret)””を使う。


あとは同じ様に ヘッダーに入れてhttprequestを投げるだけ。


成功すれば、URI_queryのような形をしたものが返ってきて、失敗したらAuthentication Failedみたいな文字列を含んだJsonが返ってくる。
例外処理とかめんどくさくなったので、基本成功したと仮定して、
oauth_tokenはaccess token
oauth_token_secretはaccess token secret
ついでにuser idとscreen nameをパースする。

それらのパースに失敗したら認証失敗したことにしている。

ここで得られた、access tokenと、access token secretを保存しておけば次からはこれをつかってツイートなどできるので
毎回の認証操作は不要になる。
なのでこれらは厳密に保管されなければならない。

Twitter API ポケットリファレンス (POCKET REFERENCE)

Twitter API ポケットリファレンス (POCKET REFERENCE)

C++ Rest SDKでtwitter①

TwitterつかうアプリケーションでC++ Rest SDKを利用した。
C++ Rest SDKはexperimentalだがoauth1 oauth2の実装もしてあったが使い方がよくわからなかったので
httprequestを直接つかった。

Twitter認証のステップをメモしておく。

最初にrequestTokenを得る。

CONSUMER_KEYはTwitterのアプリを登録したときにもらうやつで。
ATS(ACCESS_TOKEN_SECRET)は最後にもらうやつなので、この時点では空文字
これらのパラメータはkeyでソートされている必要がある。

署名

C++ REST SDKuri_builderはfalseを引き数に取らないと、appendしたときに勝手に要素をuri_encodeしてくれてしまうので
何回もやると%が%25になる関係で %252525..とかになってTwitterからAuthentication Errorが帰ってきたりする。

署名にはHMAC-SHA1が必要なので以前書いたこのライブラリを利用している。
e-tipsmemo.hatenablog.com

このライブラリはstd::stringしか受け付けないので、windowsUnicodeを設定して開発しているならば変換する必要あがあった。
e-tipsmemo.hatenablog.com


パラメータを利用してAuth文字列を得る。


Authenticationの文字列は "=" と ","でつなげるらしくこれはライブラリにはなかったので素朴に書いた


ライブラリのhttpclientを利用して、POSTで投げる。

responseの文字列は成功すればurl_queryの形で帰ってきて失敗すると、jsonで返ってくるという様なので
取りあえず url_queryだとしてパースして
パースに失敗したらREQUEST_TOKENの値がおそらく空なのでそれで判定するという雑な感じでとりあえず実装した。